From 5c8e3c040ae46939694f8db63ebaeb773b22a57d Mon Sep 17 00:00:00 2001 From: togami2864 Date: Mon, 10 Oct 2022 20:22:08 +0900 Subject: [PATCH] make a help text for 'cannot find macro' actionable --- compiler/rustc_resolve/src/diagnostics.rs | 5 ++--- src/test/ui/macros/issue-102601.rs | 13 +++++++++++++ src/test/ui/macros/issue-102601.stderr | 11 +++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/test/ui/macros/issue-102601.rs create mode 100644 src/test/ui/macros/issue-102601.stderr diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs index 37771693417b3..2f79606e7a45f 100644 --- a/compiler/rustc_resolve/src/diagnostics.rs +++ b/compiler/rustc_resolve/src/diagnostics.rs @@ -2441,10 +2441,9 @@ fn show_candidates( for candidate in accessible_path_strings { msg.push('\n'); - msg.push_str(&candidate.0); + msg.push_str(&format!("use {};", &candidate.0)); } - - err.note(&msg); + err.help(&msg); } } else if !matches!(mode, DiagnosticMode::Import) { assert!(!inaccessible_path_strings.is_empty()); diff --git a/src/test/ui/macros/issue-102601.rs b/src/test/ui/macros/issue-102601.rs new file mode 100644 index 0000000000000..f5886b36367b6 --- /dev/null +++ b/src/test/ui/macros/issue-102601.rs @@ -0,0 +1,13 @@ +mod hey { + pub use std::println as bitflags; +} + +fn main() { + bitflags! { //~ ERROR cannot find macro `bitflags` in this scope + struct Flags: u32 { + const A = 0b00000001; + } + } +} +//~ HELP consider importing this macro: +// use hey::bitflags; diff --git a/src/test/ui/macros/issue-102601.stderr b/src/test/ui/macros/issue-102601.stderr new file mode 100644 index 0000000000000..34991dcafb6a7 --- /dev/null +++ b/src/test/ui/macros/issue-102601.stderr @@ -0,0 +1,11 @@ +error: cannot find macro `bitflags` in this scope + --> $DIR/issue-102601.rs:6:5 + | +LL | bitflags! { + | ^^^^^^^^ + | + = help: consider importing this macro: + use hey::bitflags; + +error: aborting due to previous error +