resolve: Remove Module from ScopeSet::Late
It can be passed in a more usual way through `ParentScope`
This commit is contained in:
@@ -107,7 +107,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
|
||||
};
|
||||
let module = match scope_set {
|
||||
// Start with the specified module.
|
||||
ScopeSet::Late(_, module, _) | ScopeSet::ModuleAndExternPrelude(_, module) => module,
|
||||
ScopeSet::ModuleAndExternPrelude(_, module) => module,
|
||||
// Jump out of trait or enum modules, they do not act as scopes.
|
||||
_ => parent_scope.module.nearest_item_scope(),
|
||||
};
|
||||
@@ -349,11 +349,12 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
|
||||
return Some(LexicalScopeBinding::Item(binding));
|
||||
} else if let RibKind::Module(module) = rib.kind {
|
||||
// Encountered a module item, abandon ribs and look into that module and preludes.
|
||||
let parent_scope = &ParentScope { module, ..*parent_scope };
|
||||
return self
|
||||
.cm()
|
||||
.resolve_ident_in_scope_set(
|
||||
orig_ident,
|
||||
ScopeSet::Late(ns, module, finalize.map(|finalize| finalize.node_id)),
|
||||
ScopeSet::Late(ns, finalize.map(|finalize| finalize.node_id)),
|
||||
parent_scope,
|
||||
finalize,
|
||||
finalize.is_some(),
|
||||
|
||||
@@ -38,8 +38,8 @@ use crate::late::{
|
||||
};
|
||||
use crate::ty::fast_reject::SimplifiedType;
|
||||
use crate::{
|
||||
Module, ModuleKind, ModuleOrUniformRoot, PathResult, PathSource, Resolver, ScopeSet, Segment,
|
||||
errors, path_names_to_string,
|
||||
Module, ModuleKind, ModuleOrUniformRoot, ParentScope, PathResult, PathSource, Resolver,
|
||||
ScopeSet, Segment, errors, path_names_to_string,
|
||||
};
|
||||
|
||||
type Res = def::Res<ast::NodeId>;
|
||||
@@ -2460,10 +2460,11 @@ impl<'ast, 'ra, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
|
||||
self.r.add_module_candidates(module, &mut names, &filter_fn, Some(ctxt));
|
||||
} else if let RibKind::Module(module) = rib.kind {
|
||||
// Encountered a module item, abandon ribs and look into that module and preludes.
|
||||
let parent_scope = &ParentScope { module, ..self.parent_scope };
|
||||
self.r.add_scope_set_candidates(
|
||||
&mut names,
|
||||
ScopeSet::Late(ns, module, None),
|
||||
&self.parent_scope,
|
||||
ScopeSet::Late(ns, None),
|
||||
parent_scope,
|
||||
ctxt,
|
||||
filter_fn,
|
||||
);
|
||||
|
||||
@@ -160,7 +160,7 @@ enum ScopeSet<'ra> {
|
||||
Macro(MacroKind),
|
||||
/// All scopes with the given namespace, used for partially performing late resolution.
|
||||
/// The node id enables lints and is used for reporting them.
|
||||
Late(Namespace, Module<'ra>, Option<NodeId>),
|
||||
Late(Namespace, Option<NodeId>),
|
||||
}
|
||||
|
||||
/// Everything you need to know about a name's location to resolve it.
|
||||
|
||||
Reference in New Issue
Block a user