File tree Expand file tree Collapse file tree 3 files changed +36
-0
lines changed 
compiler/rustc_middle/src/ty Expand file tree Collapse file tree 3 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -338,6 +338,10 @@ impl<'tcx> SizeSkeleton<'tcx> {
338338                        debug_assert ! ( tail. has_non_region_param( ) ) ; 
339339                        Ok ( SizeSkeleton :: Pointer  {  non_zero,  tail :  tcx. erase_regions ( tail)  } ) 
340340                    } 
341+                     ty:: Error ( guar)  => { 
342+                         // Fixes ICE #124031 
343+                         return  Err ( tcx. arena . alloc ( LayoutError :: ReferencesError ( * guar) ) ) ; 
344+                     } 
341345                    _ => bug ! ( 
342346                        "SizeSkeleton::compute({ty}): layout errored ({err:?}), yet \  
343347, 
Original file line number Diff line number Diff line change 1+ // Regression test for issue #124031 
2+ // Checks that we don't ICE when the tail 
3+ // of an ADT has a type error 
4+ 
5+ trait  Trait  { 
6+     type  RefTarget ; 
7+ } 
8+ 
9+ impl  Trait  for  ( )  { } 
10+ //~^ ERROR not all trait items implemented, missing: `RefTarget` 
11+ 
12+ struct  Other  { 
13+     data :  <( )  as  Trait >:: RefTarget , 
14+ } 
15+ 
16+ fn  main ( )  { 
17+     unsafe  { 
18+         std:: mem:: transmute :: < Option < ( ) > ,  Option < & Other > > ( None ) ; 
19+     } 
20+ } 
Original file line number Diff line number Diff line change 1+ error[E0046]: not all trait items implemented, missing: `RefTarget`
2+   --> $DIR/ice-type-error-in-tail-124031.rs:9:1
3+    |
4+ LL |     type RefTarget;
5+    |     -------------- `RefTarget` from trait
6+ ...
7+ LL | impl Trait for () {}
8+    | ^^^^^^^^^^^^^^^^^ missing `RefTarget` in implementation
9+ 
10+ error: aborting due to 1 previous error
11+ 
12+ For more information about this error, try `rustc --explain E0046`.
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments