File tree Expand file tree Collapse file tree 3 files changed +37
-1
lines changed 
compiler/rustc_typeck/src Expand file tree Collapse file tree 3 files changed +37
-1
lines changed Original file line number Diff line number Diff line change 11use  crate :: collect:: ItemCtxt ; 
22use  rustc_hir as  hir; 
33use  rustc_hir:: intravisit:: { self ,  Visitor } ; 
4- use  rustc_hir:: HirId ; 
4+ use  rustc_hir:: { ForeignItem ,   ForeignItemKind ,   HirId } ; 
55use  rustc_infer:: infer:: TyCtxtInferExt ; 
66use  rustc_infer:: traits:: TraitEngine ; 
77use  rustc_infer:: traits:: { ObligationCause ,  WellFormedLoc } ; 
@@ -141,6 +141,9 @@ fn diagnostic_hir_wf_check<'tcx>(
141141                ref  item => bug ! ( "Unexpected item {:?}" ,  item) , 
142142            } , 
143143            hir:: Node :: Field ( field)  => Some ( field. ty ) , 
144+             hir:: Node :: ForeignItem ( ForeignItem  { 
145+                 kind :  ForeignItemKind :: Static ( ty,  _) ,  ..
146+             } )  => Some ( * ty) , 
144147            ref  node => bug ! ( "Unexpected node {:?}" ,  node) , 
145148        } , 
146149        WellFormedLoc :: Param  {  function :  _,  param_idx }  => { 
Original file line number Diff line number Diff line change 1+ // Regression test for the ICE described in #95665. 
2+ // Ensure that the expected error is output (and thus that there is no ICE) 
3+ 
4+ pub  trait  Trait :  { } 
5+ 
6+ pub  struct  Struct < T :  Trait >  { 
7+     member :  T , 
8+ } 
9+ 
10+ // uncomment and bug goes away 
11+ // impl Trait for u8 {} 
12+ 
13+ extern  "C"  { 
14+     static  VAR :  Struct < u8 > ; 
15+                 //~^ 14:17: 14:27: the trait bound `u8: Trait` is not satisfied [E0277] 
16+ } 
17+ 
18+ fn  main ( )  { } 
Original file line number Diff line number Diff line change 1+ error[E0277]: the trait bound `u8: Trait` is not satisfied
2+   --> $DIR/issue-95665.rs:14:17
3+    |
4+ LL |     static VAR: Struct<u8>;
5+    |                 ^^^^^^^^^^ the trait `Trait` is not implemented for `u8`
6+    |
7+ note: required by a bound in `Struct`
8+   --> $DIR/issue-95665.rs:6:22
9+    |
10+ LL | pub struct Struct<T: Trait> {
11+    |                      ^^^^^ required by this bound in `Struct`
12+ 
13+ error: aborting due to previous error
14+ 
15+ For more information about this error, try `rustc --explain E0277`.
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments