diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-12-21 10:47:47 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2019-12-21 10:47:47 +0000 |
commit | 90ef070db3dce0a7acb9cd11d0b0d72de13c9d79 (patch) | |
tree | c6fcc8c77fe4948b356e397fb5fe1f8e8ac39037 /crates/ra_parser/src/syntax_kind | |
parent | 3ebf15c9b29b1fed6319d04f540ad48cd4bd6995 (diff) | |
parent | 4195c0e5f9a3db7646d4df28aa8c77a863c35759 (diff) |
Merge #2628
2628: Add macro 2.0 support in parser r=matklad a=edwin0cheng
This PR added a new syntax kind : `MACRO_DEF` and a keyword `MACRO_KW`
there are two syntax for declarative macro 2.0 :
1. Normal : `macro m { ($i:ident) => {} }` , which handle similar to legacy one.
2. Call like: `macro m($i:ident) {}`, it produces a single token tree which have two child token trees : `($i:ident)` and `{}`
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_parser/src/syntax_kind')
-rw-r--r-- | crates/ra_parser/src/syntax_kind/generated.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_parser/src/syntax_kind/generated.rs b/crates/ra_parser/src/syntax_kind/generated.rs index fe0fcdb33..afe4ce51a 100644 --- a/crates/ra_parser/src/syntax_kind/generated.rs +++ b/crates/ra_parser/src/syntax_kind/generated.rs | |||
@@ -100,6 +100,7 @@ pub enum SyntaxKind { | |||
100 | TRY_KW, | 100 | TRY_KW, |
101 | BOX_KW, | 101 | BOX_KW, |
102 | AWAIT_KW, | 102 | AWAIT_KW, |
103 | MACRO_KW, | ||
103 | AUTO_KW, | 104 | AUTO_KW, |
104 | DEFAULT_KW, | 105 | DEFAULT_KW, |
105 | EXISTENTIAL_KW, | 106 | EXISTENTIAL_KW, |
@@ -136,6 +137,7 @@ pub enum SyntaxKind { | |||
136 | TYPE_ALIAS_DEF, | 137 | TYPE_ALIAS_DEF, |
137 | MACRO_CALL, | 138 | MACRO_CALL, |
138 | TOKEN_TREE, | 139 | TOKEN_TREE, |
140 | MACRO_DEF, | ||
139 | PAREN_TYPE, | 141 | PAREN_TYPE, |
140 | TUPLE_TYPE, | 142 | TUPLE_TYPE, |
141 | NEVER_TYPE, | 143 | NEVER_TYPE, |
@@ -251,7 +253,7 @@ impl SyntaxKind { | |||
251 | | SUPER_KW | IN_KW | WHERE_KW | FOR_KW | LOOP_KW | WHILE_KW | CONTINUE_KW | 253 | | SUPER_KW | IN_KW | WHERE_KW | FOR_KW | LOOP_KW | WHILE_KW | CONTINUE_KW |
252 | | BREAK_KW | IF_KW | ELSE_KW | MATCH_KW | CONST_KW | STATIC_KW | MUT_KW | UNSAFE_KW | 254 | | BREAK_KW | IF_KW | ELSE_KW | MATCH_KW | CONST_KW | STATIC_KW | MUT_KW | UNSAFE_KW |
253 | | TYPE_KW | REF_KW | LET_KW | MOVE_KW | RETURN_KW | TRY_KW | BOX_KW | AWAIT_KW | 255 | | TYPE_KW | REF_KW | LET_KW | MOVE_KW | RETURN_KW | TRY_KW | BOX_KW | AWAIT_KW |
254 | | AUTO_KW | DEFAULT_KW | EXISTENTIAL_KW | UNION_KW => true, | 256 | | MACRO_KW | AUTO_KW | DEFAULT_KW | EXISTENTIAL_KW | UNION_KW => true, |
255 | _ => false, | 257 | _ => false, |
256 | } | 258 | } |
257 | } | 259 | } |
@@ -314,6 +316,7 @@ impl SyntaxKind { | |||
314 | "try" => TRY_KW, | 316 | "try" => TRY_KW, |
315 | "box" => BOX_KW, | 317 | "box" => BOX_KW, |
316 | "await" => AWAIT_KW, | 318 | "await" => AWAIT_KW, |
319 | "macro" => MACRO_KW, | ||
317 | _ => return None, | 320 | _ => return None, |
318 | }; | 321 | }; |
319 | Some(kw) | 322 | Some(kw) |
@@ -628,6 +631,9 @@ macro_rules! T { | |||
628 | ( await ) => { | 631 | ( await ) => { |
629 | $crate::SyntaxKind::AWAIT_KW | 632 | $crate::SyntaxKind::AWAIT_KW |
630 | }; | 633 | }; |
634 | ( macro ) => { | ||
635 | $crate::SyntaxKind::MACRO_KW | ||
636 | }; | ||
631 | ( auto ) => { | 637 | ( auto ) => { |
632 | $crate::SyntaxKind::AUTO_KW | 638 | $crate::SyntaxKind::AUTO_KW |
633 | }; | 639 | }; |