@@ -109,40 +109,26 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
109109 let ( ns, macro_kind) = match scope_set {
110110 ScopeSet :: All ( ns)
111111 | ScopeSet :: Module ( ns, _)
112- | ScopeSet :: ModuleAndExternPrelude ( ns, _)
113- | ScopeSet :: NamespacedCrate ( ns, _) => ( ns, None ) ,
112+ | ScopeSet :: ModuleAndExternPrelude ( ns, _) => ( ns, None ) ,
114113 ScopeSet :: ExternPrelude => ( TypeNS , None ) ,
115114 ScopeSet :: Macro ( macro_kind) => ( MacroNS , Some ( macro_kind) ) ,
116115 } ;
117116 let module = match scope_set {
118117 // Start with the specified module.
119- ScopeSet :: Module ( _, module) | ScopeSet :: ModuleAndExternPrelude ( _, module) => {
120- Some ( module)
121- }
122- ScopeSet :: NamespacedCrate ( _, _) => None ,
118+ ScopeSet :: Module ( _, module) | ScopeSet :: ModuleAndExternPrelude ( _, module) => module,
123119 // Jump out of trait or enum modules, they do not act as scopes.
124- _ => Some ( parent_scope. module . nearest_item_scope ( ) ) ,
120+ _ => parent_scope. module . nearest_item_scope ( ) ,
125121 } ;
126122 let module_only = matches ! ( scope_set, ScopeSet :: Module ( ..) ) ;
127123 let module_and_extern_prelude = matches ! ( scope_set, ScopeSet :: ModuleAndExternPrelude ( ..) ) ;
128124 let extern_prelude = matches ! ( scope_set, ScopeSet :: ExternPrelude ) ;
129- let namespace_crate_only = matches ! ( scope_set, ScopeSet :: NamespacedCrate ( ..) ) ;
130125 let mut scope = match ns {
131- _ if module_only || module_and_extern_prelude => {
132- Scope :: ModuleNonGlobs ( module. unwrap ( ) , None )
133- }
134- _ if namespace_crate_only => {
135- let ScopeSet :: NamespacedCrate ( _, root_name) = scope_set else {
136- unreachable ! ( ) ;
137- } ;
138-
139- Scope :: NamespacedCrates ( root_name)
140- }
126+ _ if module_only || module_and_extern_prelude => Scope :: ModuleNonGlobs ( module, None ) ,
141127 _ if extern_prelude => Scope :: ExternPreludeItems ,
142- TypeNS | ValueNS => Scope :: ModuleNonGlobs ( module. unwrap ( ) , None ) ,
128+ TypeNS | ValueNS => Scope :: ModuleNonGlobs ( module, None ) ,
143129 MacroNS => Scope :: DeriveHelpers ( parent_scope. expansion ) ,
144130 } ;
145- let mut use_prelude = module. map ( |m| !m . no_implicit_prelude ) . unwrap_or_else ( || true ) ;
131+ let mut use_prelude = ! module. no_implicit_prelude ;
146132
147133 loop {
148134 let visit = match scope {
@@ -165,9 +151,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
165151 }
166152 true
167153 }
168- Scope :: ModuleNonGlobs ( ..)
169- | Scope :: ModuleGlobs ( ..)
170- | Scope :: NamespacedCrates ( ..) => true ,
154+ Scope :: ModuleNonGlobs ( ..) | Scope :: ModuleGlobs ( ..) => true ,
171155 Scope :: MacroUsePrelude => use_prelude || orig_ident_span. is_rust_2015 ( ) ,
172156 Scope :: BuiltinAttrs => true ,
173157 Scope :: ExternPreludeItems | Scope :: ExternPreludeFlags => {
@@ -208,7 +192,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
208192 MacroRulesScope :: Invocation ( invoc_id) => {
209193 Scope :: MacroRules ( self . invocation_parent_scopes [ & invoc_id] . macro_rules )
210194 }
211- MacroRulesScope :: Empty => Scope :: ModuleNonGlobs ( module. unwrap ( ) , None ) ,
195+ MacroRulesScope :: Empty => Scope :: ModuleNonGlobs ( module, None ) ,
212196 } ,
213197 Scope :: ModuleNonGlobs ( module, lint_id) => Scope :: ModuleGlobs ( module, lint_id) ,
214198 Scope :: ModuleGlobs ( ..) if module_only => break ,
@@ -235,10 +219,6 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
235219 }
236220 }
237221 }
238- Scope :: NamespacedCrates ( ..) => {
239- assert ! ( namespace_crate_only) ;
240- break ;
241- }
242222 Scope :: MacroUsePrelude => Scope :: StdLibPrelude ,
243223 Scope :: BuiltinAttrs => break , // nowhere else to search
244224 Scope :: ExternPreludeItems => Scope :: ExternPreludeFlags ,
@@ -444,8 +424,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
444424 let ( ns, macro_kind) = match scope_set {
445425 ScopeSet :: All ( ns)
446426 | ScopeSet :: Module ( ns, _)
447- | ScopeSet :: ModuleAndExternPrelude ( ns, _)
448- | ScopeSet :: NamespacedCrate ( ns, _) => ( ns, None ) ,
427+ | ScopeSet :: ModuleAndExternPrelude ( ns, _) => ( ns, None ) ,
449428 ScopeSet :: ExternPrelude => ( TypeNS , None ) ,
450429 ScopeSet :: Macro ( macro_kind) => ( MacroNS , Some ( macro_kind) ) ,
451430 } ;
@@ -500,6 +479,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
500479 }
501480 Err ( determinacy) => Err ( determinacy. into_value ( ) ) ,
502481 } ;
482+
503483 match res {
504484 Ok ( decl) if sub_namespace_match ( decl. macro_kinds ( ) , macro_kind) => {
505485 // Below we report various ambiguity errors.
@@ -706,32 +686,6 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
706686 Err ( ControlFlow :: Break ( ..) ) => return binding,
707687 }
708688 }
709- Scope :: NamespacedCrates ( sym) => {
710- let try_find_namespaced_crate = |root_name : & Symbol | {
711- self . namespaced_crate_names
712- . get ( root_name. as_str ( ) )
713- . into_iter ( )
714- . flatten ( )
715- . find ( |s| s. split ( "::" ) . nth ( 1 ) == Some ( ident. name . as_str ( ) ) )
716- } ;
717-
718- let ns_crate_cand = try_find_namespaced_crate ( & sym) ;
719- match ns_crate_cand {
720- Some ( ns_cand) => {
721- let ns_ident = IdentKey :: with_root_ctxt ( Symbol :: intern ( ns_cand) ) ;
722-
723- match self . extern_prelude_get_flag (
724- ns_ident,
725- orig_ident_span,
726- finalize. is_some ( ) ,
727- ) {
728- Some ( decl) => Ok ( decl) ,
729- None => Err ( Determinacy :: Determined ) ,
730- }
731- }
732- None => Err ( Determinacy :: Determined ) ,
733- }
734- }
735689 Scope :: MacroUsePrelude => match self . macro_use_prelude . get ( & ident. name ) . cloned ( ) {
736690 Some ( decl) => Ok ( decl) ,
737691 None => Err ( Determinacy :: determined (
@@ -1022,14 +976,14 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
1022976 ignore_import,
1023977 )
1024978 }
1025- ModuleOrUniformRoot :: VirtualNamespacedCrate ( sym) => self . resolve_ident_in_scope_set (
1026- ident ,
1027- ScopeSet :: NamespacedCrate ( ns , sym ) ,
1028- parent_scope ,
1029- finalize ,
1030- ignore_decl ,
1031- ignore_import ,
1032- ) ,
979+ ModuleOrUniformRoot :: OpenModule ( sym) => {
980+ let open_ns_name = format ! ( "{}::{}" , sym . as_str ( ) , ident . name ) ;
981+ let ns_ident = IdentKey :: with_root_ctxt ( Symbol :: intern ( & open_ns_name ) ) ;
982+ match self . extern_prelude_get_flag ( ns_ident , ident . span , finalize . is_some ( ) ) {
983+ Some ( decl ) => Ok ( decl ) ,
984+ None => Err ( Determinacy :: Determined ) ,
985+ }
986+ }
1033987 ModuleOrUniformRoot :: ModuleAndExternPrelude ( module) => self . resolve_ident_in_scope_set (
1034988 ident,
1035989 ScopeSet :: ModuleAndExternPrelude ( ns, module) ,
@@ -2016,8 +1970,8 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
20161970 }
20171971
20181972 let maybe_assoc = opt_ns != Some ( MacroNS ) && PathSource :: Type . is_expected ( res) ;
2019- if let Res :: VirtualMod ( sym) = binding. res ( ) {
2020- module = Some ( ModuleOrUniformRoot :: VirtualNamespacedCrate ( sym) ) ;
1973+ if let Res :: OpenMod ( sym) = binding. res ( ) {
1974+ module = Some ( ModuleOrUniformRoot :: OpenModule ( sym) ) ;
20211975 record_segment_res ( self . reborrow ( ) , finalize, res, id) ;
20221976 } else if let Some ( def_id) = binding. res ( ) . module_like_def_id ( ) {
20231977 if self . mods_with_parse_errors . contains ( & def_id) {
0 commit comments