From e163c908acff9260eff347541f0f3f57db551622 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sat, 2 Feb 2019 00:33:54 +0100 Subject: Add AST for extern crate Also change it to parse the crate name as a NAME_REF, not a NAME. --- crates/ra_syntax/src/ast/generated.rs | 10 +++++++++- crates/ra_syntax/src/grammar.ron | 4 +++- crates/ra_syntax/src/grammar/items.rs | 2 +- .../tests/data/parser/inline/ok/0060_extern_crate.txt | 2 +- crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt | 4 ++-- 5 files changed, 16 insertions(+), 6 deletions(-) (limited to 'crates') diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index 60480c699..a8d60e882 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs @@ -970,7 +970,15 @@ impl ToOwned for ExternCrateItem { } -impl ExternCrateItem {} +impl ExternCrateItem { + pub fn name_ref(&self) -> Option<&NameRef> { + super::child_opt(self) + } + + pub fn alias(&self) -> Option<&Alias> { + super::child_opt(self) + } +} // FalseKw #[derive(Debug, PartialEq, Eq, Hash)] diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index a2ccd7cb9..2ed1fd1b8 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron @@ -601,7 +601,9 @@ Grammar( "UseTreeList": ( collections: [["use_trees", "UseTree"]] ), - "ExternCrateItem": (), + "ExternCrateItem": ( + options: ["NameRef", "Alias"], + ), "ArgList": ( collections: [ ["args", "Expr"] diff --git a/crates/ra_syntax/src/grammar/items.rs b/crates/ra_syntax/src/grammar/items.rs index 18039cd3f..84c18a293 100644 --- a/crates/ra_syntax/src/grammar/items.rs +++ b/crates/ra_syntax/src/grammar/items.rs @@ -247,7 +247,7 @@ fn extern_crate_item(p: &mut Parser) { p.bump(); assert!(p.at(CRATE_KW)); p.bump(); - name(p); + name_ref(p); opt_alias(p); p.expect(SEMI); } diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt index 7ffdc7fbd..a7b428787 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt @@ -4,7 +4,7 @@ SOURCE_FILE@[0; 18) WHITESPACE@[6; 7) CRATE_KW@[7; 12) WHITESPACE@[12; 13) - NAME@[13; 16) + NAME_REF@[13; 16) IDENT@[13; 16) "foo" SEMI@[16; 17) WHITESPACE@[17; 18) diff --git a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt index 5adf3f276..5558d952e 100644 --- a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt +++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt @@ -4,7 +4,7 @@ SOURCE_FILE@[0; 43) WHITESPACE@[6; 7) CRATE_KW@[7; 12) WHITESPACE@[12; 13) - NAME@[13; 16) + NAME_REF@[13; 16) IDENT@[13; 16) "foo" SEMI@[16; 17) WHITESPACE@[17; 18) @@ -13,7 +13,7 @@ SOURCE_FILE@[0; 43) WHITESPACE@[24; 25) CRATE_KW@[25; 30) WHITESPACE@[30; 31) - NAME@[31; 34) + NAME_REF@[31; 34) IDENT@[31; 34) "foo" WHITESPACE@[34; 35) ALIAS@[35; 41) -- cgit v1.2.3