Add a label to point to the lacking macro name definition

This commit is contained in:
Lin Yihai 2024-07-10 10:59:33 +08:00
parent 5be2ec7245
commit 2fca4ea317
6 changed files with 30 additions and 8 deletions

View File

@ -1439,7 +1439,10 @@ pub(crate) fn unresolved_macro_suggestions(
); );
if macro_kind == MacroKind::Bang && ident.name == sym::macro_rules { if macro_kind == MacroKind::Bang && ident.name == sym::macro_rules {
err.subdiagnostic(MaybeMissingMacroRulesName { span: ident.span }); let label_span = ident.span.shrink_to_hi();
let mut spans = MultiSpan::from_span(label_span);
spans.push_span_label(label_span, "put a macro name here");
err.subdiagnostic(MaybeMissingMacroRulesName { spans: spans });
return; return;
} }

View File

@ -667,7 +667,7 @@ pub(crate) struct MacroSuggMovePosition {
#[note(resolve_missing_macro_rules_name)] #[note(resolve_missing_macro_rules_name)]
pub(crate) struct MaybeMissingMacroRulesName { pub(crate) struct MaybeMissingMacroRulesName {
#[primary_span] #[primary_span]
pub(crate) span: Span, pub(crate) spans: MultiSpan,
} }
#[derive(Subdiagnostic)] #[derive(Subdiagnostic)]

View File

@ -7,6 +7,7 @@ macro_rules! make_macro {
macro_rules! $macro_name { macro_rules! $macro_name {
//~^ ERROR macro expansion ignores token `{` and any following //~^ ERROR macro expansion ignores token `{` and any following
//~| ERROR cannot find macro `macro_rules` in this scope //~| ERROR cannot find macro `macro_rules` in this scope
//~| put a macro name here
() => {} () => {}
} }
} }

View File

@ -1,5 +1,5 @@
error: macros that expand to items must be delimited with braces or followed by a semicolon error: macros that expand to items must be delimited with braces or followed by a semicolon
--> $DIR/issue-118786.rs:15:13 --> $DIR/issue-118786.rs:16:13
| |
LL | make_macro!((meow)); LL | make_macro!((meow));
| ^^^^^^ | ^^^^^^
@ -34,10 +34,10 @@ LL | make_macro!((meow));
| ------------------- in this macro invocation | ------------------- in this macro invocation
| |
note: maybe you have forgotten to define a name for this `macro_rules!` note: maybe you have forgotten to define a name for this `macro_rules!`
--> $DIR/issue-118786.rs:7:9 --> $DIR/issue-118786.rs:7:20
| |
LL | macro_rules! $macro_name { LL | macro_rules! $macro_name {
| ^^^^^^^^^^^ | ^ put a macro name here
... ...
LL | make_macro!((meow)); LL | make_macro!((meow));
| ------------------- in this macro invocation | ------------------- in this macro invocation

View File

@ -1,5 +1,11 @@
macro_rules! {} macro_rules! {}
//~^ ERROR cannot find macro `macro_rules` in this scope //~^ ERROR cannot find macro `macro_rules` in this scope
//~| NOTE maybe you have forgotten to define a name for this `macro_rules!` //~| NOTE maybe you have forgotten to define a name for this `macro_rules!`
//~| put a macro name here
macro_rules!{}
//~^ ERROR cannot find macro `macro_rules` in this scope
//~| NOTE maybe you have forgotten to define a name for this `macro_rules!`
//~| put a macro name here
fn main() {} fn main() {}

View File

@ -1,3 +1,15 @@
error: cannot find macro `macro_rules` in this scope
--> $DIR/issue-118295.rs:6:1
|
LL | macro_rules!{}
| ^^^^^^^^^^^
|
note: maybe you have forgotten to define a name for this `macro_rules!`
--> $DIR/issue-118295.rs:6:12
|
LL | macro_rules!{}
| ^ put a macro name here
error: cannot find macro `macro_rules` in this scope error: cannot find macro `macro_rules` in this scope
--> $DIR/issue-118295.rs:1:1 --> $DIR/issue-118295.rs:1:1
| |
@ -5,10 +17,10 @@ LL | macro_rules! {}
| ^^^^^^^^^^^ | ^^^^^^^^^^^
| |
note: maybe you have forgotten to define a name for this `macro_rules!` note: maybe you have forgotten to define a name for this `macro_rules!`
--> $DIR/issue-118295.rs:1:1 --> $DIR/issue-118295.rs:1:12
| |
LL | macro_rules! {} LL | macro_rules! {}
| ^^^^^^^^^^^ | ^ put a macro name here
error: aborting due to 1 previous error error: aborting due to 2 previous errors