fix: emit error when fragment is MethodReceiverExpr
and items is empty
This commit is contained in:
parent
2d17294d18
commit
990b2899ad
3 changed files with 35 additions and 1 deletions
|
@ -722,7 +722,11 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if fragment_kind == AstFragmentKind::Expr && items.is_empty() {
|
if matches!(
|
||||||
|
fragment_kind,
|
||||||
|
AstFragmentKind::Expr | AstFragmentKind::MethodReceiverExpr
|
||||||
|
) && items.is_empty()
|
||||||
|
{
|
||||||
self.cx.emit_err(RemoveExprNotSupported { span });
|
self.cx.emit_err(RemoveExprNotSupported { span });
|
||||||
fragment_kind.dummy(span)
|
fragment_kind.dummy(span)
|
||||||
} else {
|
} else {
|
||||||
|
|
12
tests/ui/macros/issue-111749.rs
Normal file
12
tests/ui/macros/issue-111749.rs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
macro_rules! cbor_map {
|
||||||
|
($key:expr) => {
|
||||||
|
$key.signum();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
cbor_map! { #[test(test)] 4};
|
||||||
|
//~^ ERROR removing an expression is not supported in this position
|
||||||
|
//~| ERROR attribute must be of the form `#[test]`
|
||||||
|
//~| WARNING this was previously accepted by the compiler but is being phased out
|
||||||
|
}
|
18
tests/ui/macros/issue-111749.stderr
Normal file
18
tests/ui/macros/issue-111749.stderr
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
error: removing an expression is not supported in this position
|
||||||
|
--> $DIR/issue-111749.rs:8:17
|
||||||
|
|
|
||||||
|
LL | cbor_map! { #[test(test)] 4};
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: attribute must be of the form `#[test]`
|
||||||
|
--> $DIR/issue-111749.rs:8:17
|
||||||
|
|
|
||||||
|
LL | cbor_map! { #[test(test)] 4};
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||||
|
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
|
||||||
|
= note: `#[deny(ill_formed_attribute_input)]` on by default
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue