@@ -39,13 +39,15 @@ use rustc_errors::{
3939 Applicability , DiagnosticBuilder , DiagnosticMessage , ErrorGuaranteed , SubdiagnosticMessage ,
4040} ;
4141use rustc_expand:: base:: { DeriveResolutions , SyntaxExtension , SyntaxExtensionKind } ;
42+ use rustc_feature:: BUILTIN_ATTRIBUTES ;
4243use rustc_fluent_macro:: fluent_messages;
4344use rustc_hir:: def:: Namespace :: { self , * } ;
45+ use rustc_hir:: def:: NonMacroAttrKind ;
4446use rustc_hir:: def:: { self , CtorOf , DefKind , DocLinkResMap , LifetimeRes , PartialRes , PerNS } ;
4547use rustc_hir:: def_id:: { CrateNum , DefId , LocalDefId , LocalDefIdMap , LocalDefIdSet } ;
4648use rustc_hir:: def_id:: { CRATE_DEF_ID , LOCAL_CRATE } ;
4749use rustc_hir:: definitions:: DefPathData ;
48- use rustc_hir:: TraitCandidate ;
50+ use rustc_hir:: { PrimTy , TraitCandidate } ;
4951use rustc_index:: IndexVec ;
5052use rustc_metadata:: creader:: { CStore , CrateLoader } ;
5153use rustc_middle:: metadata:: ModChild ;
@@ -996,6 +998,8 @@ pub struct Resolver<'a, 'tcx> {
996998
997999 arenas : & ' a ResolverArenas < ' a > ,
9981000 dummy_binding : NameBinding < ' a > ,
1001+ builtin_types_bindings : FxHashMap < Symbol , NameBinding < ' a > > ,
1002+ builtin_attrs_bindings : FxHashMap < Symbol , NameBinding < ' a > > ,
9991003
10001004 used_extern_options : FxHashSet < Symbol > ,
10011005 macro_names : FxHashSet < Ident > ,
@@ -1283,6 +1287,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
12831287 let registered_tools = tcx. registered_tools ( ( ) ) ;
12841288
12851289 let features = tcx. features ( ) ;
1290+ let pub_vis = ty:: Visibility :: < DefId > :: Public ;
12861291
12871292 let mut resolver = Resolver {
12881293 tcx,
@@ -1330,14 +1335,24 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
13301335 macro_expanded_macro_export_errors : BTreeSet :: new ( ) ,
13311336
13321337 arenas,
1333- dummy_binding : arenas. alloc_name_binding ( NameBindingData {
1334- kind : NameBindingKind :: Res ( Res :: Err ) ,
1335- ambiguity : None ,
1336- warn_ambiguity : false ,
1337- expansion : LocalExpnId :: ROOT ,
1338- span : DUMMY_SP ,
1339- vis : ty:: Visibility :: Public ,
1340- } ) ,
1338+ dummy_binding : ( Res :: Err , pub_vis, DUMMY_SP , LocalExpnId :: ROOT ) . to_name_binding ( arenas) ,
1339+ builtin_types_bindings : PrimTy :: ALL
1340+ . iter ( )
1341+ . map ( |prim_ty| {
1342+ let binding = ( Res :: PrimTy ( * prim_ty) , pub_vis, DUMMY_SP , LocalExpnId :: ROOT )
1343+ . to_name_binding ( arenas) ;
1344+ ( prim_ty. name ( ) , binding)
1345+ } )
1346+ . collect ( ) ,
1347+ builtin_attrs_bindings : BUILTIN_ATTRIBUTES
1348+ . iter ( )
1349+ . map ( |builtin_attr| {
1350+ let res = Res :: NonMacroAttr ( NonMacroAttrKind :: Builtin ( builtin_attr. name ) ) ;
1351+ let binding =
1352+ ( res, pub_vis, DUMMY_SP , LocalExpnId :: ROOT ) . to_name_binding ( arenas) ;
1353+ ( builtin_attr. name , binding)
1354+ } )
1355+ . collect ( ) ,
13411356
13421357 used_extern_options : Default :: default ( ) ,
13431358 macro_names : FxHashSet :: default ( ) ,
0 commit comments