aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-02-11 16:23:13 +0000
committerAleksey Kladov <[email protected]>2019-02-11 16:24:13 +0000
commit2efdf41bdb178ebf1ff0f8e3b335f491c84d7fa3 (patch)
tree477852488ac98984574e11e068e911cc8d7aabd2
parente7b370226c9b3d045a805dae5b93231a0869bbca (diff)
make macro a NameOwner
-rw-r--r--crates/ra_syntax/src/ast/generated.rs1
-rw-r--r--crates/ra_syntax/src/grammar.ron5
-rw-r--r--crates/ra_syntax/src/grammar/items.rs4
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt3
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt3
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt3
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
1911impl ast::NameOwner for MacroCall {}
1911impl MacroCall { 1912impl 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
348pub(super) fn macro_call_after_excl(p: &mut Parser) -> BlockLike { 348pub(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)