}
pub(super) const ITEM_RECOVERY_SET: TokenSet = TokenSet::new(&[
- FN_KW,
- STRUCT_KW,
- ENUM_KW,
- IMPL_KW,
- TRAIT_KW,
- CONST_KW,
- STATIC_KW,
- LET_KW,
- MOD_KW,
- PUB_KW,
- CRATE_KW,
- USE_KW,
- MACRO_KW,
+ T![fn],
+ T![struct],
+ T![enum],
+ T![impl],
+ T![trait],
+ T![const],
+ T![static],
+ T![let],
+ T![mod],
+ T![pub],
+ T![crate],
+ T![use],
+ T![macro],
T![;],
]);
p.bump(T![crate]);
if p.at(T![self]) {
+ let m = p.start();
p.bump(T![self]);
+ m.complete(p, NAME_REF);
} else {
name_ref(p);
}
}
match p.current() {
- T!['{'] => {
+ // test macro_rules_non_brace
+ // macro_rules! m ( ($i:ident) => {} );
+ // macro_rules! m [ ($i:ident) => {} ];
+ T!['['] | T!['('] => {
token_tree(p);
+ p.expect(T![;]);
}
- _ => p.error("expected `{`"),
+ T!['{'] => token_tree(p),
+ _ => p.error("expected `{`, `[`, `(`"),
}
m.complete(p, MACRO_RULES);
}