diff options
| author | bors <bors@rust-lang.org> | 2025-02-21 14:56:04 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-02-21 14:56:04 +0000 |
| commit | 71e06b9c59d6af50fdc55aed75620493d29baf98 (patch) | |
| tree | 1bcad1953bae13a0114731ea8d0962abea2f3abf /compiler/rustc_resolve/src/macros.rs | |
| parent | 9f48dedc9763334a587c66558974635807a113ed (diff) | |
| parent | 636f4f19d84237de41974ef17c77ac915b380790 (diff) | |
| download | rust-71e06b9c59d6af50fdc55aed75620493d29baf98.tar.gz rust-71e06b9c59d6af50fdc55aed75620493d29baf98.zip | |
Auto merge of #137371 - matthiaskrgr:rollup-3qkdqar, r=matthiaskrgr
Rollup of 8 pull requests Successful merges: - #128080 (Specify scope in `out_of_scope_macro_calls` lint) - #135630 (add more `s390x` target features) - #136089 (Reduce `Box::default` stack copies in debug mode) - #137204 (Clarify MIR dialects and phases) - #137299 (Simplify `Postorder` customization.) - #137302 (Use a probe to avoid registering stray region obligations when re-checking drops in MIR typeck) - #137305 (Tweaks in and around `rustc_middle`) - #137313 (Some codegen_llvm cleanups) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_resolve/src/macros.rs')
| -rw-r--r-- | compiler/rustc_resolve/src/macros.rs | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/compiler/rustc_resolve/src/macros.rs b/compiler/rustc_resolve/src/macros.rs index cca01a01e98..a70def2f6c9 100644 --- a/compiler/rustc_resolve/src/macros.rs +++ b/compiler/rustc_resolve/src/macros.rs @@ -857,8 +857,10 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> { ), path_res @ (PathResult::NonModule(..) | PathResult::Failed { .. }) => { let mut suggestion = None; - let (span, label, module) = - if let PathResult::Failed { span, label, module, .. } = path_res { + let (span, label, module, segment) = + if let PathResult::Failed { span, label, module, segment_name, .. } = + path_res + { // try to suggest if it's not a macro, maybe a function if let PathResult::NonModule(partial_res) = self.maybe_resolve_path(&path, Some(ValueNS), &parent_scope, None) @@ -876,7 +878,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> { Applicability::MaybeIncorrect, )); } - (span, label, module) + (span, label, module, segment_name) } else { ( path_span, @@ -886,12 +888,13 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> { kind.descr() ), None, + path.last().map(|segment| segment.ident.name).unwrap(), ) }; self.report_error( span, ResolutionError::FailedToResolve { - segment: path.last().map(|segment| segment.ident.name), + segment: Some(segment), label, suggestion, module, @@ -1067,11 +1070,24 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> { None, ); if fallback_binding.ok().and_then(|b| b.res().opt_def_id()) != Some(def_id) { + let location = match parent_scope.module.kind { + ModuleKind::Def(_, _, name) if name == kw::Empty => { + "the crate root".to_string() + } + ModuleKind::Def(kind, def_id, name) => { + format!("{} `{name}`", kind.descr(def_id)) + } + ModuleKind::Block => "this scope".to_string(), + }; self.tcx.sess.psess.buffer_lint( OUT_OF_SCOPE_MACRO_CALLS, path.span, node_id, - BuiltinLintDiag::OutOfScopeMacroCalls { path: pprust::path_to_string(path) }, + BuiltinLintDiag::OutOfScopeMacroCalls { + span: path.span, + path: pprust::path_to_string(path), + location, + }, ); } } |
