diff options
author | Aleksey Kladov <[email protected]> | 2019-02-11 16:23:13 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-02-11 16:24:13 +0000 |
commit | 2efdf41bdb178ebf1ff0f8e3b335f491c84d7fa3 (patch) | |
tree | 477852488ac98984574e11e068e911cc8d7aabd2 | |
parent | e7b370226c9b3d045a805dae5b93231a0869bbca (diff) |
make macro a NameOwner
6 files changed, 14 insertions, 5 deletions
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index 256277609..d2b080743 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs | |||
@@ -1908,6 +1908,7 @@ impl ToOwned for MacroCall { | |||
1908 | } | 1908 | } |
1909 | 1909 | ||
1910 | 1910 | ||
1911 | impl ast::NameOwner for MacroCall {} | ||
1911 | impl MacroCall { | 1912 | impl MacroCall { |
1912 | pub fn token_tree(&self) -> Option<&TokenTree> { | 1913 | pub fn token_tree(&self) -> Option<&TokenTree> { |
1913 | super::child_opt(self) | 1914 | super::child_opt(self) |
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index d428bc595..2e4b2d776 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron | |||
@@ -545,7 +545,10 @@ Grammar( | |||
545 | "Visibility": (), | 545 | "Visibility": (), |
546 | "Name": (), | 546 | "Name": (), |
547 | "NameRef": (), | 547 | "NameRef": (), |
548 | "MacroCall": ( options: [ "TokenTree", "Path" ] ), | 548 | "MacroCall": ( |
549 | traits: [ "NameOwner" ], | ||
550 | options: [ "TokenTree", "Path" ], | ||
551 | ), | ||
549 | "Attr": ( options: [ ["value", "TokenTree"] ] ), | 552 | "Attr": ( options: [ ["value", "TokenTree"] ] ), |
550 | "TokenTree": (), | 553 | "TokenTree": (), |
551 | "TypeParamList": ( | 554 | "TypeParamList": ( |
diff --git a/crates/ra_syntax/src/grammar/items.rs b/crates/ra_syntax/src/grammar/items.rs index a61f260cf..4b962c1f3 100644 --- a/crates/ra_syntax/src/grammar/items.rs +++ b/crates/ra_syntax/src/grammar/items.rs | |||
@@ -347,7 +347,9 @@ fn macro_call(p: &mut Parser) -> BlockLike { | |||
347 | 347 | ||
348 | pub(super) fn macro_call_after_excl(p: &mut Parser) -> BlockLike { | 348 | pub(super) fn macro_call_after_excl(p: &mut Parser) -> BlockLike { |
349 | p.expect(EXCL); | 349 | p.expect(EXCL); |
350 | p.eat(IDENT); | 350 | if p.at(IDENT) { |
351 | name(p); | ||
352 | } | ||
351 | match p.current() { | 353 | match p.current() { |
352 | L_CURLY => { | 354 | L_CURLY => { |
353 | token_tree(p); | 355 | token_tree(p); |
diff --git a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt index 12919fab7..440bd7f92 100644 --- a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt +++ b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt | |||
@@ -6,7 +6,8 @@ SOURCE_FILE@[0; 349) | |||
6 | IDENT@[0; 5) "macro" | 6 | IDENT@[0; 5) "macro" |
7 | err: `expected EXCL` | 7 | err: `expected EXCL` |
8 | WHITESPACE@[5; 6) | 8 | WHITESPACE@[5; 6) |
9 | IDENT@[6; 21) "parse_use_trees" | 9 | NAME@[6; 21) |
10 | IDENT@[6; 21) "parse_use_trees" | ||
10 | TOKEN_TREE@[21; 41) | 11 | TOKEN_TREE@[21; 41) |
11 | L_PAREN@[21; 22) | 12 | L_PAREN@[21; 22) |
12 | DOLLAR@[22; 23) | 13 | DOLLAR@[22; 23) |
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt index 62528ca47..6ccd0ffc3 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt | |||
@@ -19,7 +19,8 @@ SOURCE_FILE@[0; 70) | |||
19 | IDENT@[12; 23) "macro_rules" | 19 | IDENT@[12; 23) "macro_rules" |
20 | EXCL@[23; 24) | 20 | EXCL@[23; 24) |
21 | WHITESPACE@[24; 25) | 21 | WHITESPACE@[24; 25) |
22 | IDENT@[25; 28) "foo" | 22 | NAME@[25; 28) |
23 | IDENT@[25; 28) "foo" | ||
23 | WHITESPACE@[28; 29) | 24 | WHITESPACE@[28; 29) |
24 | TOKEN_TREE@[29; 31) | 25 | TOKEN_TREE@[29; 31) |
25 | L_CURLY@[29; 30) | 26 | L_CURLY@[29; 30) |
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt index 63b230091..ac789651a 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt | |||
@@ -92,7 +92,8 @@ SOURCE_FILE@[0; 167) | |||
92 | IDENT@[109; 120) "macro_rules" | 92 | IDENT@[109; 120) "macro_rules" |
93 | EXCL@[120; 121) | 93 | EXCL@[120; 121) |
94 | WHITESPACE@[121; 122) | 94 | WHITESPACE@[121; 122) |
95 | IDENT@[122; 126) "test" | 95 | NAME@[122; 126) |
96 | IDENT@[122; 126) "test" | ||
96 | WHITESPACE@[126; 127) | 97 | WHITESPACE@[126; 127) |
97 | TOKEN_TREE@[127; 152) | 98 | TOKEN_TREE@[127; 152) |
98 | L_CURLY@[127; 128) | 99 | L_CURLY@[127; 128) |