Arbitrary self types v2: generics test. · rust-lang/rust@718b4ca (original) (raw)

``

1

`` +

error[E0801]: invalid generic self parameter type: &R

``

``

2

`+

--> $DIR/arbitrary_self_types_generic_receiver.rs:26:53

`

``

3

`+

|

`

``

4

`+

LL | fn a<R: core::ops::Receiver<Target=Self>>(self: &R) {}

`

``

5

`+

| ^^

`

``

6

`+

|

`

``

7

`` +

= note: type of self must not be a method generic parameter type

``

``

8

`` +

= help: use a concrete type such as self, &self, &mut self, self: Box<Self>, self: Rc<Self>, self: Arc<Self>, or self: Pin<P> (where P is one of the previous types except Self)

``

``

9

+

``

10

`` +

error[E0801]: invalid generic self parameter type: &mut R

``

``

11

`+

--> $DIR/arbitrary_self_types_generic_receiver.rs:28:53

`

``

12

`+

|

`

``

13

`+

LL | fn b<R: core::ops::Receiver<Target=Self>>(self: &mut R) {}

`

``

14

`+

| ^^^^^^

`

``

15

`+

|

`

``

16

`` +

= note: type of self must not be a method generic parameter type

``

``

17

`` +

= help: use a concrete type such as self, &self, &mut self, self: Box<Self>, self: Rc<Self>, self: Arc<Self>, or self: Pin<P> (where P is one of the previous types except Self)

``

``

18

+

``

19

`` +

error[E0801]: invalid generic self parameter type: R

``

``

20

`+

--> $DIR/arbitrary_self_types_generic_receiver.rs:30:53

`

``

21

`+

|

`

``

22

`+

LL | fn c<R: core::ops::Receiver<Target=Self>>(self: R) {}

`

``

23

`+

| ^

`

``

24

`+

|

`

``

25

`` +

= note: type of self must not be a method generic parameter type

``

``

26

`` +

= help: use a concrete type such as self, &self, &mut self, self: Box<Self>, self: Rc<Self>, self: Arc<Self>, or self: Pin<P> (where P is one of the previous types except Self)

``

``

27

+

``

28

`` +

error[E0801]: invalid generic self parameter type: R

``

``

29

`+

--> $DIR/arbitrary_self_types_generic_receiver.rs:32:45

`

``

30

`+

|

`

``

31

`+

LL | fn d<R: SomePtr<SomeTarget=Self>>(self: R) {}

`

``

32

`+

| ^

`

``

33

`+

|

`

``

34

`` +

= note: type of self must not be a method generic parameter type

``

``

35

`` +

= help: use a concrete type such as self, &self, &mut self, self: Box<Self>, self: Rc<Self>, self: Arc<Self>, or self: Pin<P> (where P is one of the previous types except Self)

``

``

36

+

``

37

`` +

error[E0801]: invalid generic self parameter type: impl SomePtr<SomeTarget = Self>

``

``

38

`+

--> $DIR/arbitrary_self_types_generic_receiver.rs:34:16

`

``

39

`+

|

`

``

40

`+

LL | fn e(self: impl SomePtr<SomeTarget=Self>) {}

`

``

41

`+

| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

`

``

42

`+

|

`

``

43

`` +

= note: type of self must not be a method generic parameter type

``

``

44

`` +

= help: use a concrete type such as self, &self, &mut self, self: Box<Self>, self: Rc<Self>, self: Arc<Self>, or self: Pin<P> (where P is one of the previous types except Self)

``

``

45

+

``

46

`+

error: aborting due to 5 previous errors

`

``

47

+

``

48

`` +

For more information about this error, try rustc --explain E0801.

``