Don't allow `const` to begin a nonterminal

Thanks to Vadim Petrochenkov who [told me what the fix was][z]!

[z]: https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/finding.20which.20macro.20rule.20to.20use/near/220240422
This commit is contained in:
Camelid 2020-12-17 13:51:20 -08:00
parent b32e6e6ac8
commit d6f1787447
2 changed files with 22 additions and 0 deletions

View File

@ -27,6 +27,8 @@ impl<'a> Parser<'a> {
token.can_begin_expr()
// This exception is here for backwards compatibility.
&& !token.is_keyword(kw::Let)
// This exception is here for backwards compatibility.
&& !token.is_keyword(kw::Const)
}
NonterminalKind::Ty => token.can_begin_type(),
NonterminalKind::Ident => get_macro_ident(token).is_some(),

View File

@ -0,0 +1,20 @@
// check-pass
macro_rules! exp {
(const $n:expr) => {
$n
};
}
macro_rules! stmt {
(exp $e:expr) => {
$e
};
(exp $($t:tt)+) => {
exp!($($t)+)
};
}
fn main() {
stmt!(exp const 1);
}