resolve: Remove Module from ScopeSet::Late

It can be passed in a more usual way through `ParentScope`
This commit is contained in:
Vadim Petrochenkov
2025-08-19 11:07:38 +03:00
parent 774d96a29f
commit b82b947a5c
3 changed files with 9 additions and 7 deletions

View File

@@ -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(),

View File

@@ -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,
);

View File

@@ -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.