File tree 3 files changed +124
-0
lines changed
3 files changed +124
-0
lines changed Original file line number Diff line number Diff line change
1
+ // check-pass
2
+
3
+ #![ feature( arbitrary_self_types) ]
4
+ #![ allow( non_snake_case) ]
5
+
6
+ use std:: rc:: Rc ;
7
+
8
+ trait Trait {
9
+ type AssocType ;
10
+ }
11
+
12
+ struct Struct { }
13
+
14
+ impl Trait for Struct {
15
+ type AssocType = Self ;
16
+ }
17
+
18
+ impl Struct {
19
+ fn assoc ( self : <Struct as Trait >:: AssocType , f : & u32 ) -> & u32 {
20
+ f
21
+ }
22
+
23
+ fn box_AssocType ( self : Box < <Struct as Trait >:: AssocType > , f : & u32 ) -> & u32 {
24
+ f
25
+ }
26
+
27
+ fn rc_AssocType ( self : Rc < <Struct as Trait >:: AssocType > , f : & u32 ) -> & u32 {
28
+ f
29
+ }
30
+
31
+ fn box_box_AssocType ( self : Box < Box < <Struct as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
32
+ f
33
+ }
34
+
35
+ fn box_rc_AssocType ( self : Box < Rc < <Struct as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
36
+ f
37
+ }
38
+ }
39
+
40
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // check-pass
2
+
3
+ #![ feature( arbitrary_self_types) ]
4
+ #![ allow( non_snake_case) ]
5
+
6
+ use std:: rc:: Rc ;
7
+
8
+ trait Trait {
9
+ type AssocType ;
10
+ }
11
+
12
+ struct Struct < ' a > { x : & ' a u32 }
13
+
14
+ impl < ' a > Trait for Struct < ' a > {
15
+ type AssocType = Self ;
16
+ }
17
+
18
+ impl < ' a > Struct < ' a > {
19
+ fn take_self ( self , f : & u32 ) -> & u32 {
20
+ f
21
+ }
22
+
23
+ fn take_AssocType ( self : <Struct < ' a > as Trait >:: AssocType , f : & u32 ) -> & u32 {
24
+ f
25
+ }
26
+
27
+ fn take_Box_AssocType ( self : Box < <Struct < ' a > as Trait >:: AssocType > , f : & u32 ) -> & u32 {
28
+ f
29
+ }
30
+
31
+ fn take_Box_Box_AssocType ( self : Box < Box < <Struct < ' a > as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
32
+ f
33
+ }
34
+
35
+ fn take_Rc_AssocType ( self : Rc < <Struct < ' a > as Trait >:: AssocType > , f : & u32 ) -> & u32 {
36
+ f
37
+ }
38
+
39
+ fn take_Box_Rc_AssocType ( self : Box < Rc < <Struct < ' a > as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
40
+ f
41
+ }
42
+ }
43
+
44
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // check-pass
2
+
3
+ #![ feature( arbitrary_self_types) ]
4
+ #![ allow( non_snake_case) ]
5
+
6
+ use std:: pin:: Pin ;
7
+
8
+ trait Trait {
9
+ type AssocType ;
10
+ }
11
+
12
+ struct Struct { }
13
+
14
+ impl Trait for Struct {
15
+ type AssocType = Self ;
16
+ }
17
+
18
+ impl Struct {
19
+ fn ref_AssocType ( self : & <Struct as Trait >:: AssocType , f : & u32 ) -> & u32 {
20
+ f
21
+ }
22
+
23
+ fn box_ref_AssocType ( self : Box < & <Struct as Trait >:: AssocType > , f : & u32 ) -> & u32 {
24
+ f
25
+ }
26
+
27
+ fn pin_ref_AssocType ( self : Pin < & <Struct as Trait >:: AssocType > , f : & u32 ) -> & u32 {
28
+ f
29
+ }
30
+
31
+ fn box_box_ref_AssocType ( self : Box < Box < & <Struct as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
32
+ f
33
+ }
34
+
35
+ fn box_pin_ref_AssocType ( self : Box < Pin < & <Struct as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
36
+ f
37
+ }
38
+ }
39
+
40
+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments