Skip to content

Commit

Permalink
Rollup merge of rust-lang#75209 - Hirrolot:suggest-macro-imports, r=e…
Browse files Browse the repository at this point in the history
…stebank

Suggest imports of unresolved macros

Closes rust-lang#75191.
  • Loading branch information
JohnTitor authored Oct 16, 2020
2 parents a78a62f + ea7cf61 commit 72264ef
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 0 deletions.
11 changes: 11 additions & 0 deletions compiler/rustc_resolve/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -922,6 +922,17 @@ impl<'a> Resolver<'a> {
);
self.add_typo_suggestion(err, suggestion, ident.span);

let import_suggestions = self.lookup_import_candidates(
ident,
Namespace::MacroNS,
parent_scope,
|res| match res {
Res::Def(DefKind::Macro(MacroKind::Bang), _) => true,
_ => false,
},
);
show_candidates(err, None, &import_suggestions, false, true);

if macro_kind == MacroKind::Derive && (ident.name == sym::Send || ident.name == sym::Sync) {
let msg = format!("unsafe traits like `{}` should be implemented explicitly", ident);
err.span_note(ident.span, &msg);
Expand Down
3 changes: 3 additions & 0 deletions src/test/ui/empty/empty-macro-use.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ error: cannot find macro `macro_two` in this scope
|
LL | macro_two!();
| ^^^^^^^^^
|
= note: consider importing this macro:
two_macros::macro_two

error: aborting due to previous error

3 changes: 3 additions & 0 deletions src/test/ui/hygiene/no_implicit_prelude-2018.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ error: cannot find macro `print` in this scope
|
LL | print!();
| ^^^^^
|
= note: consider importing this macro:
std::print

error: aborting due to previous error

3 changes: 3 additions & 0 deletions src/test/ui/hygiene/no_implicit_prelude.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ error: cannot find macro `panic` in this scope
LL | assert_eq!(0, 0);
| ^^^^^^^^^^^^^^^^^
|
= note: consider importing one of these items:
core::panic
std::panic
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0433]: failed to resolve: use of undeclared type `Vec`
Expand Down
3 changes: 3 additions & 0 deletions src/test/ui/macros/macro-use-wrong-name.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ LL | macro_two!();
|
LL | macro_rules! macro_one { () => ("one") }
| ---------------------- similarly named macro `macro_one` defined here
|
= note: consider importing this macro:
two_macros::macro_two

error: aborting due to previous error

3 changes: 3 additions & 0 deletions src/test/ui/missing/missing-macro-use.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ error: cannot find macro `macro_two` in this scope
|
LL | macro_two!();
| ^^^^^^^^^
|
= note: consider importing this macro:
two_macros::macro_two

error: aborting due to previous error

0 comments on commit 72264ef

Please sign in to comment.