File tree Expand file tree Collapse file tree 3 files changed +124
-0
lines changed Expand file tree Collapse file tree 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