@@ -666,17 +666,15 @@ fn convert_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
666
666
tcx. ensure ( ) . fn_sig ( def_id) ;
667
667
}
668
668
669
- hir:: TraitItemKind :: Const ( .. , Some ( _ ) ) => {
669
+ hir:: TraitItemKind :: Const ( ty , body_id ) => {
670
670
tcx. ensure ( ) . type_of ( def_id) ;
671
- }
672
-
673
- hir:: TraitItemKind :: Const ( hir_ty, _) => {
674
- tcx. ensure ( ) . type_of ( def_id) ;
675
- // Account for `const C: _;`.
676
- let mut visitor = HirPlaceholderCollector :: default ( ) ;
677
- visitor. visit_trait_item ( trait_item) ;
678
- if !tcx. sess . diagnostic ( ) . has_stashed_diagnostic ( hir_ty. span , StashKey :: ItemNoType ) {
679
- placeholder_type_error ( tcx, None , visitor. 0 , false , None , "constant" ) ;
671
+ if !tcx. sess . diagnostic ( ) . has_stashed_diagnostic ( ty. span , StashKey :: ItemNoType )
672
+ && !( is_suggestable_infer_ty ( ty) && body_id. is_some ( ) )
673
+ {
674
+ // Account for `const C: _;`.
675
+ let mut visitor = HirPlaceholderCollector :: default ( ) ;
676
+ visitor. visit_trait_item ( trait_item) ;
677
+ placeholder_type_error ( tcx, None , visitor. 0 , false , None , "associated constant" ) ;
680
678
}
681
679
}
682
680
@@ -721,7 +719,14 @@ fn convert_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
721
719
722
720
placeholder_type_error ( tcx, None , visitor. 0 , false , None , "associated type" ) ;
723
721
}
724
- hir:: ImplItemKind :: Const ( ..) => { }
722
+ hir:: ImplItemKind :: Const ( ty, _) => {
723
+ // Account for `const T: _ = ..;`
724
+ if !is_suggestable_infer_ty ( ty) {
725
+ let mut visitor = HirPlaceholderCollector :: default ( ) ;
726
+ visitor. visit_impl_item ( impl_item) ;
727
+ placeholder_type_error ( tcx, None , visitor. 0 , false , None , "associated constant" ) ;
728
+ }
729
+ }
725
730
}
726
731
}
727
732
0 commit comments