Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/parser/src/grammar/items.rs')
| -rw-r--r-- | crates/parser/src/grammar/items.rs | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/crates/parser/src/grammar/items.rs b/crates/parser/src/grammar/items.rs index d8468ba3cb..4e2a50d7a1 100644 --- a/crates/parser/src/grammar/items.rs +++ b/crates/parser/src/grammar/items.rs @@ -230,13 +230,8 @@ fn opt_item_without_modifiers(p: &mut Parser<'_>, m: Marker) -> Result<(), Marke IDENT if p.at_contextual_kw(T![union]) && p.nth(1) == IDENT => adt::union(p, m), T![macro] => macro_def(p, m), - // check if current token is "macro_rules" followed by "!" followed by an identifier or "try" - // try is keyword since the 2018 edition and the parser is not edition aware (yet!) - IDENT - if p.at_contextual_kw(T![macro_rules]) - && p.nth_at(1, BANG) - && (p.nth_at(2, IDENT) || p.nth_at(2, T![try])) => - { + // check if current token is "macro_rules" followed by "!" followed by an identifier + IDENT if p.at_contextual_kw(T![macro_rules]) && p.nth_at(1, BANG) && p.nth_at(2, IDENT) => { macro_rules(p, m) } @@ -334,23 +329,14 @@ pub(crate) fn extern_item_list(p: &mut Parser<'_>) { m.complete(p, EXTERN_ITEM_LIST); } +// test try_macro_rules 2015 +// macro_rules! try { () => {} } fn macro_rules(p: &mut Parser<'_>, m: Marker) { assert!(p.at_contextual_kw(T![macro_rules])); p.bump_remap(T![macro_rules]); p.expect(T![!]); - // Special-case `macro_rules! try`. - // This is a hack until we do proper edition support - - // test try_macro_rules - // macro_rules! try { () => {} } - if p.at(T![try]) { - let m = p.start(); - p.bump_remap(IDENT); - m.complete(p, NAME); - } else { - name(p); - } + name(p); match p.current() { // test macro_rules_non_brace @@ -388,7 +374,7 @@ fn macro_def(p: &mut Parser<'_>, m: Marker) { m.complete(p, MACRO_DEF); } -// test fn +// test fn_ // fn foo() {} fn fn_(p: &mut Parser<'_>, m: Marker) { p.bump(T![fn]); |