File tree Expand file tree Collapse file tree 8 files changed +341
-0
lines changed Expand file tree Collapse file tree 8 files changed +341
-0
lines changed Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ struct Struct { }
12+
13+ type Alias = Struct ;
14+
15+ impl Struct {
16+ // Test using an alias for `Struct`:
17+
18+ async fn alias ( self : Alias , f : & u32 ) -> & u32 {
19+ f
20+ }
21+
22+ async fn box_Alias ( self : Box < Alias > , f : & u32 ) -> & u32 {
23+ f
24+ }
25+
26+ async fn rc_Alias ( self : Rc < Alias > , f : & u32 ) -> & u32 {
27+ f
28+ }
29+
30+ async fn box_box_Alias ( self : Box < Box < Alias > > , f : & u32 ) -> & u32 {
31+ f
32+ }
33+
34+ async fn box_rc_Alias ( self : Box < Rc < Alias > > , f : & u32 ) -> & u32 {
35+ f
36+ }
37+ }
38+
39+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ trait Trait {
12+ type AssocType ;
13+ }
14+
15+ struct Struct { }
16+
17+ impl Trait for Struct {
18+ type AssocType = Self ;
19+ }
20+
21+ impl Struct {
22+ async fn assoc ( self : <Struct as Trait >:: AssocType , f : & u32 ) -> & u32 {
23+ f
24+ }
25+
26+ async fn box_AssocType ( self : Box < <Struct as Trait >:: AssocType > , f : & u32 ) -> & u32 {
27+ f
28+ }
29+
30+ async fn rc_AssocType ( self : Rc < <Struct as Trait >:: AssocType > , f : & u32 ) -> & u32 {
31+ f
32+ }
33+
34+ async fn box_box_AssocType ( self : Box < Box < <Struct as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
35+ f
36+ }
37+
38+ async fn box_rc_AssocType ( self : Box < Rc < <Struct as Trait >:: AssocType > > , f : & u32 ) -> & u32 {
39+ f
40+ }
41+ }
42+
43+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ struct Struct < ' a > { x : & ' a u32 }
12+
13+ type Alias < ' a > = Struct < ' a > ;
14+
15+ impl < ' a > Alias < ' a > {
16+ async fn take_self ( self , f : & u32 ) -> & u32 {
17+ f
18+ }
19+
20+ async fn take_Alias ( self : Alias < ' a > , f : & u32 ) -> & u32 {
21+ f
22+ }
23+
24+ async fn take_Box_Alias ( self : Box < Alias < ' a > > , f : & u32 ) -> & u32 {
25+ f
26+ }
27+
28+ async fn take_Box_Box_Alias ( self : Box < Box < Alias < ' a > > > , f : & u32 ) -> & u32 {
29+ f
30+ }
31+
32+ async fn take_Rc_Alias ( self : Rc < Alias < ' a > > , f : & u32 ) -> & u32 {
33+ f
34+ }
35+
36+ async fn take_Box_Rc_Alias ( self : Box < Rc < Alias < ' a > > > , f : & u32 ) -> & u32 {
37+ f
38+ }
39+ }
40+
41+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ trait Trait {
12+ type AssocType ;
13+ }
14+
15+ struct Struct < ' a > { x : & ' a u32 }
16+
17+ impl < ' a > Trait for Struct < ' a > {
18+ type AssocType = Self ;
19+ }
20+
21+ impl < ' a > Struct < ' a > {
22+ async fn take_self ( self , f : & u32 ) -> & u32 {
23+ f
24+ }
25+
26+ async fn take_AssocType ( self : <Struct < ' a > as Trait >:: AssocType , f : & u32 ) -> & u32 {
27+ f
28+ }
29+
30+ async fn take_Box_AssocType ( self : Box < <Struct < ' a > as Trait >:: AssocType > , f : & u32 ) -> & u32 {
31+ f
32+ }
33+
34+ async fn take_Box_Box_AssocType (
35+ self : Box < Box < <Struct < ' a > as Trait >:: AssocType > > ,
36+ f : & u32
37+ ) -> & u32 {
38+ f
39+ }
40+
41+ async fn take_Rc_AssocType ( self : Rc < <Struct < ' a > as Trait >:: AssocType > , f : & u32 ) -> & u32 {
42+ f
43+ }
44+
45+ async fn take_Box_Rc_AssocType (
46+ self : Box < Rc < <Struct < ' a > as Trait >:: AssocType > > ,
47+ f : & u32
48+ ) -> & u32 {
49+ f
50+ }
51+ }
52+
53+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: pin:: Pin ;
10+ use std:: rc:: Rc ;
11+
12+ struct Struct < ' a > {
13+ x : & ' a u32
14+ }
15+
16+ impl < ' a > Struct < ' a > {
17+ async fn take_self ( self , f : & u32 ) -> & u32 {
18+ f
19+ }
20+
21+ async fn take_Self ( self : Self , f : & u32 ) -> & u32 {
22+ f
23+ }
24+
25+ async fn take_Box_Self ( self : Box < Self > , f : & u32 ) -> & u32 {
26+ f
27+ }
28+
29+ async fn take_Box_Box_Self ( self : Box < Box < Self > > , f : & u32 ) -> & u32 {
30+ f
31+ }
32+
33+ async fn take_Rc_Self ( self : Rc < Self > , f : & u32 ) -> & u32 {
34+ f
35+ }
36+
37+ async fn take_Box_Rc_Self ( self : Box < Rc < Self > > , f : & u32 ) -> & u32 {
38+ f
39+ }
40+
41+ // N/A
42+ //fn take_Pin_Self(self: Pin<Self>, f: &u32) -> &u32 {
43+ // f
44+ //}
45+
46+ // N/A
47+ //fn take_Box_Pin_Self(self: Box<Pin<Self>>, f: &u32) -> &u32 {
48+ // f
49+ //}
50+ }
51+
52+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ struct Struct < ' a > { x : & ' a u32 }
12+
13+ impl < ' a > Struct < ' a > {
14+ async fn take_self ( self , f : & u32 ) -> & u32 {
15+ f
16+ }
17+
18+ async fn take_Struct ( self : Struct < ' a > , f : & u32 ) -> & u32 {
19+ f
20+ }
21+
22+ async fn take_Box_Struct ( self : Box < Struct < ' a > > , f : & u32 ) -> & u32 {
23+ f
24+ }
25+
26+ async fn take_Box_Box_Struct ( self : Box < Box < Struct < ' a > > > , f : & u32 ) -> & u32 {
27+ f
28+ }
29+
30+ async fn take_Rc_Struct ( self : Rc < Struct < ' a > > , f : & u32 ) -> & u32 {
31+ f
32+ }
33+
34+ async fn take_Box_Rc_Struct ( self : Box < Rc < Struct < ' a > > > , f : & u32 ) -> & u32 {
35+ f
36+ }
37+ }
38+
39+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ struct Struct { }
12+
13+ impl Struct {
14+ async fn take_self ( self , f : & u32 ) -> & u32 {
15+ f
16+ }
17+
18+ async fn take_Self ( self : Self , f : & u32 ) -> & u32 {
19+ f
20+ }
21+
22+ async fn take_Box_Self ( self : Box < Self > , f : & u32 ) -> & u32 {
23+ f
24+ }
25+
26+ async fn take_Box_Box_Self ( self : Box < Box < Self > > , f : & u32 ) -> & u32 {
27+ f
28+ }
29+
30+ async fn take_Rc_Self ( self : Rc < Self > , f : & u32 ) -> & u32 {
31+ f
32+ }
33+
34+ async fn take_Box_Rc_Self ( self : Box < Rc < Self > > , f : & u32 ) -> & u32 {
35+ f
36+ }
37+ }
38+
39+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // check-pass
2+ // edition:2018
3+
4+ #![ feature( async_await) ]
5+
6+ #![ feature( arbitrary_self_types) ]
7+ #![ allow( non_snake_case) ]
8+
9+ use std:: rc:: Rc ;
10+
11+ struct Struct { }
12+
13+ impl Struct {
14+ async fn ref_Struct ( self : Struct , f : & u32 ) -> & u32 {
15+ f
16+ }
17+
18+ async fn box_Struct ( self : Box < Struct > , f : & u32 ) -> & u32 {
19+ f
20+ }
21+
22+ async fn rc_Struct ( self : Rc < Struct > , f : & u32 ) -> & u32 {
23+ f
24+ }
25+
26+ async fn box_box_Struct ( self : Box < Box < Struct > > , f : & u32 ) -> & u32 {
27+ f
28+ }
29+
30+ async fn box_rc_Struct ( self : Box < Rc < Struct > > , f : & u32 ) -> & u32 {
31+ f
32+ }
33+ }
34+
35+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments