aboutsummaryrefslogtreecommitdiff
path: root/crates/libsyntax2/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/libsyntax2/src')
-rw-r--r--crates/libsyntax2/src/ast/generated.rs48
-rw-r--r--crates/libsyntax2/src/grammar.ron14
-rw-r--r--crates/libsyntax2/src/grammar/items/mod.rs4
-rw-r--r--crates/libsyntax2/src/syntax_kinds/generated.rs8
4 files changed, 66 insertions, 8 deletions
diff --git a/crates/libsyntax2/src/ast/generated.rs b/crates/libsyntax2/src/ast/generated.rs
index 12e5a1c3e..c9b587ecb 100644
--- a/crates/libsyntax2/src/ast/generated.rs
+++ b/crates/libsyntax2/src/ast/generated.rs
@@ -5,6 +5,30 @@ use {
5}; 5};
6 6
7#[derive(Debug, Clone, Copy)] 7#[derive(Debug, Clone, Copy)]
8pub struct Enum<R: TreeRoot = Arc<SyntaxRoot>> {
9 syntax: SyntaxNode<R>,
10}
11
12impl<R: TreeRoot> AstNode<R> for Enum<R> {
13 fn cast(syntax: SyntaxNode<R>) -> Option<Self> {
14 match syntax.kind() {
15 ENUM => Some(Enum { syntax }),
16 _ => None,
17 }
18 }
19 fn syntax(&self) -> &SyntaxNode<R> { &self.syntax }
20}
21
22impl<R: TreeRoot> Enum<R> {
23 pub fn name(&self) -> Option<Name<R>> {
24 self.syntax()
25 .children()
26 .filter_map(Name::cast)
27 .next()
28 }
29}
30
31#[derive(Debug, Clone, Copy)]
8pub struct File<R: TreeRoot = Arc<SyntaxRoot>> { 32pub struct File<R: TreeRoot = Arc<SyntaxRoot>> {
9 syntax: SyntaxNode<R>, 33 syntax: SyntaxNode<R>,
10} 34}
@@ -68,3 +92,27 @@ impl<R: TreeRoot> AstNode<R> for Name<R> {
68 92
69impl<R: TreeRoot> Name<R> {} 93impl<R: TreeRoot> Name<R> {}
70 94
95#[derive(Debug, Clone, Copy)]
96pub struct Struct<R: TreeRoot = Arc<SyntaxRoot>> {
97 syntax: SyntaxNode<R>,
98}
99
100impl<R: TreeRoot> AstNode<R> for Struct<R> {
101 fn cast(syntax: SyntaxNode<R>) -> Option<Self> {
102 match syntax.kind() {
103 STRUCT => Some(Struct { syntax }),
104 _ => None,
105 }
106 }
107 fn syntax(&self) -> &SyntaxNode<R> { &self.syntax }
108}
109
110impl<R: TreeRoot> Struct<R> {
111 pub fn name(&self) -> Option<Name<R>> {
112 self.syntax()
113 .children()
114 .filter_map(Name::cast)
115 .next()
116 }
117}
118
diff --git a/crates/libsyntax2/src/grammar.ron b/crates/libsyntax2/src/grammar.ron
index 650f72212..a8916c5c7 100644
--- a/crates/libsyntax2/src/grammar.ron
+++ b/crates/libsyntax2/src/grammar.ron
@@ -112,11 +112,11 @@ Grammar(
112 "ENUM", 112 "ENUM",
113 "FUNCTION", 113 "FUNCTION",
114 "EXTERN_CRATE_ITEM", 114 "EXTERN_CRATE_ITEM",
115 "MOD_ITEM", 115 "MODULE",
116 "USE_ITEM", 116 "USE_ITEM",
117 "STATIC_ITEM", 117 "STATIC_ITEM",
118 "CONST_ITEM", 118 "CONST_ITEM",
119 "TRAIT_ITEM", 119 "TRAIT",
120 "IMPL_ITEM", 120 "IMPL_ITEM",
121 "TYPE_ITEM", 121 "TYPE_ITEM",
122 "MACRO_CALL", 122 "MACRO_CALL",
@@ -224,6 +224,16 @@ Grammar(
224 ["name", "Name"] 224 ["name", "Name"]
225 ] 225 ]
226 ), 226 ),
227 "Struct": (
228 options: [
229 ["name", "Name"]
230 ]
231 ),
232 "Enum": (
233 options: [
234 ["name", "Name"]
235 ]
236 ),
227 "Name": (), 237 "Name": (),
228 }, 238 },
229) 239)
diff --git a/crates/libsyntax2/src/grammar/items/mod.rs b/crates/libsyntax2/src/grammar/items/mod.rs
index be4ff976a..6f401ea1b 100644
--- a/crates/libsyntax2/src/grammar/items/mod.rs
+++ b/crates/libsyntax2/src/grammar/items/mod.rs
@@ -121,7 +121,7 @@ pub(super) fn maybe_item(p: &mut Parser) -> MaybeItem {
121 // unsafe auto trait T {} 121 // unsafe auto trait T {}
122 TRAIT_KW => { 122 TRAIT_KW => {
123 traits::trait_item(p); 123 traits::trait_item(p);
124 TRAIT_ITEM 124 TRAIT
125 } 125 }
126 126
127 // test unsafe_impl 127 // test unsafe_impl
@@ -161,7 +161,7 @@ fn items_without_modifiers(p: &mut Parser) -> Option<SyntaxKind> {
161 } 161 }
162 MOD_KW => { 162 MOD_KW => {
163 mod_item(p); 163 mod_item(p);
164 MOD_ITEM 164 MODULE
165 } 165 }
166 STRUCT_KW => { 166 STRUCT_KW => {
167 structs::struct_item(p); 167 structs::struct_item(p);
diff --git a/crates/libsyntax2/src/syntax_kinds/generated.rs b/crates/libsyntax2/src/syntax_kinds/generated.rs
index 7d2fb60f6..c45a4800c 100644
--- a/crates/libsyntax2/src/syntax_kinds/generated.rs
+++ b/crates/libsyntax2/src/syntax_kinds/generated.rs
@@ -112,11 +112,11 @@ pub enum SyntaxKind {
112 ENUM, 112 ENUM,
113 FUNCTION, 113 FUNCTION,
114 EXTERN_CRATE_ITEM, 114 EXTERN_CRATE_ITEM,
115 MOD_ITEM, 115 MODULE,
116 USE_ITEM, 116 USE_ITEM,
117 STATIC_ITEM, 117 STATIC_ITEM,
118 CONST_ITEM, 118 CONST_ITEM,
119 TRAIT_ITEM, 119 TRAIT,
120 IMPL_ITEM, 120 IMPL_ITEM,
121 TYPE_ITEM, 121 TYPE_ITEM,
122 MACRO_CALL, 122 MACRO_CALL,
@@ -347,11 +347,11 @@ impl SyntaxKind {
347 ENUM => &SyntaxInfo { name: "ENUM" }, 347 ENUM => &SyntaxInfo { name: "ENUM" },
348 FUNCTION => &SyntaxInfo { name: "FUNCTION" }, 348 FUNCTION => &SyntaxInfo { name: "FUNCTION" },
349 EXTERN_CRATE_ITEM => &SyntaxInfo { name: "EXTERN_CRATE_ITEM" }, 349 EXTERN_CRATE_ITEM => &SyntaxInfo { name: "EXTERN_CRATE_ITEM" },
350 MOD_ITEM => &SyntaxInfo { name: "MOD_ITEM" }, 350 MODULE => &SyntaxInfo { name: "MODULE" },
351 USE_ITEM => &SyntaxInfo { name: "USE_ITEM" }, 351 USE_ITEM => &SyntaxInfo { name: "USE_ITEM" },
352 STATIC_ITEM => &SyntaxInfo { name: "STATIC_ITEM" }, 352 STATIC_ITEM => &SyntaxInfo { name: "STATIC_ITEM" },
353 CONST_ITEM => &SyntaxInfo { name: "CONST_ITEM" }, 353 CONST_ITEM => &SyntaxInfo { name: "CONST_ITEM" },
354 TRAIT_ITEM => &SyntaxInfo { name: "TRAIT_ITEM" }, 354 TRAIT => &SyntaxInfo { name: "TRAIT" },
355 IMPL_ITEM => &SyntaxInfo { name: "IMPL_ITEM" }, 355 IMPL_ITEM => &SyntaxInfo { name: "IMPL_ITEM" },
356 TYPE_ITEM => &SyntaxInfo { name: "TYPE_ITEM" }, 356 TYPE_ITEM => &SyntaxInfo { name: "TYPE_ITEM" },
357 MACRO_CALL => &SyntaxInfo { name: "MACRO_CALL" }, 357 MACRO_CALL => &SyntaxInfo { name: "MACRO_CALL" },