Skip to content

Commit a933de8

Browse files
committed
Auto merge of rust-lang#96582 - petrochenkov:finalize, r=cjgillot
resolve: Cleanup path resolution finalization Some cleanup after rust-lang#95255 and rust-lang#95405. r? `@cjgillot`
2 parents 6eda764 + 7841247 commit a933de8

File tree

8 files changed

+122
-198
lines changed

8 files changed

+122
-198
lines changed

Diff for: compiler/rustc_resolve/src/build_reduced_graph.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
298298
&segments,
299299
Some(TypeNS),
300300
parent_scope,
301-
if finalize { Finalize::SimplePath(id, path.span) } else { Finalize::No },
301+
finalize.then(|| Finalize::new(id, path.span)),
302302
None,
303303
) {
304304
PathResult::Module(ModuleOrUniformRoot::Module(module)) => {

Diff for: compiler/rustc_resolve/src/diagnostics.rs

+13-19
Original file line numberDiff line numberDiff line change
@@ -417,15 +417,12 @@ impl<'a> Resolver<'a> {
417417

418418
crate fn lint_if_path_starts_with_module(
419419
&mut self,
420-
finalize: Finalize,
420+
finalize: Option<Finalize>,
421421
path: &[Segment],
422422
second_binding: Option<&NameBinding<'_>>,
423423
) {
424-
let (diag_id, diag_span) = match finalize {
425-
Finalize::No => return,
426-
Finalize::SimplePath(id, path_span) => (id, path_span),
427-
Finalize::UsePath { root_id, root_span, .. } => (root_id, root_span),
428-
Finalize::QPathTrait { qpath_id, qpath_span, .. } => (qpath_id, qpath_span),
424+
let Some(Finalize { node_id, root_span, .. }) = finalize else {
425+
return;
429426
};
430427

431428
let first_name = match path.get(0) {
@@ -463,11 +460,11 @@ impl<'a> Resolver<'a> {
463460
}
464461
}
465462

466-
let diag = BuiltinLintDiagnostics::AbsPathWithModule(diag_span);
463+
let diag = BuiltinLintDiagnostics::AbsPathWithModule(root_span);
467464
self.lint_buffer.buffer_lint_with_diagnostic(
468465
ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE,
469-
diag_id,
470-
diag_span,
466+
node_id,
467+
root_span,
471468
"absolute paths must start with `self`, `super`, \
472469
`crate`, or an external crate name in the 2018 edition",
473470
diag,
@@ -1503,7 +1500,6 @@ impl<'a> Resolver<'a> {
15031500
&parent_scope,
15041501
None,
15051502
false,
1506-
false,
15071503
None,
15081504
) {
15091505
let desc = match binding.res() {
@@ -1811,7 +1807,7 @@ impl<'a> Resolver<'a> {
18111807
opt_ns: Option<Namespace>, // `None` indicates a module path in import
18121808
parent_scope: &ParentScope<'a>,
18131809
ribs: Option<&PerNS<Vec<Rib<'a>>>>,
1814-
unusable_binding: Option<&'a NameBinding<'a>>,
1810+
ignore_binding: Option<&'a NameBinding<'a>>,
18151811
module: Option<ModuleOrUniformRoot<'a>>,
18161812
i: usize,
18171813
ident: Ident,
@@ -1863,8 +1859,7 @@ impl<'a> Resolver<'a> {
18631859
ns_to_try,
18641860
parent_scope,
18651861
None,
1866-
false,
1867-
unusable_binding,
1862+
ignore_binding,
18681863
).ok()
18691864
} else if let Some(ribs) = ribs
18701865
&& let Some(TypeNS | ValueNS) = opt_ns
@@ -1873,9 +1868,9 @@ impl<'a> Resolver<'a> {
18731868
ident,
18741869
ns_to_try,
18751870
parent_scope,
1876-
Finalize::No,
1871+
None,
18771872
&ribs[ns_to_try],
1878-
unusable_binding,
1873+
ignore_binding,
18791874
) {
18801875
// we found a locally-imported or available item/module
18811876
Some(LexicalScopeBinding::Item(binding)) => Some(binding),
@@ -1889,8 +1884,7 @@ impl<'a> Resolver<'a> {
18891884
parent_scope,
18901885
None,
18911886
false,
1892-
false,
1893-
unusable_binding,
1887+
ignore_binding,
18941888
).ok()
18951889
};
18961890
if let Some(binding) = binding {
@@ -1921,9 +1915,9 @@ impl<'a> Resolver<'a> {
19211915
ident,
19221916
ValueNS,
19231917
parent_scope,
1924-
Finalize::No,
1918+
None,
19251919
&ribs[ValueNS],
1926-
unusable_binding,
1920+
ignore_binding,
19271921
)
19281922
} else {
19291923
None

0 commit comments

Comments
 (0)