@@ -138,7 +138,9 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
138138 Scope :: Module ( ..) => true ,
139139 Scope :: MacroUsePrelude => use_prelude || rust_2015,
140140 Scope :: BuiltinAttrs => true ,
141- Scope :: ExternPrelude => use_prelude || module_and_extern_prelude,
141+ Scope :: ExternPreludeCmd | Scope :: ExternPreludeItem => {
142+ use_prelude || module_and_extern_prelude
143+ }
142144 Scope :: ToolPrelude => use_prelude,
143145 Scope :: StdLibPrelude => use_prelude || ns == MacroNS ,
144146 Scope :: BuiltinTypes => true ,
@@ -177,7 +179,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
177179 Scope :: Module ( ..) if module_and_extern_prelude => match ns {
178180 TypeNS => {
179181 ctxt. adjust ( ExpnId :: root ( ) ) ;
180- Scope :: ExternPrelude
182+ Scope :: ExternPreludeItem
181183 }
182184 ValueNS | MacroNS => break ,
183185 } ,
@@ -194,7 +196,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
194196 None => {
195197 ctxt. adjust ( ExpnId :: root ( ) ) ;
196198 match ns {
197- TypeNS => Scope :: ExternPrelude ,
199+ TypeNS => Scope :: ExternPreludeItem ,
198200 ValueNS => Scope :: StdLibPrelude ,
199201 MacroNS => Scope :: MacroUsePrelude ,
200202 }
@@ -203,8 +205,9 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
203205 }
204206 Scope :: MacroUsePrelude => Scope :: StdLibPrelude ,
205207 Scope :: BuiltinAttrs => break , // nowhere else to search
206- Scope :: ExternPrelude if module_and_extern_prelude => break ,
207- Scope :: ExternPrelude => Scope :: ToolPrelude ,
208+ Scope :: ExternPreludeItem => Scope :: ExternPreludeCmd ,
209+ Scope :: ExternPreludeCmd if module_and_extern_prelude => break ,
210+ Scope :: ExternPreludeCmd => Scope :: ToolPrelude ,
208211 Scope :: ToolPrelude => Scope :: StdLibPrelude ,
209212 Scope :: StdLibPrelude => match ns {
210213 TypeNS => Scope :: BuiltinTypes ,
@@ -555,14 +558,20 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
555558 Some ( binding) => Ok ( ( * binding, Flags :: empty ( ) ) ) ,
556559 None => Err ( Determinacy :: Determined ) ,
557560 } ,
558- Scope :: ExternPrelude => {
559- match this. extern_prelude_get ( ident, finalize. is_some ( ) ) {
561+ Scope :: ExternPreludeItem => {
562+ match this. extern_prelude_get_item ( ident, finalize. is_some ( ) ) {
560563 Some ( binding) => Ok ( ( binding, Flags :: empty ( ) ) ) ,
561564 None => Err ( Determinacy :: determined (
562565 this. graph_root . unexpanded_invocations . borrow ( ) . is_empty ( ) ,
563566 ) ) ,
564567 }
565568 }
569+ Scope :: ExternPreludeCmd => {
570+ match this. extern_prelude_get_cmd ( ident, finalize. is_some ( ) ) {
571+ Some ( binding) => Ok ( ( binding, Flags :: empty ( ) ) ) ,
572+ None => Err ( Determinacy :: Determined ) ,
573+ }
574+ }
566575 Scope :: ToolPrelude => match this. registered_tool_bindings . get ( & ident) {
567576 Some ( binding) => Ok ( ( * binding, Flags :: empty ( ) ) ) ,
568577 None => Err ( Determinacy :: Determined ) ,
@@ -812,11 +821,16 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
812821 assert_eq ! ( shadowing, Shadowing :: Unrestricted ) ;
813822 return if ns != TypeNS {
814823 Err ( ( Determined , Weak :: No ) )
815- } else if let Some ( binding) = self . extern_prelude_get ( ident, finalize. is_some ( ) ) {
824+ } else if let Some ( binding) =
825+ self . extern_prelude_get_item ( ident, finalize. is_some ( ) )
826+ {
816827 Ok ( binding)
817828 } else if !self . graph_root . unexpanded_invocations . borrow ( ) . is_empty ( ) {
818829 // Macro-expanded `extern crate` items can add names to extern prelude.
819830 Err ( ( Undetermined , Weak :: No ) )
831+ } else if let Some ( binding) = self . extern_prelude_get_cmd ( ident, finalize. is_some ( ) )
832+ {
833+ Ok ( binding)
820834 } else {
821835 Err ( ( Determined , Weak :: No ) )
822836 } ;
0 commit comments