@@ -666,17 +666,15 @@ fn convert_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
666666 tcx. ensure ( ) . fn_sig ( def_id) ;
667667 }
668668
669- hir:: TraitItemKind :: Const ( .. , Some ( _ ) ) => {
669+ hir:: TraitItemKind :: Const ( ty , body_id ) => {
670670 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" ) ;
680678 }
681679 }
682680
@@ -721,7 +719,14 @@ fn convert_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
721719
722720 placeholder_type_error ( tcx, None , visitor. 0 , false , None , "associated type" ) ;
723721 }
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+ }
725730 }
726731}
727732
0 commit comments