diff options
Diffstat (limited to 'crates/ra_syntax/src/ast')
-rw-r--r-- | crates/ra_syntax/src/ast/generated/nodes.rs | 772 | ||||
-rw-r--r-- | crates/ra_syntax/src/ast/traits.rs | 2 |
2 files changed, 388 insertions, 386 deletions
diff --git a/crates/ra_syntax/src/ast/generated/nodes.rs b/crates/ra_syntax/src/ast/generated/nodes.rs index 04a4d354c..dfda79550 100644 --- a/crates/ra_syntax/src/ast/generated/nodes.rs +++ b/crates/ra_syntax/src/ast/generated/nodes.rs | |||
@@ -11,7 +11,9 @@ pub struct SourceFile { | |||
11 | } | 11 | } |
12 | impl ast::AttrsOwner for SourceFile {} | 12 | impl ast::AttrsOwner for SourceFile {} |
13 | impl ast::ModuleItemOwner for SourceFile {} | 13 | impl ast::ModuleItemOwner for SourceFile {} |
14 | impl SourceFile {} | 14 | impl SourceFile { |
15 | pub fn shebang_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![shebang]) } | ||
16 | } | ||
15 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 17 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
16 | pub struct Attr { | 18 | pub struct Attr { |
17 | pub(crate) syntax: SyntaxNode, | 19 | pub(crate) syntax: SyntaxNode, |
@@ -26,6 +28,57 @@ impl Attr { | |||
26 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | 28 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } |
27 | } | 29 | } |
28 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 30 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
31 | pub struct ConstDef { | ||
32 | pub(crate) syntax: SyntaxNode, | ||
33 | } | ||
34 | impl ast::AttrsOwner for ConstDef {} | ||
35 | impl ast::NameOwner for ConstDef {} | ||
36 | impl ast::VisibilityOwner for ConstDef {} | ||
37 | impl ast::TypeAscriptionOwner for ConstDef {} | ||
38 | impl ConstDef { | ||
39 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
40 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
41 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
42 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
43 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
44 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
45 | } | ||
46 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
47 | pub struct EnumDef { | ||
48 | pub(crate) syntax: SyntaxNode, | ||
49 | } | ||
50 | impl ast::AttrsOwner for EnumDef {} | ||
51 | impl ast::NameOwner for EnumDef {} | ||
52 | impl ast::VisibilityOwner for EnumDef {} | ||
53 | impl ast::TypeParamsOwner for EnumDef {} | ||
54 | impl EnumDef { | ||
55 | pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) } | ||
56 | pub fn variant_list(&self) -> Option<EnumVariantList> { support::child(&self.syntax) } | ||
57 | } | ||
58 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
59 | pub struct ExternBlock { | ||
60 | pub(crate) syntax: SyntaxNode, | ||
61 | } | ||
62 | impl ast::AttrsOwner for ExternBlock {} | ||
63 | impl ExternBlock { | ||
64 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | ||
65 | pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) } | ||
66 | } | ||
67 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
68 | pub struct ExternCrateItem { | ||
69 | pub(crate) syntax: SyntaxNode, | ||
70 | } | ||
71 | impl ast::AttrsOwner for ExternCrateItem {} | ||
72 | impl ast::VisibilityOwner for ExternCrateItem {} | ||
73 | impl ExternCrateItem { | ||
74 | pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } | ||
75 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
76 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
77 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
78 | pub fn alias(&self) -> Option<Alias> { support::child(&self.syntax) } | ||
79 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
80 | } | ||
81 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
29 | pub struct FnDef { | 82 | pub struct FnDef { |
30 | pub(crate) syntax: SyntaxNode, | 83 | pub(crate) syntax: SyntaxNode, |
31 | } | 84 | } |
@@ -46,6 +99,131 @@ impl FnDef { | |||
46 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 99 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
47 | } | 100 | } |
48 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 101 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
102 | pub struct ImplDef { | ||
103 | pub(crate) syntax: SyntaxNode, | ||
104 | } | ||
105 | impl ast::AttrsOwner for ImplDef {} | ||
106 | impl ast::VisibilityOwner for ImplDef {} | ||
107 | impl ast::TypeParamsOwner for ImplDef {} | ||
108 | impl ImplDef { | ||
109 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
110 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
111 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
112 | pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } | ||
113 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
114 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | ||
115 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
116 | } | ||
117 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
118 | pub struct MacroCall { | ||
119 | pub(crate) syntax: SyntaxNode, | ||
120 | } | ||
121 | impl ast::AttrsOwner for MacroCall {} | ||
122 | impl ast::NameOwner for MacroCall {} | ||
123 | impl MacroCall { | ||
124 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
125 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
126 | pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } | ||
127 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
128 | } | ||
129 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
130 | pub struct Module { | ||
131 | pub(crate) syntax: SyntaxNode, | ||
132 | } | ||
133 | impl ast::AttrsOwner for Module {} | ||
134 | impl ast::NameOwner for Module {} | ||
135 | impl ast::VisibilityOwner for Module {} | ||
136 | impl Module { | ||
137 | pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) } | ||
138 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
139 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
140 | } | ||
141 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
142 | pub struct StaticDef { | ||
143 | pub(crate) syntax: SyntaxNode, | ||
144 | } | ||
145 | impl ast::AttrsOwner for StaticDef {} | ||
146 | impl ast::NameOwner for StaticDef {} | ||
147 | impl ast::VisibilityOwner for StaticDef {} | ||
148 | impl ast::TypeAscriptionOwner for StaticDef {} | ||
149 | impl StaticDef { | ||
150 | pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } | ||
151 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
152 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
153 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
154 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
155 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
156 | } | ||
157 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
158 | pub struct StructDef { | ||
159 | pub(crate) syntax: SyntaxNode, | ||
160 | } | ||
161 | impl ast::AttrsOwner for StructDef {} | ||
162 | impl ast::NameOwner for StructDef {} | ||
163 | impl ast::VisibilityOwner for StructDef {} | ||
164 | impl ast::TypeParamsOwner for StructDef {} | ||
165 | impl StructDef { | ||
166 | pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) } | ||
167 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
168 | pub fn field_def_list(&self) -> Option<FieldDefList> { support::child(&self.syntax) } | ||
169 | } | ||
170 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
171 | pub struct TraitDef { | ||
172 | pub(crate) syntax: SyntaxNode, | ||
173 | } | ||
174 | impl ast::AttrsOwner for TraitDef {} | ||
175 | impl ast::NameOwner for TraitDef {} | ||
176 | impl ast::VisibilityOwner for TraitDef {} | ||
177 | impl ast::TypeParamsOwner for TraitDef {} | ||
178 | impl ast::TypeBoundsOwner for TraitDef {} | ||
179 | impl TraitDef { | ||
180 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
181 | pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) } | ||
182 | pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) } | ||
183 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
184 | } | ||
185 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
186 | pub struct TypeAliasDef { | ||
187 | pub(crate) syntax: SyntaxNode, | ||
188 | } | ||
189 | impl ast::AttrsOwner for TypeAliasDef {} | ||
190 | impl ast::NameOwner for TypeAliasDef {} | ||
191 | impl ast::VisibilityOwner for TypeAliasDef {} | ||
192 | impl ast::TypeParamsOwner for TypeAliasDef {} | ||
193 | impl ast::TypeBoundsOwner for TypeAliasDef {} | ||
194 | impl TypeAliasDef { | ||
195 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
196 | pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) } | ||
197 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
198 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
199 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
200 | } | ||
201 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
202 | pub struct UnionDef { | ||
203 | pub(crate) syntax: SyntaxNode, | ||
204 | } | ||
205 | impl ast::AttrsOwner for UnionDef {} | ||
206 | impl ast::NameOwner for UnionDef {} | ||
207 | impl ast::VisibilityOwner for UnionDef {} | ||
208 | impl ast::TypeParamsOwner for UnionDef {} | ||
209 | impl UnionDef { | ||
210 | pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) } | ||
211 | pub fn record_field_def_list(&self) -> Option<RecordFieldDefList> { | ||
212 | support::child(&self.syntax) | ||
213 | } | ||
214 | } | ||
215 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
216 | pub struct UseItem { | ||
217 | pub(crate) syntax: SyntaxNode, | ||
218 | } | ||
219 | impl ast::AttrsOwner for UseItem {} | ||
220 | impl ast::VisibilityOwner for UseItem {} | ||
221 | impl UseItem { | ||
222 | pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) } | ||
223 | pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) } | ||
224 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
225 | } | ||
226 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
49 | pub struct Visibility { | 227 | pub struct Visibility { |
50 | pub(crate) syntax: SyntaxNode, | 228 | pub(crate) syntax: SyntaxNode, |
51 | } | 229 | } |
@@ -122,19 +300,6 @@ impl BlockExpr { | |||
122 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 300 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
123 | } | 301 | } |
124 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 302 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
125 | pub struct StructDef { | ||
126 | pub(crate) syntax: SyntaxNode, | ||
127 | } | ||
128 | impl ast::AttrsOwner for StructDef {} | ||
129 | impl ast::NameOwner for StructDef {} | ||
130 | impl ast::VisibilityOwner for StructDef {} | ||
131 | impl ast::TypeParamsOwner for StructDef {} | ||
132 | impl StructDef { | ||
133 | pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) } | ||
134 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
135 | pub fn field_def_list(&self) -> Option<FieldDefList> { support::child(&self.syntax) } | ||
136 | } | ||
137 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
138 | pub struct RecordFieldDefList { | 303 | pub struct RecordFieldDefList { |
139 | pub(crate) syntax: SyntaxNode, | 304 | pub(crate) syntax: SyntaxNode, |
140 | } | 305 | } |
@@ -153,20 +318,6 @@ impl TupleFieldDefList { | |||
153 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 318 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
154 | } | 319 | } |
155 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 320 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
156 | pub struct UnionDef { | ||
157 | pub(crate) syntax: SyntaxNode, | ||
158 | } | ||
159 | impl ast::AttrsOwner for UnionDef {} | ||
160 | impl ast::NameOwner for UnionDef {} | ||
161 | impl ast::VisibilityOwner for UnionDef {} | ||
162 | impl ast::TypeParamsOwner for UnionDef {} | ||
163 | impl UnionDef { | ||
164 | pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) } | ||
165 | pub fn record_field_def_list(&self) -> Option<RecordFieldDefList> { | ||
166 | support::child(&self.syntax) | ||
167 | } | ||
168 | } | ||
169 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
170 | pub struct RecordFieldDef { | 321 | pub struct RecordFieldDef { |
171 | pub(crate) syntax: SyntaxNode, | 322 | pub(crate) syntax: SyntaxNode, |
172 | } | 323 | } |
@@ -188,18 +339,6 @@ impl TupleFieldDef { | |||
188 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 339 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } |
189 | } | 340 | } |
190 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 341 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
191 | pub struct EnumDef { | ||
192 | pub(crate) syntax: SyntaxNode, | ||
193 | } | ||
194 | impl ast::AttrsOwner for EnumDef {} | ||
195 | impl ast::NameOwner for EnumDef {} | ||
196 | impl ast::VisibilityOwner for EnumDef {} | ||
197 | impl ast::TypeParamsOwner for EnumDef {} | ||
198 | impl EnumDef { | ||
199 | pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) } | ||
200 | pub fn variant_list(&self) -> Option<EnumVariantList> { support::child(&self.syntax) } | ||
201 | } | ||
202 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
203 | pub struct EnumVariantList { | 342 | pub struct EnumVariantList { |
204 | pub(crate) syntax: SyntaxNode, | 343 | pub(crate) syntax: SyntaxNode, |
205 | } | 344 | } |
@@ -221,21 +360,6 @@ impl EnumVariant { | |||
221 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 360 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
222 | } | 361 | } |
223 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 362 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
224 | pub struct TraitDef { | ||
225 | pub(crate) syntax: SyntaxNode, | ||
226 | } | ||
227 | impl ast::AttrsOwner for TraitDef {} | ||
228 | impl ast::NameOwner for TraitDef {} | ||
229 | impl ast::VisibilityOwner for TraitDef {} | ||
230 | impl ast::TypeParamsOwner for TraitDef {} | ||
231 | impl ast::TypeBoundsOwner for TraitDef {} | ||
232 | impl TraitDef { | ||
233 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
234 | pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) } | ||
235 | pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) } | ||
236 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
237 | } | ||
238 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
239 | pub struct TypeBoundList { | 363 | pub struct TypeBoundList { |
240 | pub(crate) syntax: SyntaxNode, | 364 | pub(crate) syntax: SyntaxNode, |
241 | } | 365 | } |
@@ -253,82 +377,6 @@ impl ItemList { | |||
253 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 377 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
254 | } | 378 | } |
255 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 379 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
256 | pub struct Module { | ||
257 | pub(crate) syntax: SyntaxNode, | ||
258 | } | ||
259 | impl ast::AttrsOwner for Module {} | ||
260 | impl ast::NameOwner for Module {} | ||
261 | impl ast::VisibilityOwner for Module {} | ||
262 | impl Module { | ||
263 | pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) } | ||
264 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
265 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
266 | } | ||
267 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
268 | pub struct ConstDef { | ||
269 | pub(crate) syntax: SyntaxNode, | ||
270 | } | ||
271 | impl ast::AttrsOwner for ConstDef {} | ||
272 | impl ast::NameOwner for ConstDef {} | ||
273 | impl ast::VisibilityOwner for ConstDef {} | ||
274 | impl ast::TypeAscriptionOwner for ConstDef {} | ||
275 | impl ConstDef { | ||
276 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
277 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
278 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
279 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
280 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
281 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
282 | } | ||
283 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
284 | pub struct StaticDef { | ||
285 | pub(crate) syntax: SyntaxNode, | ||
286 | } | ||
287 | impl ast::AttrsOwner for StaticDef {} | ||
288 | impl ast::NameOwner for StaticDef {} | ||
289 | impl ast::VisibilityOwner for StaticDef {} | ||
290 | impl ast::TypeAscriptionOwner for StaticDef {} | ||
291 | impl StaticDef { | ||
292 | pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } | ||
293 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
294 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
295 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
296 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
297 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
298 | } | ||
299 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
300 | pub struct TypeAliasDef { | ||
301 | pub(crate) syntax: SyntaxNode, | ||
302 | } | ||
303 | impl ast::AttrsOwner for TypeAliasDef {} | ||
304 | impl ast::NameOwner for TypeAliasDef {} | ||
305 | impl ast::VisibilityOwner for TypeAliasDef {} | ||
306 | impl ast::TypeParamsOwner for TypeAliasDef {} | ||
307 | impl ast::TypeBoundsOwner for TypeAliasDef {} | ||
308 | impl TypeAliasDef { | ||
309 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
310 | pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) } | ||
311 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
312 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
313 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
314 | } | ||
315 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
316 | pub struct ImplDef { | ||
317 | pub(crate) syntax: SyntaxNode, | ||
318 | } | ||
319 | impl ast::AttrsOwner for ImplDef {} | ||
320 | impl ast::VisibilityOwner for ImplDef {} | ||
321 | impl ast::TypeParamsOwner for ImplDef {} | ||
322 | impl ImplDef { | ||
323 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
324 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
325 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
326 | pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } | ||
327 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
328 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | ||
329 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
330 | } | ||
331 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
332 | pub struct ParenType { | 380 | pub struct ParenType { |
333 | pub(crate) syntax: SyntaxNode, | 381 | pub(crate) syntax: SyntaxNode, |
334 | } | 382 | } |
@@ -920,18 +968,6 @@ impl MacroPat { | |||
920 | pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) } | 968 | pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) } |
921 | } | 969 | } |
922 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 970 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
923 | pub struct MacroCall { | ||
924 | pub(crate) syntax: SyntaxNode, | ||
925 | } | ||
926 | impl ast::AttrsOwner for MacroCall {} | ||
927 | impl ast::NameOwner for MacroCall {} | ||
928 | impl MacroCall { | ||
929 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
930 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
931 | pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } | ||
932 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
933 | } | ||
934 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
935 | pub struct RecordPat { | 971 | pub struct RecordPat { |
936 | pub(crate) syntax: SyntaxNode, | 972 | pub(crate) syntax: SyntaxNode, |
937 | } | 973 | } |
@@ -1125,17 +1161,6 @@ impl Param { | |||
1125 | pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) } | 1161 | pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) } |
1126 | } | 1162 | } |
1127 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1163 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1128 | pub struct UseItem { | ||
1129 | pub(crate) syntax: SyntaxNode, | ||
1130 | } | ||
1131 | impl ast::AttrsOwner for UseItem {} | ||
1132 | impl ast::VisibilityOwner for UseItem {} | ||
1133 | impl UseItem { | ||
1134 | pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) } | ||
1135 | pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) } | ||
1136 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
1137 | } | ||
1138 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1139 | pub struct UseTree { | 1164 | pub struct UseTree { |
1140 | pub(crate) syntax: SyntaxNode, | 1165 | pub(crate) syntax: SyntaxNode, |
1141 | } | 1166 | } |
@@ -1164,20 +1189,6 @@ impl Alias { | |||
1164 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } | 1189 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } |
1165 | } | 1190 | } |
1166 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1191 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1167 | pub struct ExternCrateItem { | ||
1168 | pub(crate) syntax: SyntaxNode, | ||
1169 | } | ||
1170 | impl ast::AttrsOwner for ExternCrateItem {} | ||
1171 | impl ast::VisibilityOwner for ExternCrateItem {} | ||
1172 | impl ExternCrateItem { | ||
1173 | pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } | ||
1174 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
1175 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
1176 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
1177 | pub fn alias(&self) -> Option<Alias> { support::child(&self.syntax) } | ||
1178 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
1179 | } | ||
1180 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1181 | pub struct PathSegment { | 1192 | pub struct PathSegment { |
1182 | pub(crate) syntax: SyntaxNode, | 1193 | pub(crate) syntax: SyntaxNode, |
1183 | } | 1194 | } |
@@ -1229,15 +1240,6 @@ impl ConstArg { | |||
1229 | pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) } | 1240 | pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) } |
1230 | } | 1241 | } |
1231 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1242 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1232 | pub struct ExternBlock { | ||
1233 | pub(crate) syntax: SyntaxNode, | ||
1234 | } | ||
1235 | impl ast::AttrsOwner for ExternBlock {} | ||
1236 | impl ExternBlock { | ||
1237 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | ||
1238 | pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) } | ||
1239 | } | ||
1240 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1241 | pub struct ExternItemList { | 1243 | pub struct ExternItemList { |
1242 | pub(crate) syntax: SyntaxNode, | 1244 | pub(crate) syntax: SyntaxNode, |
1243 | } | 1245 | } |
@@ -1257,23 +1259,23 @@ impl MetaItem { | |||
1257 | pub fn nested_meta_items(&self) -> AstChildren<MetaItem> { support::children(&self.syntax) } | 1259 | pub fn nested_meta_items(&self) -> AstChildren<MetaItem> { support::children(&self.syntax) } |
1258 | } | 1260 | } |
1259 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1261 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1260 | pub enum ModuleItem { | 1262 | pub enum Item { |
1261 | StructDef(StructDef), | 1263 | ConstDef(ConstDef), |
1262 | UnionDef(UnionDef), | ||
1263 | EnumDef(EnumDef), | 1264 | EnumDef(EnumDef), |
1265 | ExternBlock(ExternBlock), | ||
1266 | ExternCrateItem(ExternCrateItem), | ||
1264 | FnDef(FnDef), | 1267 | FnDef(FnDef), |
1268 | ImplDef(ImplDef), | ||
1269 | MacroCall(MacroCall), | ||
1270 | Module(Module), | ||
1271 | StaticDef(StaticDef), | ||
1272 | StructDef(StructDef), | ||
1265 | TraitDef(TraitDef), | 1273 | TraitDef(TraitDef), |
1266 | TypeAliasDef(TypeAliasDef), | 1274 | TypeAliasDef(TypeAliasDef), |
1267 | ImplDef(ImplDef), | 1275 | UnionDef(UnionDef), |
1268 | UseItem(UseItem), | 1276 | UseItem(UseItem), |
1269 | ExternCrateItem(ExternCrateItem), | ||
1270 | ConstDef(ConstDef), | ||
1271 | StaticDef(StaticDef), | ||
1272 | Module(Module), | ||
1273 | MacroCall(MacroCall), | ||
1274 | ExternBlock(ExternBlock), | ||
1275 | } | 1277 | } |
1276 | impl ast::AttrsOwner for ModuleItem {} | 1278 | impl ast::AttrsOwner for Item {} |
1277 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1279 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1278 | pub enum TypeRef { | 1280 | pub enum TypeRef { |
1279 | ParenType(ParenType), | 1281 | ParenType(ParenType), |
@@ -1407,8 +1409,8 @@ impl AstNode for Attr { | |||
1407 | } | 1409 | } |
1408 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1410 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1409 | } | 1411 | } |
1410 | impl AstNode for FnDef { | 1412 | impl AstNode for ConstDef { |
1411 | fn can_cast(kind: SyntaxKind) -> bool { kind == FN_DEF } | 1413 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_DEF } |
1412 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1414 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1413 | if Self::can_cast(syntax.kind()) { | 1415 | if Self::can_cast(syntax.kind()) { |
1414 | Some(Self { syntax }) | 1416 | Some(Self { syntax }) |
@@ -1418,8 +1420,8 @@ impl AstNode for FnDef { | |||
1418 | } | 1420 | } |
1419 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1421 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1420 | } | 1422 | } |
1421 | impl AstNode for Visibility { | 1423 | impl AstNode for EnumDef { |
1422 | fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY } | 1424 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_DEF } |
1423 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1425 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1424 | if Self::can_cast(syntax.kind()) { | 1426 | if Self::can_cast(syntax.kind()) { |
1425 | Some(Self { syntax }) | 1427 | Some(Self { syntax }) |
@@ -1429,8 +1431,8 @@ impl AstNode for Visibility { | |||
1429 | } | 1431 | } |
1430 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1432 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1431 | } | 1433 | } |
1432 | impl AstNode for Abi { | 1434 | impl AstNode for ExternBlock { |
1433 | fn can_cast(kind: SyntaxKind) -> bool { kind == ABI } | 1435 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK } |
1434 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1436 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1435 | if Self::can_cast(syntax.kind()) { | 1437 | if Self::can_cast(syntax.kind()) { |
1436 | Some(Self { syntax }) | 1438 | Some(Self { syntax }) |
@@ -1440,8 +1442,8 @@ impl AstNode for Abi { | |||
1440 | } | 1442 | } |
1441 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1443 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1442 | } | 1444 | } |
1443 | impl AstNode for Name { | 1445 | impl AstNode for ExternCrateItem { |
1444 | fn can_cast(kind: SyntaxKind) -> bool { kind == NAME } | 1446 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE_ITEM } |
1445 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1447 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1446 | if Self::can_cast(syntax.kind()) { | 1448 | if Self::can_cast(syntax.kind()) { |
1447 | Some(Self { syntax }) | 1449 | Some(Self { syntax }) |
@@ -1451,8 +1453,8 @@ impl AstNode for Name { | |||
1451 | } | 1453 | } |
1452 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1454 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1453 | } | 1455 | } |
1454 | impl AstNode for TypeParamList { | 1456 | impl AstNode for FnDef { |
1455 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM_LIST } | 1457 | fn can_cast(kind: SyntaxKind) -> bool { kind == FN_DEF } |
1456 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1458 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1457 | if Self::can_cast(syntax.kind()) { | 1459 | if Self::can_cast(syntax.kind()) { |
1458 | Some(Self { syntax }) | 1460 | Some(Self { syntax }) |
@@ -1462,8 +1464,8 @@ impl AstNode for TypeParamList { | |||
1462 | } | 1464 | } |
1463 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1465 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1464 | } | 1466 | } |
1465 | impl AstNode for ParamList { | 1467 | impl AstNode for ImplDef { |
1466 | fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST } | 1468 | fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_DEF } |
1467 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1469 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1468 | if Self::can_cast(syntax.kind()) { | 1470 | if Self::can_cast(syntax.kind()) { |
1469 | Some(Self { syntax }) | 1471 | Some(Self { syntax }) |
@@ -1473,8 +1475,8 @@ impl AstNode for ParamList { | |||
1473 | } | 1475 | } |
1474 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1476 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1475 | } | 1477 | } |
1476 | impl AstNode for RetType { | 1478 | impl AstNode for MacroCall { |
1477 | fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE } | 1479 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL } |
1478 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1480 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1479 | if Self::can_cast(syntax.kind()) { | 1481 | if Self::can_cast(syntax.kind()) { |
1480 | Some(Self { syntax }) | 1482 | Some(Self { syntax }) |
@@ -1484,8 +1486,8 @@ impl AstNode for RetType { | |||
1484 | } | 1486 | } |
1485 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1487 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1486 | } | 1488 | } |
1487 | impl AstNode for WhereClause { | 1489 | impl AstNode for Module { |
1488 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE } | 1490 | fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE } |
1489 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1491 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1490 | if Self::can_cast(syntax.kind()) { | 1492 | if Self::can_cast(syntax.kind()) { |
1491 | Some(Self { syntax }) | 1493 | Some(Self { syntax }) |
@@ -1495,8 +1497,8 @@ impl AstNode for WhereClause { | |||
1495 | } | 1497 | } |
1496 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1498 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1497 | } | 1499 | } |
1498 | impl AstNode for BlockExpr { | 1500 | impl AstNode for StaticDef { |
1499 | fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR } | 1501 | fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC_DEF } |
1500 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1502 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1501 | if Self::can_cast(syntax.kind()) { | 1503 | if Self::can_cast(syntax.kind()) { |
1502 | Some(Self { syntax }) | 1504 | Some(Self { syntax }) |
@@ -1517,8 +1519,8 @@ impl AstNode for StructDef { | |||
1517 | } | 1519 | } |
1518 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1520 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1519 | } | 1521 | } |
1520 | impl AstNode for RecordFieldDefList { | 1522 | impl AstNode for TraitDef { |
1521 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_DEF_LIST } | 1523 | fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT_DEF } |
1522 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1524 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1523 | if Self::can_cast(syntax.kind()) { | 1525 | if Self::can_cast(syntax.kind()) { |
1524 | Some(Self { syntax }) | 1526 | Some(Self { syntax }) |
@@ -1528,8 +1530,8 @@ impl AstNode for RecordFieldDefList { | |||
1528 | } | 1530 | } |
1529 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1531 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1530 | } | 1532 | } |
1531 | impl AstNode for TupleFieldDefList { | 1533 | impl AstNode for TypeAliasDef { |
1532 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_DEF_LIST } | 1534 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS_DEF } |
1533 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1535 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1534 | if Self::can_cast(syntax.kind()) { | 1536 | if Self::can_cast(syntax.kind()) { |
1535 | Some(Self { syntax }) | 1537 | Some(Self { syntax }) |
@@ -1550,8 +1552,8 @@ impl AstNode for UnionDef { | |||
1550 | } | 1552 | } |
1551 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1553 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1552 | } | 1554 | } |
1553 | impl AstNode for RecordFieldDef { | 1555 | impl AstNode for UseItem { |
1554 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_DEF } | 1556 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_ITEM } |
1555 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1557 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1556 | if Self::can_cast(syntax.kind()) { | 1558 | if Self::can_cast(syntax.kind()) { |
1557 | Some(Self { syntax }) | 1559 | Some(Self { syntax }) |
@@ -1561,8 +1563,8 @@ impl AstNode for RecordFieldDef { | |||
1561 | } | 1563 | } |
1562 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1564 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1563 | } | 1565 | } |
1564 | impl AstNode for TupleFieldDef { | 1566 | impl AstNode for Visibility { |
1565 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_DEF } | 1567 | fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY } |
1566 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1568 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1567 | if Self::can_cast(syntax.kind()) { | 1569 | if Self::can_cast(syntax.kind()) { |
1568 | Some(Self { syntax }) | 1570 | Some(Self { syntax }) |
@@ -1572,8 +1574,8 @@ impl AstNode for TupleFieldDef { | |||
1572 | } | 1574 | } |
1573 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1575 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1574 | } | 1576 | } |
1575 | impl AstNode for EnumDef { | 1577 | impl AstNode for Abi { |
1576 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_DEF } | 1578 | fn can_cast(kind: SyntaxKind) -> bool { kind == ABI } |
1577 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1579 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1578 | if Self::can_cast(syntax.kind()) { | 1580 | if Self::can_cast(syntax.kind()) { |
1579 | Some(Self { syntax }) | 1581 | Some(Self { syntax }) |
@@ -1583,8 +1585,8 @@ impl AstNode for EnumDef { | |||
1583 | } | 1585 | } |
1584 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1586 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1585 | } | 1587 | } |
1586 | impl AstNode for EnumVariantList { | 1588 | impl AstNode for Name { |
1587 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_VARIANT_LIST } | 1589 | fn can_cast(kind: SyntaxKind) -> bool { kind == NAME } |
1588 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1590 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1589 | if Self::can_cast(syntax.kind()) { | 1591 | if Self::can_cast(syntax.kind()) { |
1590 | Some(Self { syntax }) | 1592 | Some(Self { syntax }) |
@@ -1594,8 +1596,8 @@ impl AstNode for EnumVariantList { | |||
1594 | } | 1596 | } |
1595 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1597 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1596 | } | 1598 | } |
1597 | impl AstNode for EnumVariant { | 1599 | impl AstNode for TypeParamList { |
1598 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_VARIANT } | 1600 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM_LIST } |
1599 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1601 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1600 | if Self::can_cast(syntax.kind()) { | 1602 | if Self::can_cast(syntax.kind()) { |
1601 | Some(Self { syntax }) | 1603 | Some(Self { syntax }) |
@@ -1605,8 +1607,8 @@ impl AstNode for EnumVariant { | |||
1605 | } | 1607 | } |
1606 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1608 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1607 | } | 1609 | } |
1608 | impl AstNode for TraitDef { | 1610 | impl AstNode for ParamList { |
1609 | fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT_DEF } | 1611 | fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST } |
1610 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1612 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1611 | if Self::can_cast(syntax.kind()) { | 1613 | if Self::can_cast(syntax.kind()) { |
1612 | Some(Self { syntax }) | 1614 | Some(Self { syntax }) |
@@ -1616,8 +1618,8 @@ impl AstNode for TraitDef { | |||
1616 | } | 1618 | } |
1617 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1619 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1618 | } | 1620 | } |
1619 | impl AstNode for TypeBoundList { | 1621 | impl AstNode for RetType { |
1620 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST } | 1622 | fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE } |
1621 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1623 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1622 | if Self::can_cast(syntax.kind()) { | 1624 | if Self::can_cast(syntax.kind()) { |
1623 | Some(Self { syntax }) | 1625 | Some(Self { syntax }) |
@@ -1627,8 +1629,8 @@ impl AstNode for TypeBoundList { | |||
1627 | } | 1629 | } |
1628 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1630 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1629 | } | 1631 | } |
1630 | impl AstNode for ItemList { | 1632 | impl AstNode for WhereClause { |
1631 | fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST } | 1633 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE } |
1632 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1634 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1633 | if Self::can_cast(syntax.kind()) { | 1635 | if Self::can_cast(syntax.kind()) { |
1634 | Some(Self { syntax }) | 1636 | Some(Self { syntax }) |
@@ -1638,8 +1640,8 @@ impl AstNode for ItemList { | |||
1638 | } | 1640 | } |
1639 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1641 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1640 | } | 1642 | } |
1641 | impl AstNode for Module { | 1643 | impl AstNode for BlockExpr { |
1642 | fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE } | 1644 | fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR } |
1643 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1645 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1644 | if Self::can_cast(syntax.kind()) { | 1646 | if Self::can_cast(syntax.kind()) { |
1645 | Some(Self { syntax }) | 1647 | Some(Self { syntax }) |
@@ -1649,8 +1651,8 @@ impl AstNode for Module { | |||
1649 | } | 1651 | } |
1650 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1652 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1651 | } | 1653 | } |
1652 | impl AstNode for ConstDef { | 1654 | impl AstNode for RecordFieldDefList { |
1653 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_DEF } | 1655 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_DEF_LIST } |
1654 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1656 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1655 | if Self::can_cast(syntax.kind()) { | 1657 | if Self::can_cast(syntax.kind()) { |
1656 | Some(Self { syntax }) | 1658 | Some(Self { syntax }) |
@@ -1660,8 +1662,8 @@ impl AstNode for ConstDef { | |||
1660 | } | 1662 | } |
1661 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1663 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1662 | } | 1664 | } |
1663 | impl AstNode for StaticDef { | 1665 | impl AstNode for TupleFieldDefList { |
1664 | fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC_DEF } | 1666 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_DEF_LIST } |
1665 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1667 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1666 | if Self::can_cast(syntax.kind()) { | 1668 | if Self::can_cast(syntax.kind()) { |
1667 | Some(Self { syntax }) | 1669 | Some(Self { syntax }) |
@@ -1671,8 +1673,8 @@ impl AstNode for StaticDef { | |||
1671 | } | 1673 | } |
1672 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1674 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1673 | } | 1675 | } |
1674 | impl AstNode for TypeAliasDef { | 1676 | impl AstNode for RecordFieldDef { |
1675 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS_DEF } | 1677 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_DEF } |
1676 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1678 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1677 | if Self::can_cast(syntax.kind()) { | 1679 | if Self::can_cast(syntax.kind()) { |
1678 | Some(Self { syntax }) | 1680 | Some(Self { syntax }) |
@@ -1682,8 +1684,52 @@ impl AstNode for TypeAliasDef { | |||
1682 | } | 1684 | } |
1683 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1685 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
1684 | } | 1686 | } |
1685 | impl AstNode for ImplDef { | 1687 | impl AstNode for TupleFieldDef { |
1686 | fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_DEF } | 1688 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_DEF } |
1689 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
1690 | if Self::can_cast(syntax.kind()) { | ||
1691 | Some(Self { syntax }) | ||
1692 | } else { | ||
1693 | None | ||
1694 | } | ||
1695 | } | ||
1696 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
1697 | } | ||
1698 | impl AstNode for EnumVariantList { | ||
1699 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_VARIANT_LIST } | ||
1700 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
1701 | if Self::can_cast(syntax.kind()) { | ||
1702 | Some(Self { syntax }) | ||
1703 | } else { | ||
1704 | None | ||
1705 | } | ||
1706 | } | ||
1707 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
1708 | } | ||
1709 | impl AstNode for EnumVariant { | ||
1710 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_VARIANT } | ||
1711 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
1712 | if Self::can_cast(syntax.kind()) { | ||
1713 | Some(Self { syntax }) | ||
1714 | } else { | ||
1715 | None | ||
1716 | } | ||
1717 | } | ||
1718 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
1719 | } | ||
1720 | impl AstNode for TypeBoundList { | ||
1721 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST } | ||
1722 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
1723 | if Self::can_cast(syntax.kind()) { | ||
1724 | Some(Self { syntax }) | ||
1725 | } else { | ||
1726 | None | ||
1727 | } | ||
1728 | } | ||
1729 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
1730 | } | ||
1731 | impl AstNode for ItemList { | ||
1732 | fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST } | ||
1687 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1733 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
1688 | if Self::can_cast(syntax.kind()) { | 1734 | if Self::can_cast(syntax.kind()) { |
1689 | Some(Self { syntax }) | 1735 | Some(Self { syntax }) |
@@ -2397,17 +2443,6 @@ impl AstNode for MacroPat { | |||
2397 | } | 2443 | } |
2398 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2444 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2399 | } | 2445 | } |
2400 | impl AstNode for MacroCall { | ||
2401 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL } | ||
2402 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
2403 | if Self::can_cast(syntax.kind()) { | ||
2404 | Some(Self { syntax }) | ||
2405 | } else { | ||
2406 | None | ||
2407 | } | ||
2408 | } | ||
2409 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
2410 | } | ||
2411 | impl AstNode for RecordPat { | 2446 | impl AstNode for RecordPat { |
2412 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT } | 2447 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT } |
2413 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2448 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
@@ -2606,17 +2641,6 @@ impl AstNode for Param { | |||
2606 | } | 2641 | } |
2607 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2642 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2608 | } | 2643 | } |
2609 | impl AstNode for UseItem { | ||
2610 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_ITEM } | ||
2611 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
2612 | if Self::can_cast(syntax.kind()) { | ||
2613 | Some(Self { syntax }) | ||
2614 | } else { | ||
2615 | None | ||
2616 | } | ||
2617 | } | ||
2618 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
2619 | } | ||
2620 | impl AstNode for UseTree { | 2644 | impl AstNode for UseTree { |
2621 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE } | 2645 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE } |
2622 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2646 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
@@ -2650,17 +2674,6 @@ impl AstNode for Alias { | |||
2650 | } | 2674 | } |
2651 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2675 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2652 | } | 2676 | } |
2653 | impl AstNode for ExternCrateItem { | ||
2654 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE_ITEM } | ||
2655 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
2656 | if Self::can_cast(syntax.kind()) { | ||
2657 | Some(Self { syntax }) | ||
2658 | } else { | ||
2659 | None | ||
2660 | } | ||
2661 | } | ||
2662 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
2663 | } | ||
2664 | impl AstNode for PathSegment { | 2677 | impl AstNode for PathSegment { |
2665 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT } | 2678 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT } |
2666 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2679 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
@@ -2716,17 +2729,6 @@ impl AstNode for ConstArg { | |||
2716 | } | 2729 | } |
2717 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2730 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2718 | } | 2731 | } |
2719 | impl AstNode for ExternBlock { | ||
2720 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK } | ||
2721 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
2722 | if Self::can_cast(syntax.kind()) { | ||
2723 | Some(Self { syntax }) | ||
2724 | } else { | ||
2725 | None | ||
2726 | } | ||
2727 | } | ||
2728 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
2729 | } | ||
2730 | impl AstNode for ExternItemList { | 2732 | impl AstNode for ExternItemList { |
2731 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST } | 2733 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST } |
2732 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2734 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
@@ -2749,93 +2751,93 @@ impl AstNode for MetaItem { | |||
2749 | } | 2751 | } |
2750 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2752 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2751 | } | 2753 | } |
2752 | impl From<StructDef> for ModuleItem { | 2754 | impl From<ConstDef> for Item { |
2753 | fn from(node: StructDef) -> ModuleItem { ModuleItem::StructDef(node) } | 2755 | fn from(node: ConstDef) -> Item { Item::ConstDef(node) } |
2754 | } | 2756 | } |
2755 | impl From<UnionDef> for ModuleItem { | 2757 | impl From<EnumDef> for Item { |
2756 | fn from(node: UnionDef) -> ModuleItem { ModuleItem::UnionDef(node) } | 2758 | fn from(node: EnumDef) -> Item { Item::EnumDef(node) } |
2757 | } | 2759 | } |
2758 | impl From<EnumDef> for ModuleItem { | 2760 | impl From<ExternBlock> for Item { |
2759 | fn from(node: EnumDef) -> ModuleItem { ModuleItem::EnumDef(node) } | 2761 | fn from(node: ExternBlock) -> Item { Item::ExternBlock(node) } |
2760 | } | 2762 | } |
2761 | impl From<FnDef> for ModuleItem { | 2763 | impl From<ExternCrateItem> for Item { |
2762 | fn from(node: FnDef) -> ModuleItem { ModuleItem::FnDef(node) } | 2764 | fn from(node: ExternCrateItem) -> Item { Item::ExternCrateItem(node) } |
2763 | } | 2765 | } |
2764 | impl From<TraitDef> for ModuleItem { | 2766 | impl From<FnDef> for Item { |
2765 | fn from(node: TraitDef) -> ModuleItem { ModuleItem::TraitDef(node) } | 2767 | fn from(node: FnDef) -> Item { Item::FnDef(node) } |
2766 | } | 2768 | } |
2767 | impl From<TypeAliasDef> for ModuleItem { | 2769 | impl From<ImplDef> for Item { |
2768 | fn from(node: TypeAliasDef) -> ModuleItem { ModuleItem::TypeAliasDef(node) } | 2770 | fn from(node: ImplDef) -> Item { Item::ImplDef(node) } |
2769 | } | 2771 | } |
2770 | impl From<ImplDef> for ModuleItem { | 2772 | impl From<MacroCall> for Item { |
2771 | fn from(node: ImplDef) -> ModuleItem { ModuleItem::ImplDef(node) } | 2773 | fn from(node: MacroCall) -> Item { Item::MacroCall(node) } |
2772 | } | 2774 | } |
2773 | impl From<UseItem> for ModuleItem { | 2775 | impl From<Module> for Item { |
2774 | fn from(node: UseItem) -> ModuleItem { ModuleItem::UseItem(node) } | 2776 | fn from(node: Module) -> Item { Item::Module(node) } |
2775 | } | 2777 | } |
2776 | impl From<ExternCrateItem> for ModuleItem { | 2778 | impl From<StaticDef> for Item { |
2777 | fn from(node: ExternCrateItem) -> ModuleItem { ModuleItem::ExternCrateItem(node) } | 2779 | fn from(node: StaticDef) -> Item { Item::StaticDef(node) } |
2778 | } | 2780 | } |
2779 | impl From<ConstDef> for ModuleItem { | 2781 | impl From<StructDef> for Item { |
2780 | fn from(node: ConstDef) -> ModuleItem { ModuleItem::ConstDef(node) } | 2782 | fn from(node: StructDef) -> Item { Item::StructDef(node) } |
2781 | } | 2783 | } |
2782 | impl From<StaticDef> for ModuleItem { | 2784 | impl From<TraitDef> for Item { |
2783 | fn from(node: StaticDef) -> ModuleItem { ModuleItem::StaticDef(node) } | 2785 | fn from(node: TraitDef) -> Item { Item::TraitDef(node) } |
2784 | } | 2786 | } |
2785 | impl From<Module> for ModuleItem { | 2787 | impl From<TypeAliasDef> for Item { |
2786 | fn from(node: Module) -> ModuleItem { ModuleItem::Module(node) } | 2788 | fn from(node: TypeAliasDef) -> Item { Item::TypeAliasDef(node) } |
2787 | } | 2789 | } |
2788 | impl From<MacroCall> for ModuleItem { | 2790 | impl From<UnionDef> for Item { |
2789 | fn from(node: MacroCall) -> ModuleItem { ModuleItem::MacroCall(node) } | 2791 | fn from(node: UnionDef) -> Item { Item::UnionDef(node) } |
2790 | } | 2792 | } |
2791 | impl From<ExternBlock> for ModuleItem { | 2793 | impl From<UseItem> for Item { |
2792 | fn from(node: ExternBlock) -> ModuleItem { ModuleItem::ExternBlock(node) } | 2794 | fn from(node: UseItem) -> Item { Item::UseItem(node) } |
2793 | } | 2795 | } |
2794 | impl AstNode for ModuleItem { | 2796 | impl AstNode for Item { |
2795 | fn can_cast(kind: SyntaxKind) -> bool { | 2797 | fn can_cast(kind: SyntaxKind) -> bool { |
2796 | match kind { | 2798 | match kind { |
2797 | STRUCT_DEF | UNION_DEF | ENUM_DEF | FN_DEF | TRAIT_DEF | TYPE_ALIAS_DEF | IMPL_DEF | 2799 | CONST_DEF | ENUM_DEF | EXTERN_BLOCK | EXTERN_CRATE_ITEM | FN_DEF | IMPL_DEF |
2798 | | USE_ITEM | EXTERN_CRATE_ITEM | CONST_DEF | STATIC_DEF | MODULE | MACRO_CALL | 2800 | | MACRO_CALL | MODULE | STATIC_DEF | STRUCT_DEF | TRAIT_DEF | TYPE_ALIAS_DEF |
2799 | | EXTERN_BLOCK => true, | 2801 | | UNION_DEF | USE_ITEM => true, |
2800 | _ => false, | 2802 | _ => false, |
2801 | } | 2803 | } |
2802 | } | 2804 | } |
2803 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2805 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2804 | let res = match syntax.kind() { | 2806 | let res = match syntax.kind() { |
2805 | STRUCT_DEF => ModuleItem::StructDef(StructDef { syntax }), | 2807 | CONST_DEF => Item::ConstDef(ConstDef { syntax }), |
2806 | UNION_DEF => ModuleItem::UnionDef(UnionDef { syntax }), | 2808 | ENUM_DEF => Item::EnumDef(EnumDef { syntax }), |
2807 | ENUM_DEF => ModuleItem::EnumDef(EnumDef { syntax }), | 2809 | EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }), |
2808 | FN_DEF => ModuleItem::FnDef(FnDef { syntax }), | 2810 | EXTERN_CRATE_ITEM => Item::ExternCrateItem(ExternCrateItem { syntax }), |
2809 | TRAIT_DEF => ModuleItem::TraitDef(TraitDef { syntax }), | 2811 | FN_DEF => Item::FnDef(FnDef { syntax }), |
2810 | TYPE_ALIAS_DEF => ModuleItem::TypeAliasDef(TypeAliasDef { syntax }), | 2812 | IMPL_DEF => Item::ImplDef(ImplDef { syntax }), |
2811 | IMPL_DEF => ModuleItem::ImplDef(ImplDef { syntax }), | 2813 | MACRO_CALL => Item::MacroCall(MacroCall { syntax }), |
2812 | USE_ITEM => ModuleItem::UseItem(UseItem { syntax }), | 2814 | MODULE => Item::Module(Module { syntax }), |
2813 | EXTERN_CRATE_ITEM => ModuleItem::ExternCrateItem(ExternCrateItem { syntax }), | 2815 | STATIC_DEF => Item::StaticDef(StaticDef { syntax }), |
2814 | CONST_DEF => ModuleItem::ConstDef(ConstDef { syntax }), | 2816 | STRUCT_DEF => Item::StructDef(StructDef { syntax }), |
2815 | STATIC_DEF => ModuleItem::StaticDef(StaticDef { syntax }), | 2817 | TRAIT_DEF => Item::TraitDef(TraitDef { syntax }), |
2816 | MODULE => ModuleItem::Module(Module { syntax }), | 2818 | TYPE_ALIAS_DEF => Item::TypeAliasDef(TypeAliasDef { syntax }), |
2817 | MACRO_CALL => ModuleItem::MacroCall(MacroCall { syntax }), | 2819 | UNION_DEF => Item::UnionDef(UnionDef { syntax }), |
2818 | EXTERN_BLOCK => ModuleItem::ExternBlock(ExternBlock { syntax }), | 2820 | USE_ITEM => Item::UseItem(UseItem { syntax }), |
2819 | _ => return None, | 2821 | _ => return None, |
2820 | }; | 2822 | }; |
2821 | Some(res) | 2823 | Some(res) |
2822 | } | 2824 | } |
2823 | fn syntax(&self) -> &SyntaxNode { | 2825 | fn syntax(&self) -> &SyntaxNode { |
2824 | match self { | 2826 | match self { |
2825 | ModuleItem::StructDef(it) => &it.syntax, | 2827 | Item::ConstDef(it) => &it.syntax, |
2826 | ModuleItem::UnionDef(it) => &it.syntax, | 2828 | Item::EnumDef(it) => &it.syntax, |
2827 | ModuleItem::EnumDef(it) => &it.syntax, | 2829 | Item::ExternBlock(it) => &it.syntax, |
2828 | ModuleItem::FnDef(it) => &it.syntax, | 2830 | Item::ExternCrateItem(it) => &it.syntax, |
2829 | ModuleItem::TraitDef(it) => &it.syntax, | 2831 | Item::FnDef(it) => &it.syntax, |
2830 | ModuleItem::TypeAliasDef(it) => &it.syntax, | 2832 | Item::ImplDef(it) => &it.syntax, |
2831 | ModuleItem::ImplDef(it) => &it.syntax, | 2833 | Item::MacroCall(it) => &it.syntax, |
2832 | ModuleItem::UseItem(it) => &it.syntax, | 2834 | Item::Module(it) => &it.syntax, |
2833 | ModuleItem::ExternCrateItem(it) => &it.syntax, | 2835 | Item::StaticDef(it) => &it.syntax, |
2834 | ModuleItem::ConstDef(it) => &it.syntax, | 2836 | Item::StructDef(it) => &it.syntax, |
2835 | ModuleItem::StaticDef(it) => &it.syntax, | 2837 | Item::TraitDef(it) => &it.syntax, |
2836 | ModuleItem::Module(it) => &it.syntax, | 2838 | Item::TypeAliasDef(it) => &it.syntax, |
2837 | ModuleItem::MacroCall(it) => &it.syntax, | 2839 | Item::UnionDef(it) => &it.syntax, |
2838 | ModuleItem::ExternBlock(it) => &it.syntax, | 2840 | Item::UseItem(it) => &it.syntax, |
2839 | } | 2841 | } |
2840 | } | 2842 | } |
2841 | } | 2843 | } |
@@ -3378,7 +3380,7 @@ impl AstNode for AdtDef { | |||
3378 | } | 3380 | } |
3379 | } | 3381 | } |
3380 | } | 3382 | } |
3381 | impl std::fmt::Display for ModuleItem { | 3383 | impl std::fmt::Display for Item { |
3382 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3384 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3383 | std::fmt::Display::fmt(self.syntax(), f) | 3385 | std::fmt::Display::fmt(self.syntax(), f) |
3384 | } | 3386 | } |
@@ -3438,47 +3440,47 @@ impl std::fmt::Display for Attr { | |||
3438 | std::fmt::Display::fmt(self.syntax(), f) | 3440 | std::fmt::Display::fmt(self.syntax(), f) |
3439 | } | 3441 | } |
3440 | } | 3442 | } |
3441 | impl std::fmt::Display for FnDef { | 3443 | impl std::fmt::Display for ConstDef { |
3442 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3444 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3443 | std::fmt::Display::fmt(self.syntax(), f) | 3445 | std::fmt::Display::fmt(self.syntax(), f) |
3444 | } | 3446 | } |
3445 | } | 3447 | } |
3446 | impl std::fmt::Display for Visibility { | 3448 | impl std::fmt::Display for EnumDef { |
3447 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3449 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3448 | std::fmt::Display::fmt(self.syntax(), f) | 3450 | std::fmt::Display::fmt(self.syntax(), f) |
3449 | } | 3451 | } |
3450 | } | 3452 | } |
3451 | impl std::fmt::Display for Abi { | 3453 | impl std::fmt::Display for ExternBlock { |
3452 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3454 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3453 | std::fmt::Display::fmt(self.syntax(), f) | 3455 | std::fmt::Display::fmt(self.syntax(), f) |
3454 | } | 3456 | } |
3455 | } | 3457 | } |
3456 | impl std::fmt::Display for Name { | 3458 | impl std::fmt::Display for ExternCrateItem { |
3457 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3459 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3458 | std::fmt::Display::fmt(self.syntax(), f) | 3460 | std::fmt::Display::fmt(self.syntax(), f) |
3459 | } | 3461 | } |
3460 | } | 3462 | } |
3461 | impl std::fmt::Display for TypeParamList { | 3463 | impl std::fmt::Display for FnDef { |
3462 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3464 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3463 | std::fmt::Display::fmt(self.syntax(), f) | 3465 | std::fmt::Display::fmt(self.syntax(), f) |
3464 | } | 3466 | } |
3465 | } | 3467 | } |
3466 | impl std::fmt::Display for ParamList { | 3468 | impl std::fmt::Display for ImplDef { |
3467 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3469 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3468 | std::fmt::Display::fmt(self.syntax(), f) | 3470 | std::fmt::Display::fmt(self.syntax(), f) |
3469 | } | 3471 | } |
3470 | } | 3472 | } |
3471 | impl std::fmt::Display for RetType { | 3473 | impl std::fmt::Display for MacroCall { |
3472 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3474 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3473 | std::fmt::Display::fmt(self.syntax(), f) | 3475 | std::fmt::Display::fmt(self.syntax(), f) |
3474 | } | 3476 | } |
3475 | } | 3477 | } |
3476 | impl std::fmt::Display for WhereClause { | 3478 | impl std::fmt::Display for Module { |
3477 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3479 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3478 | std::fmt::Display::fmt(self.syntax(), f) | 3480 | std::fmt::Display::fmt(self.syntax(), f) |
3479 | } | 3481 | } |
3480 | } | 3482 | } |
3481 | impl std::fmt::Display for BlockExpr { | 3483 | impl std::fmt::Display for StaticDef { |
3482 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3484 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3483 | std::fmt::Display::fmt(self.syntax(), f) | 3485 | std::fmt::Display::fmt(self.syntax(), f) |
3484 | } | 3486 | } |
@@ -3488,12 +3490,12 @@ impl std::fmt::Display for StructDef { | |||
3488 | std::fmt::Display::fmt(self.syntax(), f) | 3490 | std::fmt::Display::fmt(self.syntax(), f) |
3489 | } | 3491 | } |
3490 | } | 3492 | } |
3491 | impl std::fmt::Display for RecordFieldDefList { | 3493 | impl std::fmt::Display for TraitDef { |
3492 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3494 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3493 | std::fmt::Display::fmt(self.syntax(), f) | 3495 | std::fmt::Display::fmt(self.syntax(), f) |
3494 | } | 3496 | } |
3495 | } | 3497 | } |
3496 | impl std::fmt::Display for TupleFieldDefList { | 3498 | impl std::fmt::Display for TypeAliasDef { |
3497 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3499 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3498 | std::fmt::Display::fmt(self.syntax(), f) | 3500 | std::fmt::Display::fmt(self.syntax(), f) |
3499 | } | 3501 | } |
@@ -3503,67 +3505,87 @@ impl std::fmt::Display for UnionDef { | |||
3503 | std::fmt::Display::fmt(self.syntax(), f) | 3505 | std::fmt::Display::fmt(self.syntax(), f) |
3504 | } | 3506 | } |
3505 | } | 3507 | } |
3506 | impl std::fmt::Display for RecordFieldDef { | 3508 | impl std::fmt::Display for UseItem { |
3507 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3509 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3508 | std::fmt::Display::fmt(self.syntax(), f) | 3510 | std::fmt::Display::fmt(self.syntax(), f) |
3509 | } | 3511 | } |
3510 | } | 3512 | } |
3511 | impl std::fmt::Display for TupleFieldDef { | 3513 | impl std::fmt::Display for Visibility { |
3512 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3514 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3513 | std::fmt::Display::fmt(self.syntax(), f) | 3515 | std::fmt::Display::fmt(self.syntax(), f) |
3514 | } | 3516 | } |
3515 | } | 3517 | } |
3516 | impl std::fmt::Display for EnumDef { | 3518 | impl std::fmt::Display for Abi { |
3517 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3519 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3518 | std::fmt::Display::fmt(self.syntax(), f) | 3520 | std::fmt::Display::fmt(self.syntax(), f) |
3519 | } | 3521 | } |
3520 | } | 3522 | } |
3521 | impl std::fmt::Display for EnumVariantList { | 3523 | impl std::fmt::Display for Name { |
3522 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3524 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3523 | std::fmt::Display::fmt(self.syntax(), f) | 3525 | std::fmt::Display::fmt(self.syntax(), f) |
3524 | } | 3526 | } |
3525 | } | 3527 | } |
3526 | impl std::fmt::Display for EnumVariant { | 3528 | impl std::fmt::Display for TypeParamList { |
3527 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3529 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3528 | std::fmt::Display::fmt(self.syntax(), f) | 3530 | std::fmt::Display::fmt(self.syntax(), f) |
3529 | } | 3531 | } |
3530 | } | 3532 | } |
3531 | impl std::fmt::Display for TraitDef { | 3533 | impl std::fmt::Display for ParamList { |
3532 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3534 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3533 | std::fmt::Display::fmt(self.syntax(), f) | 3535 | std::fmt::Display::fmt(self.syntax(), f) |
3534 | } | 3536 | } |
3535 | } | 3537 | } |
3536 | impl std::fmt::Display for TypeBoundList { | 3538 | impl std::fmt::Display for RetType { |
3537 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3539 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3538 | std::fmt::Display::fmt(self.syntax(), f) | 3540 | std::fmt::Display::fmt(self.syntax(), f) |
3539 | } | 3541 | } |
3540 | } | 3542 | } |
3541 | impl std::fmt::Display for ItemList { | 3543 | impl std::fmt::Display for WhereClause { |
3542 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3544 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3543 | std::fmt::Display::fmt(self.syntax(), f) | 3545 | std::fmt::Display::fmt(self.syntax(), f) |
3544 | } | 3546 | } |
3545 | } | 3547 | } |
3546 | impl std::fmt::Display for Module { | 3548 | impl std::fmt::Display for BlockExpr { |
3547 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3549 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3548 | std::fmt::Display::fmt(self.syntax(), f) | 3550 | std::fmt::Display::fmt(self.syntax(), f) |
3549 | } | 3551 | } |
3550 | } | 3552 | } |
3551 | impl std::fmt::Display for ConstDef { | 3553 | impl std::fmt::Display for RecordFieldDefList { |
3552 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3554 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3553 | std::fmt::Display::fmt(self.syntax(), f) | 3555 | std::fmt::Display::fmt(self.syntax(), f) |
3554 | } | 3556 | } |
3555 | } | 3557 | } |
3556 | impl std::fmt::Display for StaticDef { | 3558 | impl std::fmt::Display for TupleFieldDefList { |
3557 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3559 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3558 | std::fmt::Display::fmt(self.syntax(), f) | 3560 | std::fmt::Display::fmt(self.syntax(), f) |
3559 | } | 3561 | } |
3560 | } | 3562 | } |
3561 | impl std::fmt::Display for TypeAliasDef { | 3563 | impl std::fmt::Display for RecordFieldDef { |
3562 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3564 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3563 | std::fmt::Display::fmt(self.syntax(), f) | 3565 | std::fmt::Display::fmt(self.syntax(), f) |
3564 | } | 3566 | } |
3565 | } | 3567 | } |
3566 | impl std::fmt::Display for ImplDef { | 3568 | impl std::fmt::Display for TupleFieldDef { |
3569 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
3570 | std::fmt::Display::fmt(self.syntax(), f) | ||
3571 | } | ||
3572 | } | ||
3573 | impl std::fmt::Display for EnumVariantList { | ||
3574 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
3575 | std::fmt::Display::fmt(self.syntax(), f) | ||
3576 | } | ||
3577 | } | ||
3578 | impl std::fmt::Display for EnumVariant { | ||
3579 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
3580 | std::fmt::Display::fmt(self.syntax(), f) | ||
3581 | } | ||
3582 | } | ||
3583 | impl std::fmt::Display for TypeBoundList { | ||
3584 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
3585 | std::fmt::Display::fmt(self.syntax(), f) | ||
3586 | } | ||
3587 | } | ||
3588 | impl std::fmt::Display for ItemList { | ||
3567 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3589 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3568 | std::fmt::Display::fmt(self.syntax(), f) | 3590 | std::fmt::Display::fmt(self.syntax(), f) |
3569 | } | 3591 | } |
@@ -3888,11 +3910,6 @@ impl std::fmt::Display for MacroPat { | |||
3888 | std::fmt::Display::fmt(self.syntax(), f) | 3910 | std::fmt::Display::fmt(self.syntax(), f) |
3889 | } | 3911 | } |
3890 | } | 3912 | } |
3891 | impl std::fmt::Display for MacroCall { | ||
3892 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
3893 | std::fmt::Display::fmt(self.syntax(), f) | ||
3894 | } | ||
3895 | } | ||
3896 | impl std::fmt::Display for RecordPat { | 3913 | impl std::fmt::Display for RecordPat { |
3897 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3914 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3898 | std::fmt::Display::fmt(self.syntax(), f) | 3915 | std::fmt::Display::fmt(self.syntax(), f) |
@@ -3983,11 +4000,6 @@ impl std::fmt::Display for Param { | |||
3983 | std::fmt::Display::fmt(self.syntax(), f) | 4000 | std::fmt::Display::fmt(self.syntax(), f) |
3984 | } | 4001 | } |
3985 | } | 4002 | } |
3986 | impl std::fmt::Display for UseItem { | ||
3987 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
3988 | std::fmt::Display::fmt(self.syntax(), f) | ||
3989 | } | ||
3990 | } | ||
3991 | impl std::fmt::Display for UseTree { | 4003 | impl std::fmt::Display for UseTree { |
3992 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4004 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
3993 | std::fmt::Display::fmt(self.syntax(), f) | 4005 | std::fmt::Display::fmt(self.syntax(), f) |
@@ -4003,11 +4015,6 @@ impl std::fmt::Display for Alias { | |||
4003 | std::fmt::Display::fmt(self.syntax(), f) | 4015 | std::fmt::Display::fmt(self.syntax(), f) |
4004 | } | 4016 | } |
4005 | } | 4017 | } |
4006 | impl std::fmt::Display for ExternCrateItem { | ||
4007 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
4008 | std::fmt::Display::fmt(self.syntax(), f) | ||
4009 | } | ||
4010 | } | ||
4011 | impl std::fmt::Display for PathSegment { | 4018 | impl std::fmt::Display for PathSegment { |
4012 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4019 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4013 | std::fmt::Display::fmt(self.syntax(), f) | 4020 | std::fmt::Display::fmt(self.syntax(), f) |
@@ -4033,11 +4040,6 @@ impl std::fmt::Display for ConstArg { | |||
4033 | std::fmt::Display::fmt(self.syntax(), f) | 4040 | std::fmt::Display::fmt(self.syntax(), f) |
4034 | } | 4041 | } |
4035 | } | 4042 | } |
4036 | impl std::fmt::Display for ExternBlock { | ||
4037 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | ||
4038 | std::fmt::Display::fmt(self.syntax(), f) | ||
4039 | } | ||
4040 | } | ||
4041 | impl std::fmt::Display for ExternItemList { | 4043 | impl std::fmt::Display for ExternItemList { |
4042 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4044 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4043 | std::fmt::Display::fmt(self.syntax(), f) | 4045 | std::fmt::Display::fmt(self.syntax(), f) |
diff --git a/crates/ra_syntax/src/ast/traits.rs b/crates/ra_syntax/src/ast/traits.rs index a8f2454fd..9fe0b93c1 100644 --- a/crates/ra_syntax/src/ast/traits.rs +++ b/crates/ra_syntax/src/ast/traits.rs | |||
@@ -44,7 +44,7 @@ pub trait ArgListOwner: AstNode { | |||
44 | } | 44 | } |
45 | 45 | ||
46 | pub trait ModuleItemOwner: AstNode { | 46 | pub trait ModuleItemOwner: AstNode { |
47 | fn items(&self) -> AstChildren<ast::ModuleItem> { | 47 | fn items(&self) -> AstChildren<ast::Item> { |
48 | support::children(self.syntax()) | 48 | support::children(self.syntax()) |
49 | } | 49 | } |
50 | } | 50 | } |