diff options
author | Dmitry <[email protected]> | 2020-08-09 14:35:51 +0100 |
---|---|---|
committer | Dmitry <[email protected]> | 2020-08-09 14:39:32 +0100 |
commit | 8068302fefc75440b823f4bf1731a5f347d7c767 (patch) | |
tree | 251b967182e79bc82a58c2fb208c688f6152df1f /crates/ra_syntax/src/ast/generated | |
parent | 1a43a0f63e0008787225abb6fb2baef97b6a39e0 (diff) | |
parent | 8a57afe5a4bfab40072a83f7dc4ca560bf860919 (diff) |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'crates/ra_syntax/src/ast/generated')
-rw-r--r-- | crates/ra_syntax/src/ast/generated/nodes.rs | 4754 |
1 files changed, 1642 insertions, 3112 deletions
diff --git a/crates/ra_syntax/src/ast/generated/nodes.rs b/crates/ra_syntax/src/ast/generated/nodes.rs index 58141da11..3d49309d1 100644 --- a/crates/ra_syntax/src/ast/generated/nodes.rs +++ b/crates/ra_syntax/src/ast/generated/nodes.rs | |||
@@ -5,1189 +5,649 @@ use crate::{ | |||
5 | SyntaxKind::{self, *}, | 5 | SyntaxKind::{self, *}, |
6 | SyntaxNode, SyntaxToken, T, | 6 | SyntaxNode, SyntaxToken, T, |
7 | }; | 7 | }; |
8 | /// The entire Rust source file. Includes all top-level inner attributes and module items. | ||
9 | /// | ||
10 | /// [Reference](https://doc.rust-lang.org/reference/crates-and-source-files.html) | ||
11 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 8 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
12 | pub struct SourceFile { | 9 | pub struct Name { |
13 | pub(crate) syntax: SyntaxNode, | 10 | pub(crate) syntax: SyntaxNode, |
14 | } | 11 | } |
15 | impl ast::ModuleItemOwner for SourceFile {} | 12 | impl Name { |
16 | impl ast::AttrsOwner for SourceFile {} | 13 | pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) } |
17 | impl ast::DocCommentsOwner for SourceFile {} | 14 | } |
18 | impl SourceFile { | 15 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
19 | pub fn modules(&self) -> AstChildren<Module> { support::children(&self.syntax) } | 16 | pub struct NameRef { |
20 | } | ||
21 | /// Function definition either with body or not. | ||
22 | /// Includes all of its attributes and doc comments. | ||
23 | /// | ||
24 | /// ``` | ||
25 | /// ❰ | ||
26 | /// /// Docs | ||
27 | /// #[attr] | ||
28 | /// pub extern "C" fn foo<T>(#[attr] Patern {p}: Pattern) -> u32 | ||
29 | /// where | ||
30 | /// T: Debug | ||
31 | /// { | ||
32 | /// 42 | ||
33 | /// } | ||
34 | /// ❱ | ||
35 | /// | ||
36 | /// extern "C" { | ||
37 | /// ❰ fn fn_decl(also_variadic_ffi: u32, ...) -> u32; ❱ | ||
38 | /// } | ||
39 | /// ``` | ||
40 | /// | ||
41 | /// - [Reference](https://doc.rust-lang.org/reference/items/functions.html) | ||
42 | /// - [Nomicon](https://doc.rust-lang.org/nomicon/ffi.html#variadic-functions) | ||
43 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
44 | pub struct FnDef { | ||
45 | pub(crate) syntax: SyntaxNode, | 17 | pub(crate) syntax: SyntaxNode, |
46 | } | 18 | } |
47 | impl ast::VisibilityOwner for FnDef {} | 19 | impl NameRef { |
48 | impl ast::NameOwner for FnDef {} | 20 | pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) } |
49 | impl ast::TypeParamsOwner for FnDef {} | 21 | } |
50 | impl ast::DocCommentsOwner for FnDef {} | 22 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
51 | impl ast::AttrsOwner for FnDef {} | 23 | pub struct Path { |
52 | impl FnDef { | 24 | pub(crate) syntax: SyntaxNode, |
53 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | 25 | } |
54 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | 26 | impl Path { |
55 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | 27 | pub fn qualifier(&self) -> Option<Path> { support::child(&self.syntax) } |
56 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } | 28 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } |
57 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | 29 | pub fn segment(&self) -> Option<PathSegment> { support::child(&self.syntax) } |
58 | pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) } | 30 | } |
31 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
32 | pub struct PathSegment { | ||
33 | pub(crate) syntax: SyntaxNode, | ||
34 | } | ||
35 | impl PathSegment { | ||
36 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
37 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
38 | pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) } | ||
39 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } | ||
40 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
41 | pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) } | ||
59 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } | 42 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } |
60 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } | 43 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } |
61 | pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) } | 44 | pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } |
62 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 45 | pub fn path_type(&self) -> Option<PathType> { support::child(&self.syntax) } |
46 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } | ||
47 | pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } | ||
48 | } | ||
49 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
50 | pub struct GenericArgList { | ||
51 | pub(crate) syntax: SyntaxNode, | ||
52 | } | ||
53 | impl GenericArgList { | ||
54 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } | ||
55 | pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } | ||
56 | pub fn generic_args(&self) -> AstChildren<GenericArg> { support::children(&self.syntax) } | ||
57 | pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } | ||
58 | } | ||
59 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
60 | pub struct ParamList { | ||
61 | pub(crate) syntax: SyntaxNode, | ||
62 | } | ||
63 | impl ParamList { | ||
64 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | ||
65 | pub fn self_param(&self) -> Option<SelfParam> { support::child(&self.syntax) } | ||
66 | pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) } | ||
67 | pub fn params(&self) -> AstChildren<Param> { support::children(&self.syntax) } | ||
68 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | ||
63 | } | 69 | } |
64 | /// Return type annotation. | ||
65 | /// | ||
66 | /// ``` | ||
67 | /// fn foo(a: u32) ❰ -> Option<u32> ❱ { Some(a) } | ||
68 | /// ``` | ||
69 | /// | ||
70 | /// [Reference](https://doc.rust-lang.org/reference/items/functions.html) | ||
71 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 70 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
72 | pub struct RetType { | 71 | pub struct RetType { |
73 | pub(crate) syntax: SyntaxNode, | 72 | pub(crate) syntax: SyntaxNode, |
74 | } | 73 | } |
75 | impl RetType { | 74 | impl RetType { |
76 | pub fn thin_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![->]) } | 75 | pub fn thin_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![->]) } |
77 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 76 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
78 | } | 77 | } |
79 | /// Struct definition. | 78 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
80 | /// Includes all of its attributes and doc comments. | 79 | pub struct PathType { |
81 | /// | ||
82 | /// ``` | ||
83 | /// ❰ | ||
84 | /// /// Docs | ||
85 | /// #[attr] | ||
86 | /// struct Foo<T> where T: Debug { | ||
87 | /// /// Docs | ||
88 | /// #[attr] | ||
89 | /// pub a: u32, | ||
90 | /// b: T, | ||
91 | /// } | ||
92 | /// ❱ | ||
93 | /// | ||
94 | /// ❰ struct Foo; ❱ | ||
95 | /// ❰ struct Foo<T>(#[attr] T) where T: Debug; ❱ | ||
96 | /// ``` | ||
97 | /// | ||
98 | /// [Reference](https://doc.rust-lang.org/reference/items/structs.html) | ||
99 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
100 | pub struct StructDef { | ||
101 | pub(crate) syntax: SyntaxNode, | 80 | pub(crate) syntax: SyntaxNode, |
102 | } | 81 | } |
103 | impl ast::VisibilityOwner for StructDef {} | 82 | impl PathType { |
104 | impl ast::NameOwner for StructDef {} | 83 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
105 | impl ast::TypeParamsOwner for StructDef {} | ||
106 | impl ast::AttrsOwner for StructDef {} | ||
107 | impl ast::DocCommentsOwner for StructDef {} | ||
108 | impl StructDef { | ||
109 | pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) } | ||
110 | pub fn field_def_list(&self) -> Option<FieldDefList> { support::child(&self.syntax) } | ||
111 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
112 | } | 84 | } |
113 | /// Union definition. | 85 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
114 | /// Includes all of its attributes and doc comments. | 86 | pub struct TypeArg { |
115 | /// | ||
116 | /// ``` | ||
117 | /// ❰ | ||
118 | /// /// Docs | ||
119 | /// #[attr] | ||
120 | /// pub union Foo<T> where T: Debug { | ||
121 | /// /// Docs | ||
122 | /// #[attr] | ||
123 | /// a: T, | ||
124 | /// b: u32, | ||
125 | /// } | ||
126 | /// ❱ | ||
127 | /// ``` | ||
128 | /// | ||
129 | /// [Reference](https://doc.rust-lang.org/reference/items/unions.html) | ||
130 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
131 | pub struct UnionDef { | ||
132 | pub(crate) syntax: SyntaxNode, | 87 | pub(crate) syntax: SyntaxNode, |
133 | } | 88 | } |
134 | impl ast::VisibilityOwner for UnionDef {} | 89 | impl TypeArg { |
135 | impl ast::NameOwner for UnionDef {} | 90 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
136 | impl ast::TypeParamsOwner for UnionDef {} | ||
137 | impl ast::AttrsOwner for UnionDef {} | ||
138 | impl ast::DocCommentsOwner for UnionDef {} | ||
139 | impl UnionDef { | ||
140 | pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) } | ||
141 | pub fn record_field_def_list(&self) -> Option<RecordFieldDefList> { | ||
142 | support::child(&self.syntax) | ||
143 | } | ||
144 | } | 91 | } |
145 | /// Record field definition list including enclosing curly braces. | 92 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
146 | /// | 93 | pub struct AssocTypeArg { |
147 | /// ``` | ||
148 | /// struct Foo // same for union | ||
149 | /// ❰ | ||
150 | /// { | ||
151 | /// a: u32, | ||
152 | /// b: bool, | ||
153 | /// } | ||
154 | /// ❱ | ||
155 | /// ``` | ||
156 | /// | ||
157 | /// [Reference](https://doc.rust-lang.org/reference/items/structs.html) | ||
158 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
159 | pub struct RecordFieldDefList { | ||
160 | pub(crate) syntax: SyntaxNode, | 94 | pub(crate) syntax: SyntaxNode, |
161 | } | 95 | } |
162 | impl RecordFieldDefList { | 96 | impl ast::TypeBoundsOwner for AssocTypeArg {} |
163 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 97 | impl AssocTypeArg { |
164 | pub fn fields(&self) -> AstChildren<RecordFieldDef> { support::children(&self.syntax) } | 98 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } |
165 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 99 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } |
100 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
166 | } | 101 | } |
167 | /// Record field definition including its attributes and doc comments. | 102 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
168 | /// | 103 | pub struct LifetimeArg { |
169 | /// ` `` | ||
170 | /// same for union | ||
171 | /// struct Foo { | ||
172 | /// ❰ | ||
173 | /// /// Docs | ||
174 | /// #[attr] | ||
175 | /// pub a: u32 | ||
176 | /// ❱ | ||
177 | /// | ||
178 | /// ❰ b: bool ❱ | ||
179 | /// } | ||
180 | /// ``` | ||
181 | /// | ||
182 | /// [Reference](https://doc.rust-lang.org/reference/items/structs.html) | ||
183 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
184 | pub struct RecordFieldDef { | ||
185 | pub(crate) syntax: SyntaxNode, | 104 | pub(crate) syntax: SyntaxNode, |
186 | } | 105 | } |
187 | impl ast::VisibilityOwner for RecordFieldDef {} | 106 | impl LifetimeArg { |
188 | impl ast::NameOwner for RecordFieldDef {} | 107 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
189 | impl ast::AttrsOwner for RecordFieldDef {} | 108 | support::token(&self.syntax, T![lifetime]) |
190 | impl ast::DocCommentsOwner for RecordFieldDef {} | 109 | } |
191 | impl ast::TypeAscriptionOwner for RecordFieldDef {} | 110 | } |
192 | impl RecordFieldDef {} | 111 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
193 | /// Tuple field definition list including enclosing parens. | 112 | pub struct ConstArg { |
194 | /// | ||
195 | /// ``` | ||
196 | /// struct Foo ❰ (u32, String, Vec<u32>) ❱; | ||
197 | /// ``` | ||
198 | /// | ||
199 | /// [Reference](https://doc.rust-lang.org/reference/items/structs.html) | ||
200 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
201 | pub struct TupleFieldDefList { | ||
202 | pub(crate) syntax: SyntaxNode, | 113 | pub(crate) syntax: SyntaxNode, |
203 | } | 114 | } |
204 | impl TupleFieldDefList { | 115 | impl ConstArg { |
205 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 116 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
206 | pub fn fields(&self) -> AstChildren<TupleFieldDef> { support::children(&self.syntax) } | ||
207 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | ||
208 | } | 117 | } |
209 | /// Tuple field definition including its attributes. | ||
210 | /// | ||
211 | /// ``` | ||
212 | /// struct Foo(❰ #[attr] u32 ❱); | ||
213 | /// ``` | ||
214 | /// | ||
215 | /// [Reference](https://doc.rust-lang.org/reference/items/structs.html) | ||
216 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 118 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
217 | pub struct TupleFieldDef { | 119 | pub struct TypeBoundList { |
218 | pub(crate) syntax: SyntaxNode, | 120 | pub(crate) syntax: SyntaxNode, |
219 | } | 121 | } |
220 | impl ast::VisibilityOwner for TupleFieldDef {} | 122 | impl TypeBoundList { |
221 | impl ast::AttrsOwner for TupleFieldDef {} | 123 | pub fn bounds(&self) -> AstChildren<TypeBound> { support::children(&self.syntax) } |
222 | impl TupleFieldDef { | ||
223 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
224 | } | ||
225 | /// Enum definition. | ||
226 | /// Includes all of its attributes and doc comments. | ||
227 | /// | ||
228 | /// ``` | ||
229 | /// ❰ | ||
230 | /// /// Docs | ||
231 | /// #[attr] | ||
232 | /// pub enum Foo<T> where T: Debug { | ||
233 | /// /// Docs | ||
234 | /// #[attr] | ||
235 | /// Bar, | ||
236 | /// Baz(#[attr] u32), | ||
237 | /// Bruh { | ||
238 | /// a: u32, | ||
239 | /// /// Docs | ||
240 | /// #[attr] | ||
241 | /// b: T, | ||
242 | /// } | ||
243 | /// } | ||
244 | /// ❱ | ||
245 | /// ``` | ||
246 | /// | ||
247 | /// [Reference](https://doc.rust-lang.org/reference/items/enumerations.html) | ||
248 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
249 | pub struct EnumDef { | ||
250 | pub(crate) syntax: SyntaxNode, | ||
251 | } | 124 | } |
252 | impl ast::VisibilityOwner for EnumDef {} | 125 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
253 | impl ast::NameOwner for EnumDef {} | 126 | pub struct MacroCall { |
254 | impl ast::TypeParamsOwner for EnumDef {} | ||
255 | impl ast::AttrsOwner for EnumDef {} | ||
256 | impl ast::DocCommentsOwner for EnumDef {} | ||
257 | impl EnumDef { | ||
258 | pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) } | ||
259 | pub fn variant_list(&self) -> Option<EnumVariantList> { support::child(&self.syntax) } | ||
260 | } | ||
261 | /// Enum variant definition list including enclosing curly braces. | ||
262 | /// | ||
263 | /// ``` | ||
264 | /// enum Foo | ||
265 | /// ❰ | ||
266 | /// { | ||
267 | /// Bar, | ||
268 | /// Baz(u32), | ||
269 | /// Bruh { | ||
270 | /// a: u32 | ||
271 | /// } | ||
272 | /// } | ||
273 | /// ❱ | ||
274 | /// ``` | ||
275 | /// | ||
276 | /// [Reference](https://doc.rust-lang.org/reference/items/enumerations.html) | ||
277 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
278 | pub struct EnumVariantList { | ||
279 | pub(crate) syntax: SyntaxNode, | 127 | pub(crate) syntax: SyntaxNode, |
280 | } | 128 | } |
281 | impl EnumVariantList { | 129 | impl ast::AttrsOwner for MacroCall {} |
282 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 130 | impl ast::NameOwner for MacroCall {} |
283 | pub fn variants(&self) -> AstChildren<EnumVariant> { support::children(&self.syntax) } | 131 | impl MacroCall { |
284 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 132 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
133 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
134 | pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } | ||
135 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
285 | } | 136 | } |
286 | /// Enum variant definition including its attributes and discriminant value definition. | 137 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
287 | /// | 138 | pub struct Attr { |
288 | /// ``` | ||
289 | /// enum Foo { | ||
290 | /// ❰ | ||
291 | /// /// Docs | ||
292 | /// #[attr] | ||
293 | /// Bar | ||
294 | /// ❱ | ||
295 | /// | ||
296 | /// // same for tuple and record variants | ||
297 | /// } | ||
298 | /// ``` | ||
299 | /// | ||
300 | /// [Reference](https://doc.rust-lang.org/reference/items/enumerations.html) | ||
301 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
302 | pub struct EnumVariant { | ||
303 | pub(crate) syntax: SyntaxNode, | 139 | pub(crate) syntax: SyntaxNode, |
304 | } | 140 | } |
305 | impl ast::VisibilityOwner for EnumVariant {} | 141 | impl Attr { |
306 | impl ast::NameOwner for EnumVariant {} | 142 | pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) } |
307 | impl ast::DocCommentsOwner for EnumVariant {} | 143 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } |
308 | impl ast::AttrsOwner for EnumVariant {} | 144 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } |
309 | impl EnumVariant { | 145 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
310 | pub fn field_def_list(&self) -> Option<FieldDefList> { support::child(&self.syntax) } | ||
311 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 146 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } |
312 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 147 | pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) } |
148 | pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } | ||
149 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | ||
313 | } | 150 | } |
314 | /// Trait definition. | 151 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
315 | /// Includes all of its attributes and doc comments. | 152 | pub struct TokenTree { |
316 | /// | ||
317 | /// ``` | ||
318 | /// ❰ | ||
319 | /// /// Docs | ||
320 | /// #[attr] | ||
321 | /// pub unsafe trait Foo<T>: Debug where T: Debug { | ||
322 | /// // ... | ||
323 | /// } | ||
324 | /// ❱ | ||
325 | /// ``` | ||
326 | /// | ||
327 | /// [Reference](https://doc.rust-lang.org/reference/items/traits.html) | ||
328 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
329 | pub struct TraitDef { | ||
330 | pub(crate) syntax: SyntaxNode, | 153 | pub(crate) syntax: SyntaxNode, |
331 | } | 154 | } |
332 | impl ast::VisibilityOwner for TraitDef {} | 155 | impl TokenTree { |
333 | impl ast::NameOwner for TraitDef {} | 156 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
334 | impl ast::AttrsOwner for TraitDef {} | 157 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
335 | impl ast::DocCommentsOwner for TraitDef {} | 158 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
336 | impl ast::TypeParamsOwner for TraitDef {} | 159 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
337 | impl ast::TypeBoundsOwner for TraitDef {} | 160 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } |
338 | impl TraitDef { | 161 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } |
339 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
340 | pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) } | ||
341 | pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) } | ||
342 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | ||
343 | } | 162 | } |
344 | /// Module definition either with body or not. | ||
345 | /// Includes all of its inner and outer attributes, module items, doc comments. | ||
346 | /// | ||
347 | /// ``` | ||
348 | /// ❰ | ||
349 | /// /// Docs | ||
350 | /// #[attr] | ||
351 | /// pub mod foo; | ||
352 | /// ❱ | ||
353 | /// | ||
354 | /// ❰ | ||
355 | /// /// Docs | ||
356 | /// #[attr] | ||
357 | /// pub mod bar { | ||
358 | /// //! Inner docs | ||
359 | /// #![inner_attr] | ||
360 | /// } | ||
361 | /// ❱ | ||
362 | /// ``` | ||
363 | /// | ||
364 | /// [Reference](https://doc.rust-lang.org/reference/items/modules.html) | ||
365 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 163 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
366 | pub struct Module { | 164 | pub struct MacroItems { |
367 | pub(crate) syntax: SyntaxNode, | 165 | pub(crate) syntax: SyntaxNode, |
368 | } | 166 | } |
369 | impl ast::VisibilityOwner for Module {} | 167 | impl ast::ModuleItemOwner for MacroItems {} |
370 | impl ast::NameOwner for Module {} | 168 | impl MacroItems {} |
371 | impl ast::AttrsOwner for Module {} | 169 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
372 | impl ast::DocCommentsOwner for Module {} | 170 | pub struct MacroStmts { |
373 | impl Module { | 171 | pub(crate) syntax: SyntaxNode, |
374 | pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) } | 172 | } |
375 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | 173 | impl MacroStmts { |
376 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 174 | pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) } |
175 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
377 | } | 176 | } |
378 | /// Item defintion list. | ||
379 | /// This is used for both top-level items and impl block items. | ||
380 | /// | ||
381 | /// ``` | ||
382 | /// ❰ | ||
383 | /// fn foo {} | ||
384 | /// struct Bar; | ||
385 | /// enum Baz; | ||
386 | /// trait Bruh; | ||
387 | /// const BRUUH: u32 = 42; | ||
388 | /// ❱ | ||
389 | /// | ||
390 | /// impl Foo | ||
391 | /// ❰ | ||
392 | /// { | ||
393 | /// fn bar() {} | ||
394 | /// const BAZ: u32 = 42; | ||
395 | /// } | ||
396 | /// ❱ | ||
397 | /// ``` | ||
398 | /// | ||
399 | /// [Reference](https://doc.rust-lang.org/reference/items.html) | ||
400 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 177 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
401 | pub struct ItemList { | 178 | pub struct SourceFile { |
402 | pub(crate) syntax: SyntaxNode, | 179 | pub(crate) syntax: SyntaxNode, |
403 | } | 180 | } |
404 | impl ast::ModuleItemOwner for ItemList {} | 181 | impl ast::AttrsOwner for SourceFile {} |
405 | impl ItemList { | 182 | impl ast::ModuleItemOwner for SourceFile {} |
406 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 183 | impl SourceFile { |
407 | pub fn assoc_items(&self) -> AstChildren<AssocItem> { support::children(&self.syntax) } | 184 | pub fn shebang_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![shebang]) } |
408 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | ||
409 | } | 185 | } |
410 | /// Constant variable definition. | 186 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
411 | /// Includes all of its attributes and doc comments. | 187 | pub struct Const { |
412 | /// | ||
413 | /// ``` | ||
414 | /// ❰ | ||
415 | /// /// Docs | ||
416 | /// #[attr] | ||
417 | /// pub const FOO: u32 = 42; | ||
418 | /// ❱ | ||
419 | /// ``` | ||
420 | /// | ||
421 | /// [Reference](https://doc.rust-lang.org/reference/items/constant-items.html) | ||
422 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
423 | pub struct ConstDef { | ||
424 | pub(crate) syntax: SyntaxNode, | 188 | pub(crate) syntax: SyntaxNode, |
425 | } | 189 | } |
426 | impl ast::VisibilityOwner for ConstDef {} | 190 | impl ast::AttrsOwner for Const {} |
427 | impl ast::NameOwner for ConstDef {} | 191 | impl ast::NameOwner for Const {} |
428 | impl ast::TypeParamsOwner for ConstDef {} | 192 | impl ast::VisibilityOwner for Const {} |
429 | impl ast::AttrsOwner for ConstDef {} | 193 | impl Const { |
430 | impl ast::DocCommentsOwner for ConstDef {} | ||
431 | impl ast::TypeAscriptionOwner for ConstDef {} | ||
432 | impl ConstDef { | ||
433 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | 194 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } |
434 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | 195 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } |
196 | pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } | ||
197 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
198 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
435 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 199 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } |
436 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | 200 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } |
437 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 201 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
438 | } | 202 | } |
439 | /// Static variable definition. | 203 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
440 | /// Includes all of its attributes and doc comments. | 204 | pub struct Enum { |
441 | /// | ||
442 | /// ``` | ||
443 | /// ❰ | ||
444 | /// /// Docs | ||
445 | /// #[attr] | ||
446 | /// pub static mut FOO: u32 = 42; | ||
447 | /// ❱ | ||
448 | /// ``` | ||
449 | /// | ||
450 | /// [Reference](https://doc.rust-lang.org/reference/items/static-items.html) | ||
451 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
452 | pub struct StaticDef { | ||
453 | pub(crate) syntax: SyntaxNode, | 205 | pub(crate) syntax: SyntaxNode, |
454 | } | 206 | } |
455 | impl ast::VisibilityOwner for StaticDef {} | 207 | impl ast::AttrsOwner for Enum {} |
456 | impl ast::NameOwner for StaticDef {} | 208 | impl ast::NameOwner for Enum {} |
457 | impl ast::TypeParamsOwner for StaticDef {} | 209 | impl ast::VisibilityOwner for Enum {} |
458 | impl ast::AttrsOwner for StaticDef {} | 210 | impl ast::GenericParamsOwner for Enum {} |
459 | impl ast::DocCommentsOwner for StaticDef {} | 211 | impl Enum { |
460 | impl ast::TypeAscriptionOwner for StaticDef {} | 212 | pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) } |
461 | impl StaticDef { | 213 | pub fn variant_list(&self) -> Option<VariantList> { support::child(&self.syntax) } |
462 | pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } | 214 | } |
463 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | 215 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
464 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 216 | pub struct ExternBlock { |
465 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | 217 | pub(crate) syntax: SyntaxNode, |
218 | } | ||
219 | impl ast::AttrsOwner for ExternBlock {} | ||
220 | impl ExternBlock { | ||
221 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | ||
222 | pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) } | ||
223 | } | ||
224 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
225 | pub struct ExternCrate { | ||
226 | pub(crate) syntax: SyntaxNode, | ||
227 | } | ||
228 | impl ast::AttrsOwner for ExternCrate {} | ||
229 | impl ast::VisibilityOwner for ExternCrate {} | ||
230 | impl ExternCrate { | ||
231 | pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } | ||
232 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
233 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
234 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
235 | pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) } | ||
466 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 236 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
467 | } | 237 | } |
468 | /// Type alias definition. | 238 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
469 | /// Includes associated type clauses with type bounds. | 239 | pub struct Fn { |
470 | /// | ||
471 | /// ``` | ||
472 | /// ❰ | ||
473 | /// /// Docs | ||
474 | /// #[attr] | ||
475 | /// pub type Foo<T> where T: Debug = T; | ||
476 | /// ❱ | ||
477 | /// | ||
478 | /// trait Bar { | ||
479 | /// ❰ type Baz: Debug; ❱ | ||
480 | /// ❰ type Bruh = String; ❱ | ||
481 | /// ❰ type Bruuh: Debug = u32; ❱ | ||
482 | /// } | ||
483 | /// ``` | ||
484 | /// | ||
485 | /// [Reference](https://doc.rust-lang.org/reference/items/type-aliases.html) | ||
486 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
487 | pub struct TypeAliasDef { | ||
488 | pub(crate) syntax: SyntaxNode, | 240 | pub(crate) syntax: SyntaxNode, |
489 | } | 241 | } |
490 | impl ast::VisibilityOwner for TypeAliasDef {} | 242 | impl ast::AttrsOwner for Fn {} |
491 | impl ast::NameOwner for TypeAliasDef {} | 243 | impl ast::NameOwner for Fn {} |
492 | impl ast::TypeParamsOwner for TypeAliasDef {} | 244 | impl ast::VisibilityOwner for Fn {} |
493 | impl ast::AttrsOwner for TypeAliasDef {} | 245 | impl ast::GenericParamsOwner for Fn {} |
494 | impl ast::DocCommentsOwner for TypeAliasDef {} | 246 | impl Fn { |
495 | impl ast::TypeBoundsOwner for TypeAliasDef {} | ||
496 | impl TypeAliasDef { | ||
497 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | 247 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } |
498 | pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) } | 248 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } |
499 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 249 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } |
500 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 250 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } |
251 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | ||
252 | pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) } | ||
253 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } | ||
254 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } | ||
255 | pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) } | ||
501 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 256 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
502 | } | 257 | } |
503 | /// Inherent and trait impl definition. | 258 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
504 | /// Includes all of its inner and outer attributes. | 259 | pub struct Impl { |
505 | /// | ||
506 | /// ``` | ||
507 | /// ❰ | ||
508 | /// #[attr] | ||
509 | /// unsafe impl<T> const !Foo for Bar where T: Debug { | ||
510 | /// #![inner_attr] | ||
511 | /// // ... | ||
512 | /// } | ||
513 | /// ❱ | ||
514 | /// ``` | ||
515 | /// | ||
516 | /// [Reference](https://doc.rust-lang.org/reference/items/implementations.html) | ||
517 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
518 | pub struct ImplDef { | ||
519 | pub(crate) syntax: SyntaxNode, | 260 | pub(crate) syntax: SyntaxNode, |
520 | } | 261 | } |
521 | impl ast::TypeParamsOwner for ImplDef {} | 262 | impl ast::AttrsOwner for Impl {} |
522 | impl ast::AttrsOwner for ImplDef {} | 263 | impl ast::VisibilityOwner for Impl {} |
523 | impl ast::DocCommentsOwner for ImplDef {} | 264 | impl ast::GenericParamsOwner for Impl {} |
524 | impl ImplDef { | 265 | impl Impl { |
525 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | 266 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } |
526 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
527 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | 267 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } |
528 | pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } | 268 | pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } |
269 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
529 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | 270 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } |
530 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | 271 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } |
272 | pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) } | ||
273 | } | ||
274 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
275 | pub struct Module { | ||
276 | pub(crate) syntax: SyntaxNode, | ||
277 | } | ||
278 | impl ast::AttrsOwner for Module {} | ||
279 | impl ast::NameOwner for Module {} | ||
280 | impl ast::VisibilityOwner for Module {} | ||
281 | impl Module { | ||
282 | pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) } | ||
531 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } | 283 | pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } |
284 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
532 | } | 285 | } |
533 | /// Parenthesized type reference. | ||
534 | /// Note: parens are only used for grouping, this is not a tuple type. | ||
535 | /// | ||
536 | /// ``` | ||
537 | /// // This is effectively just `u32`. | ||
538 | /// // Single-item tuple must be defined with a trailing comma: `(u32,)` | ||
539 | /// type Foo = ❰ (u32) ❱; | ||
540 | /// | ||
541 | /// let bar: &'static ❰ (dyn Debug) ❱ = "bruh"; | ||
542 | /// ``` | ||
543 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 286 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
544 | pub struct ParenType { | 287 | pub struct Static { |
545 | pub(crate) syntax: SyntaxNode, | 288 | pub(crate) syntax: SyntaxNode, |
546 | } | 289 | } |
547 | impl ParenType { | 290 | impl ast::AttrsOwner for Static {} |
548 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 291 | impl ast::NameOwner for Static {} |
549 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 292 | impl ast::VisibilityOwner for Static {} |
550 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 293 | impl Static { |
294 | pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } | ||
295 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
296 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
297 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
298 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
299 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
300 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
551 | } | 301 | } |
552 | /// Unnamed tuple type. | ||
553 | /// | ||
554 | /// ``` | ||
555 | /// let foo: ❰ (u32, bool) ❱ = (42, true); | ||
556 | /// ``` | ||
557 | /// | ||
558 | /// [Reference](https://doc.rust-lang.org/reference/types/tuple.html) | ||
559 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 302 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
560 | pub struct TupleType { | 303 | pub struct Struct { |
561 | pub(crate) syntax: SyntaxNode, | 304 | pub(crate) syntax: SyntaxNode, |
562 | } | 305 | } |
563 | impl TupleType { | 306 | impl ast::AttrsOwner for Struct {} |
564 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 307 | impl ast::NameOwner for Struct {} |
565 | pub fn fields(&self) -> AstChildren<TypeRef> { support::children(&self.syntax) } | 308 | impl ast::VisibilityOwner for Struct {} |
566 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 309 | impl ast::GenericParamsOwner for Struct {} |
310 | impl Struct { | ||
311 | pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) } | ||
312 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
313 | pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) } | ||
567 | } | 314 | } |
568 | /// The never type (i.e. the exclamation point). | ||
569 | /// | ||
570 | /// ``` | ||
571 | /// type T = ❰ ! ❱; | ||
572 | /// | ||
573 | /// fn no_return() -> ❰ ! ❱ { | ||
574 | /// loop {} | ||
575 | /// } | ||
576 | /// ``` | ||
577 | /// | ||
578 | /// [Reference](https://doc.rust-lang.org/reference/types/never.html) | ||
579 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 315 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
580 | pub struct NeverType { | 316 | pub struct Trait { |
581 | pub(crate) syntax: SyntaxNode, | 317 | pub(crate) syntax: SyntaxNode, |
582 | } | 318 | } |
583 | impl NeverType { | 319 | impl ast::AttrsOwner for Trait {} |
584 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | 320 | impl ast::NameOwner for Trait {} |
321 | impl ast::VisibilityOwner for Trait {} | ||
322 | impl ast::GenericParamsOwner for Trait {} | ||
323 | impl ast::TypeBoundsOwner for Trait {} | ||
324 | impl Trait { | ||
325 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
326 | pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) } | ||
327 | pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) } | ||
328 | pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) } | ||
585 | } | 329 | } |
586 | /// Path to a type. | ||
587 | /// Includes single identifier type names and elaborate paths with | ||
588 | /// generic parameters. | ||
589 | /// | ||
590 | /// ``` | ||
591 | /// type Foo = ❰ String ❱; | ||
592 | /// type Bar = ❰ std::vec::Vec<T> ❱; | ||
593 | /// type Baz = ❰ ::bruh::<Bruuh as Iterator>::Item ❱; | ||
594 | /// ``` | ||
595 | /// | ||
596 | /// [Reference](https://doc.rust-lang.org/reference/paths.html) | ||
597 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 330 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
598 | pub struct PathType { | 331 | pub struct TypeAlias { |
599 | pub(crate) syntax: SyntaxNode, | 332 | pub(crate) syntax: SyntaxNode, |
600 | } | 333 | } |
601 | impl PathType { | 334 | impl ast::AttrsOwner for TypeAlias {} |
602 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | 335 | impl ast::NameOwner for TypeAlias {} |
336 | impl ast::VisibilityOwner for TypeAlias {} | ||
337 | impl ast::GenericParamsOwner for TypeAlias {} | ||
338 | impl ast::TypeBoundsOwner for TypeAlias {} | ||
339 | impl TypeAlias { | ||
340 | pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } | ||
341 | pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) } | ||
342 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
343 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
344 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
603 | } | 345 | } |
604 | /// Raw pointer type. | ||
605 | /// | ||
606 | /// ``` | ||
607 | /// type Foo = ❰ *const u32 ❱; | ||
608 | /// type Bar = ❰ *mut u32 ❱; | ||
609 | /// ``` | ||
610 | /// | ||
611 | /// [Reference](https://doc.rust-lang.org/reference/types/pointer.html#raw-pointers-const-and-mut) | ||
612 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 346 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
613 | pub struct PointerType { | 347 | pub struct Union { |
614 | pub(crate) syntax: SyntaxNode, | 348 | pub(crate) syntax: SyntaxNode, |
615 | } | 349 | } |
616 | impl PointerType { | 350 | impl ast::AttrsOwner for Union {} |
617 | pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) } | 351 | impl ast::NameOwner for Union {} |
618 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | 352 | impl ast::VisibilityOwner for Union {} |
619 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | 353 | impl ast::GenericParamsOwner for Union {} |
620 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 354 | impl Union { |
355 | pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) } | ||
356 | pub fn record_field_list(&self) -> Option<RecordFieldList> { support::child(&self.syntax) } | ||
621 | } | 357 | } |
622 | /// Array type. | ||
623 | /// | ||
624 | /// ``` | ||
625 | /// type Foo = ❰ [u32; 24 - 3] ❱; | ||
626 | /// ``` | ||
627 | /// | ||
628 | /// [Reference](https://doc.rust-lang.org/reference/types/array.html) | ||
629 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 358 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
630 | pub struct ArrayType { | 359 | pub struct Use { |
631 | pub(crate) syntax: SyntaxNode, | 360 | pub(crate) syntax: SyntaxNode, |
632 | } | 361 | } |
633 | impl ArrayType { | 362 | impl ast::AttrsOwner for Use {} |
634 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | 363 | impl ast::VisibilityOwner for Use {} |
635 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 364 | impl Use { |
365 | pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) } | ||
366 | pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) } | ||
636 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 367 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
637 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
638 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | ||
639 | } | 368 | } |
640 | /// Slice type. | ||
641 | /// | ||
642 | /// ``` | ||
643 | /// type Foo = ❰ [u8] ❱; | ||
644 | /// ``` | ||
645 | /// | ||
646 | /// [Reference](https://doc.rust-lang.org/reference/types/slice.html) | ||
647 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 369 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
648 | pub struct SliceType { | 370 | pub struct Visibility { |
649 | pub(crate) syntax: SyntaxNode, | 371 | pub(crate) syntax: SyntaxNode, |
650 | } | 372 | } |
651 | impl SliceType { | 373 | impl Visibility { |
652 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | 374 | pub fn pub_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pub]) } |
653 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 375 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
654 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | 376 | pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) } |
377 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
378 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
379 | pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) } | ||
380 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
381 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | ||
655 | } | 382 | } |
656 | /// Reference type. | ||
657 | /// | ||
658 | /// ``` | ||
659 | /// type Foo = ❰ &'static str ❱; | ||
660 | /// ``` | ||
661 | /// | ||
662 | /// [Reference](https://doc.rust-lang.org/reference/types/pointer.html) | ||
663 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 383 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
664 | pub struct ReferenceType { | 384 | pub struct ItemList { |
665 | pub(crate) syntax: SyntaxNode, | 385 | pub(crate) syntax: SyntaxNode, |
666 | } | 386 | } |
667 | impl ReferenceType { | 387 | impl ast::AttrsOwner for ItemList {} |
668 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } | 388 | impl ast::ModuleItemOwner for ItemList {} |
669 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | 389 | impl ItemList { |
670 | support::token(&self.syntax, T![lifetime]) | 390 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
671 | } | 391 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
672 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
673 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
674 | } | 392 | } |
675 | /// Placeholder type (i.e. the underscore). | ||
676 | /// | ||
677 | /// ``` | ||
678 | /// let foo: ❰ _ ❱ = 42_u32; | ||
679 | /// ``` | ||
680 | /// | ||
681 | /// [Reference](https://doc.rust-lang.org/reference/types/inferred.html) | ||
682 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 393 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
683 | pub struct PlaceholderType { | 394 | pub struct Rename { |
684 | pub(crate) syntax: SyntaxNode, | 395 | pub(crate) syntax: SyntaxNode, |
685 | } | 396 | } |
686 | impl PlaceholderType { | 397 | impl ast::NameOwner for Rename {} |
398 | impl Rename { | ||
399 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } | ||
687 | pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } | 400 | pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } |
688 | } | 401 | } |
689 | /// Function pointer type (not to be confused with `Fn*` family of traits). | 402 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
690 | /// | 403 | pub struct UseTree { |
691 | /// ``` | ||
692 | /// type Foo = ❰ async fn(#[attr] u32, named: bool) -> u32 ❱; | ||
693 | /// | ||
694 | /// type Bar = ❰ extern "C" fn(variadic: u32, #[attr] ...) ❱; | ||
695 | /// ``` | ||
696 | /// | ||
697 | /// [Reference](https://doc.rust-lang.org/reference/types/function-pointer.html) | ||
698 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
699 | pub struct FnPointerType { | ||
700 | pub(crate) syntax: SyntaxNode, | 404 | pub(crate) syntax: SyntaxNode, |
701 | } | 405 | } |
702 | impl FnPointerType { | 406 | impl UseTree { |
703 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | 407 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
704 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | 408 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } |
705 | pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) } | 409 | pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) } |
706 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } | 410 | pub fn use_tree_list(&self) -> Option<UseTreeList> { support::child(&self.syntax) } |
707 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } | 411 | pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) } |
708 | } | 412 | } |
709 | /// Higher order type. | ||
710 | /// | ||
711 | /// ``` | ||
712 | /// type Foo = ❰ for<'a> fn(&'a str) ❱; | ||
713 | /// ``` | ||
714 | /// | ||
715 | /// [Reference](https://doc.rust-lang.org/nomicon/hrtb.html) | ||
716 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 413 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
717 | pub struct ForType { | 414 | pub struct UseTreeList { |
718 | pub(crate) syntax: SyntaxNode, | 415 | pub(crate) syntax: SyntaxNode, |
719 | } | 416 | } |
720 | impl ForType { | 417 | impl UseTreeList { |
721 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | 418 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
722 | pub fn type_param_list(&self) -> Option<TypeParamList> { support::child(&self.syntax) } | 419 | pub fn use_trees(&self) -> AstChildren<UseTree> { support::children(&self.syntax) } |
723 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 420 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
724 | } | 421 | } |
725 | /// Opaque `impl Trait` type. | ||
726 | /// | ||
727 | /// ``` | ||
728 | /// fn foo(bar: ❰ impl Debug + Eq ❱) {} | ||
729 | /// ``` | ||
730 | /// | ||
731 | /// [Reference](https://doc.rust-lang.org/reference/types/impl-trait.html) | ||
732 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 422 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
733 | pub struct ImplTraitType { | 423 | pub struct Abi { |
734 | pub(crate) syntax: SyntaxNode, | 424 | pub(crate) syntax: SyntaxNode, |
735 | } | 425 | } |
736 | impl ast::TypeBoundsOwner for ImplTraitType {} | 426 | impl Abi { |
737 | impl ImplTraitType { | 427 | pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } |
738 | pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } | ||
739 | } | 428 | } |
740 | /// Trait object type. | ||
741 | /// | ||
742 | /// ``` | ||
743 | /// type Foo = ❰ dyn Debug ❱; | ||
744 | /// ``` | ||
745 | /// | ||
746 | /// [Reference](https://doc.rust-lang.org/reference/types/trait-object.html) | ||
747 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 429 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
748 | pub struct DynTraitType { | 430 | pub struct GenericParamList { |
749 | pub(crate) syntax: SyntaxNode, | 431 | pub(crate) syntax: SyntaxNode, |
750 | } | 432 | } |
751 | impl ast::TypeBoundsOwner for DynTraitType {} | 433 | impl GenericParamList { |
752 | impl DynTraitType { | 434 | pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } |
753 | pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) } | 435 | pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) } |
436 | pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } | ||
754 | } | 437 | } |
755 | /// Tuple literal. | ||
756 | /// | ||
757 | /// ``` | ||
758 | /// ❰ (42, true) ❱; | ||
759 | /// ``` | ||
760 | /// | ||
761 | /// [Reference](https://doc.rust-lang.org/reference/expressions/tuple-expr.html) | ||
762 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 438 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
763 | pub struct TupleExpr { | 439 | pub struct WhereClause { |
764 | pub(crate) syntax: SyntaxNode, | 440 | pub(crate) syntax: SyntaxNode, |
765 | } | 441 | } |
766 | impl ast::AttrsOwner for TupleExpr {} | 442 | impl WhereClause { |
767 | impl TupleExpr { | 443 | pub fn where_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![where]) } |
768 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 444 | pub fn predicates(&self) -> AstChildren<WherePred> { support::children(&self.syntax) } |
769 | pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) } | ||
770 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | ||
771 | } | 445 | } |
772 | /// Array literal. | ||
773 | /// | ||
774 | /// ``` | ||
775 | /// ❰ [#![inner_attr] true, false, true] ❱; | ||
776 | /// | ||
777 | /// ❰ ["baz"; 24] ❱; | ||
778 | /// ``` | ||
779 | /// | ||
780 | /// [Reference](https://doc.rust-lang.org/reference/expressions/array-expr.html) | ||
781 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 446 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
782 | pub struct ArrayExpr { | 447 | pub struct BlockExpr { |
783 | pub(crate) syntax: SyntaxNode, | 448 | pub(crate) syntax: SyntaxNode, |
784 | } | 449 | } |
785 | impl ast::AttrsOwner for ArrayExpr {} | 450 | impl ast::AttrsOwner for BlockExpr {} |
786 | impl ArrayExpr { | 451 | impl BlockExpr { |
787 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | 452 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
788 | pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) } | 453 | pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) } |
789 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 454 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
790 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | 455 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
791 | } | 456 | } |
792 | /// Parenthesized expression. | ||
793 | /// Note: parens are only used for grouping, this is not a tuple literal. | ||
794 | /// | ||
795 | /// ``` | ||
796 | /// ❰ (#![inner_attr] 2 + 2) ❱ * 2; | ||
797 | /// ``` | ||
798 | /// | ||
799 | /// [Reference](https://doc.rust-lang.org/reference/expressions/grouped-expr.html) | ||
800 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 457 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
801 | pub struct ParenExpr { | 458 | pub struct SelfParam { |
802 | pub(crate) syntax: SyntaxNode, | 459 | pub(crate) syntax: SyntaxNode, |
803 | } | 460 | } |
804 | impl ast::AttrsOwner for ParenExpr {} | 461 | impl ast::AttrsOwner for SelfParam {} |
805 | impl ParenExpr { | 462 | impl SelfParam { |
806 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 463 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } |
807 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 464 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
808 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 465 | support::token(&self.syntax, T![lifetime]) |
466 | } | ||
467 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
468 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
469 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
470 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
809 | } | 471 | } |
810 | /// Path to a symbol in expression context. | ||
811 | /// Includes single identifier variable names and elaborate paths with | ||
812 | /// generic parameters. | ||
813 | /// | ||
814 | /// ``` | ||
815 | /// ❰ Some::<i32> ❱; | ||
816 | /// ❰ foo ❱ + 42; | ||
817 | /// ❰ Vec::<i32>::push ❱; | ||
818 | /// ❰ <[i32]>::reverse ❱; | ||
819 | /// ❰ <String as std::borrow::Borrow<str>>::borrow ❱; | ||
820 | /// ``` | ||
821 | /// | ||
822 | /// [Reference](https://doc.rust-lang.org/reference/expressions/path-expr.html) | ||
823 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 472 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
824 | pub struct PathExpr { | 473 | pub struct Param { |
825 | pub(crate) syntax: SyntaxNode, | 474 | pub(crate) syntax: SyntaxNode, |
826 | } | 475 | } |
827 | impl PathExpr { | 476 | impl ast::AttrsOwner for Param {} |
828 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | 477 | impl Param { |
478 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | ||
479 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
480 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
481 | pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) } | ||
829 | } | 482 | } |
830 | /// Anonymous callable object literal a.k.a. closure, lambda or functor. | 483 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
831 | /// | 484 | pub struct RecordFieldList { |
832 | /// ``` | ||
833 | /// ❰ || 42 ❱; | ||
834 | /// ❰ |a: u32| val + 1 ❱; | ||
835 | /// ❰ async |#[attr] Pattern(_): Pattern| { bar } ❱; | ||
836 | /// ❰ move || baz ❱; | ||
837 | /// ❰ || -> u32 { closure_with_ret_type_annotation_requires_block_expr } ❱ | ||
838 | /// ``` | ||
839 | /// | ||
840 | /// [Reference](https://doc.rust-lang.org/reference/expressions/closure-expr.html) | ||
841 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
842 | pub struct LambdaExpr { | ||
843 | pub(crate) syntax: SyntaxNode, | 485 | pub(crate) syntax: SyntaxNode, |
844 | } | 486 | } |
845 | impl ast::AttrsOwner for LambdaExpr {} | 487 | impl RecordFieldList { |
846 | impl LambdaExpr { | 488 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
847 | pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } | 489 | pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) } |
848 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } | 490 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
849 | pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) } | ||
850 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } | ||
851 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } | ||
852 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
853 | } | 491 | } |
854 | /// If expression. Includes both regular `if` and `if let` forms. | ||
855 | /// Beware that `else if` is a special case syntax sugar, because in general | ||
856 | /// there has to be block expression after `else`. | ||
857 | /// | ||
858 | /// ``` | ||
859 | /// ❰ if bool_cond { 42 } ❱ | ||
860 | /// ❰ if bool_cond { 42 } else { 24 } ❱ | ||
861 | /// ❰ if bool_cond { 42 } else if bool_cond2 { 42 } ❱ | ||
862 | /// | ||
863 | /// ❰ | ||
864 | /// if let Pattern(foo) = bar { | ||
865 | /// foo | ||
866 | /// } else { | ||
867 | /// panic!(); | ||
868 | /// } | ||
869 | /// ❱ | ||
870 | /// ``` | ||
871 | /// | ||
872 | /// [Reference](https://doc.rust-lang.org/reference/expressions/if-expr.html) | ||
873 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 492 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
874 | pub struct IfExpr { | 493 | pub struct TupleFieldList { |
875 | pub(crate) syntax: SyntaxNode, | 494 | pub(crate) syntax: SyntaxNode, |
876 | } | 495 | } |
877 | impl ast::AttrsOwner for IfExpr {} | 496 | impl TupleFieldList { |
878 | impl IfExpr { | 497 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
879 | pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) } | 498 | pub fn fields(&self) -> AstChildren<TupleField> { support::children(&self.syntax) } |
880 | pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) } | 499 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
881 | } | 500 | } |
882 | /// Unconditional loop expression. | ||
883 | /// | ||
884 | /// ``` | ||
885 | /// ❰ | ||
886 | /// loop { | ||
887 | /// // yeah, it's that simple... | ||
888 | /// } | ||
889 | /// ❱ | ||
890 | /// ``` | ||
891 | /// | ||
892 | /// [Reference](https://doc.rust-lang.org/reference/expressions/loop-expr.html) | ||
893 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 501 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
894 | pub struct LoopExpr { | 502 | pub struct RecordField { |
895 | pub(crate) syntax: SyntaxNode, | 503 | pub(crate) syntax: SyntaxNode, |
896 | } | 504 | } |
897 | impl ast::AttrsOwner for LoopExpr {} | 505 | impl ast::AttrsOwner for RecordField {} |
898 | impl ast::LoopBodyOwner for LoopExpr {} | 506 | impl ast::NameOwner for RecordField {} |
899 | impl LoopExpr { | 507 | impl ast::VisibilityOwner for RecordField {} |
900 | pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) } | 508 | impl RecordField { |
509 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
510 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
901 | } | 511 | } |
902 | /// Block expression with an optional prefix (label, try ketword, | ||
903 | /// unsafe keyword, async keyword...). | ||
904 | /// | ||
905 | /// ``` | ||
906 | /// ❰ | ||
907 | /// 'label: try { | ||
908 | /// None? | ||
909 | /// } | ||
910 | /// ❱ | ||
911 | /// ``` | ||
912 | /// | ||
913 | /// - [try block](https://doc.rust-lang.org/unstable-book/language-features/try-blocks.html) | ||
914 | /// - [unsafe block](https://doc.rust-lang.org/reference/expressions/block-expr.html#unsafe-blocks) | ||
915 | /// - [async block](https://doc.rust-lang.org/reference/expressions/block-expr.html#async-blocks) | ||
916 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 512 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
917 | pub struct EffectExpr { | 513 | pub struct TupleField { |
918 | pub(crate) syntax: SyntaxNode, | 514 | pub(crate) syntax: SyntaxNode, |
919 | } | 515 | } |
920 | impl ast::AttrsOwner for EffectExpr {} | 516 | impl ast::AttrsOwner for TupleField {} |
921 | impl EffectExpr { | 517 | impl ast::VisibilityOwner for TupleField {} |
922 | pub fn label(&self) -> Option<Label> { support::child(&self.syntax) } | 518 | impl TupleField { |
923 | pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) } | 519 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
924 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } | ||
925 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } | ||
926 | pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) } | ||
927 | } | 520 | } |
928 | /// For loop expression. | ||
929 | /// Note: record struct literals are not valid as iterable expression | ||
930 | /// due to ambiguity. | ||
931 | /// | ||
932 | /// ``` | ||
933 | /// ❰ | ||
934 | /// for i in (0..4) { | ||
935 | /// dbg!(i); | ||
936 | /// } | ||
937 | /// ❱ | ||
938 | /// ``` | ||
939 | /// | ||
940 | /// [Reference](https://doc.rust-lang.org/reference/expressions/loop-expr.html#iterator-loops) | ||
941 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 521 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
942 | pub struct ForExpr { | 522 | pub struct VariantList { |
943 | pub(crate) syntax: SyntaxNode, | 523 | pub(crate) syntax: SyntaxNode, |
944 | } | 524 | } |
945 | impl ast::AttrsOwner for ForExpr {} | 525 | impl VariantList { |
946 | impl ast::LoopBodyOwner for ForExpr {} | 526 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
947 | impl ForExpr { | 527 | pub fn variants(&self) -> AstChildren<Variant> { support::children(&self.syntax) } |
948 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | 528 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
949 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | ||
950 | pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) } | ||
951 | pub fn iterable(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
952 | } | 529 | } |
953 | /// While loop expression. Includes both regular `while` and `while let` forms. | ||
954 | /// | ||
955 | /// ``` | ||
956 | /// ❰ | ||
957 | /// while bool_cond { | ||
958 | /// 42; | ||
959 | /// } | ||
960 | /// ❱ | ||
961 | /// ❰ | ||
962 | /// while let Pattern(foo) = bar { | ||
963 | /// bar += 1; | ||
964 | /// } | ||
965 | /// ❱ | ||
966 | /// ``` | ||
967 | /// | ||
968 | /// [Reference](https://doc.rust-lang.org/reference/expressions/loop-expr.html#predicate-loops) | ||
969 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 530 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
970 | pub struct WhileExpr { | 531 | pub struct Variant { |
971 | pub(crate) syntax: SyntaxNode, | 532 | pub(crate) syntax: SyntaxNode, |
972 | } | 533 | } |
973 | impl ast::AttrsOwner for WhileExpr {} | 534 | impl ast::AttrsOwner for Variant {} |
974 | impl ast::LoopBodyOwner for WhileExpr {} | 535 | impl ast::NameOwner for Variant {} |
975 | impl WhileExpr { | 536 | impl ast::VisibilityOwner for Variant {} |
976 | pub fn while_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![while]) } | 537 | impl Variant { |
977 | pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) } | 538 | pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) } |
539 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
540 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
978 | } | 541 | } |
979 | /// Continue expression. | ||
980 | /// | ||
981 | /// ``` | ||
982 | /// while bool_cond { | ||
983 | /// ❰ continue ❱; | ||
984 | /// } | ||
985 | /// | ||
986 | /// 'outer: loop { | ||
987 | /// loop { | ||
988 | /// ❰ continue 'outer ❱; | ||
989 | /// } | ||
990 | /// } | ||
991 | /// | ||
992 | /// ``` | ||
993 | /// | ||
994 | /// [Reference](https://doc.rust-lang.org/reference/expressions/loop-expr.html#continue-expressions) | ||
995 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 542 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
996 | pub struct ContinueExpr { | 543 | pub struct AssocItemList { |
997 | pub(crate) syntax: SyntaxNode, | 544 | pub(crate) syntax: SyntaxNode, |
998 | } | 545 | } |
999 | impl ast::AttrsOwner for ContinueExpr {} | 546 | impl ast::AttrsOwner for AssocItemList {} |
1000 | impl ContinueExpr { | 547 | impl AssocItemList { |
1001 | pub fn continue_token(&self) -> Option<SyntaxToken> { | 548 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
1002 | support::token(&self.syntax, T![continue]) | 549 | pub fn assoc_items(&self) -> AstChildren<AssocItem> { support::children(&self.syntax) } |
1003 | } | 550 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
1004 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | ||
1005 | support::token(&self.syntax, T![lifetime]) | ||
1006 | } | ||
1007 | } | 551 | } |
1008 | /// Break expression. | ||
1009 | /// | ||
1010 | /// ``` | ||
1011 | /// while bool_cond { | ||
1012 | /// ❰ break ❱; | ||
1013 | /// } | ||
1014 | /// 'outer: loop { | ||
1015 | /// for foo in bar { | ||
1016 | /// ❰ break 'outer ❱; | ||
1017 | /// } | ||
1018 | /// } | ||
1019 | /// 'outer: loop { | ||
1020 | /// loop { | ||
1021 | /// ❰ break 'outer 42 ❱; | ||
1022 | /// } | ||
1023 | /// } | ||
1024 | /// ``` | ||
1025 | /// | ||
1026 | /// [Refernce](https://doc.rust-lang.org/reference/expressions/loop-expr.html#break-expressions) | ||
1027 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 552 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1028 | pub struct BreakExpr { | 553 | pub struct ExternItemList { |
1029 | pub(crate) syntax: SyntaxNode, | 554 | pub(crate) syntax: SyntaxNode, |
1030 | } | 555 | } |
1031 | impl ast::AttrsOwner for BreakExpr {} | 556 | impl ast::AttrsOwner for ExternItemList {} |
1032 | impl BreakExpr { | 557 | impl ExternItemList { |
1033 | pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) } | 558 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
1034 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | 559 | pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) } |
1035 | support::token(&self.syntax, T![lifetime]) | 560 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
1036 | } | ||
1037 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1038 | } | 561 | } |
1039 | /// Label. | ||
1040 | /// | ||
1041 | /// ``` | ||
1042 | /// ❰ 'outer: ❱ loop {} | ||
1043 | /// | ||
1044 | /// let foo = ❰ 'bar: ❱ loop {} | ||
1045 | /// | ||
1046 | /// ❰ 'baz: ❱ { | ||
1047 | /// break 'baz; | ||
1048 | /// } | ||
1049 | /// ``` | ||
1050 | /// | ||
1051 | /// [Reference](https://doc.rust-lang.org/reference/expressions/loop-expr.html?highlight=label#loop-labels) | ||
1052 | /// [Labels for blocks RFC](https://github.com/rust-lang/rfcs/blob/master/text/2046-label-break-value.md) | ||
1053 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 562 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1054 | pub struct Label { | 563 | pub struct ConstParam { |
1055 | pub(crate) syntax: SyntaxNode, | 564 | pub(crate) syntax: SyntaxNode, |
1056 | } | 565 | } |
1057 | impl Label { | 566 | impl ast::AttrsOwner for ConstParam {} |
567 | impl ast::NameOwner for ConstParam {} | ||
568 | impl ConstParam { | ||
569 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
570 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
571 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
572 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
573 | pub fn default_val(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
574 | } | ||
575 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
576 | pub struct LifetimeParam { | ||
577 | pub(crate) syntax: SyntaxNode, | ||
578 | } | ||
579 | impl ast::AttrsOwner for LifetimeParam {} | ||
580 | impl ast::TypeBoundsOwner for LifetimeParam {} | ||
581 | impl LifetimeParam { | ||
1058 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | 582 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
1059 | support::token(&self.syntax, T![lifetime]) | 583 | support::token(&self.syntax, T![lifetime]) |
1060 | } | 584 | } |
1061 | } | 585 | } |
1062 | /// Block expression. Includes unsafe blocks and block labels. | ||
1063 | /// | ||
1064 | /// ``` | ||
1065 | /// let foo = ❰ | ||
1066 | /// { | ||
1067 | /// #![inner_attr] | ||
1068 | /// ❰ { } ❱ | ||
1069 | /// | ||
1070 | /// ❰ 'label: { break 'label } ❱ | ||
1071 | /// } | ||
1072 | /// ❱; | ||
1073 | /// ``` | ||
1074 | /// | ||
1075 | /// [Reference](https://doc.rust-lang.org/reference/expressions/block-expr.html) | ||
1076 | /// [Labels for blocks RFC](https://github.com/rust-lang/rfcs/blob/master/text/2046-label-break-value.md) | ||
1077 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 586 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1078 | pub struct BlockExpr { | 587 | pub struct TypeParam { |
1079 | pub(crate) syntax: SyntaxNode, | 588 | pub(crate) syntax: SyntaxNode, |
1080 | } | 589 | } |
1081 | impl ast::AttrsOwner for BlockExpr {} | 590 | impl ast::AttrsOwner for TypeParam {} |
1082 | impl ast::ModuleItemOwner for BlockExpr {} | 591 | impl ast::NameOwner for TypeParam {} |
1083 | impl BlockExpr { | 592 | impl ast::TypeBoundsOwner for TypeParam {} |
1084 | pub fn label(&self) -> Option<Label> { support::child(&self.syntax) } | 593 | impl TypeParam { |
1085 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 594 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } |
1086 | pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) } | 595 | pub fn default_type(&self) -> Option<Type> { support::child(&self.syntax) } |
1087 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1088 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | ||
1089 | } | 596 | } |
1090 | /// Return expression. | ||
1091 | /// | ||
1092 | /// ``` | ||
1093 | /// || ❰ return 42 ❱; | ||
1094 | /// | ||
1095 | /// fn bar() { | ||
1096 | /// ❰ return ❱; | ||
1097 | /// } | ||
1098 | /// ``` | ||
1099 | /// | ||
1100 | /// [Reference](https://doc.rust-lang.org/reference/expressions/return-expr.html) | ||
1101 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 597 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1102 | pub struct ReturnExpr { | 598 | pub struct WherePred { |
1103 | pub(crate) syntax: SyntaxNode, | 599 | pub(crate) syntax: SyntaxNode, |
1104 | } | 600 | } |
1105 | impl ast::AttrsOwner for ReturnExpr {} | 601 | impl ast::TypeBoundsOwner for WherePred {} |
1106 | impl ReturnExpr { | 602 | impl WherePred { |
1107 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 603 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } |
604 | pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) } | ||
605 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | ||
606 | support::token(&self.syntax, T![lifetime]) | ||
607 | } | ||
608 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
1108 | } | 609 | } |
1109 | /// Call expression (not to be confused with method call expression, it is | ||
1110 | /// a separate ast node). | ||
1111 | /// | ||
1112 | /// ``` | ||
1113 | /// ❰ foo() ❱; | ||
1114 | /// ❰ &str::len("bar") ❱; | ||
1115 | /// ❰ <&str as PartialEq<&str>>::eq(&"", &"") ❱; | ||
1116 | /// ``` | ||
1117 | /// | ||
1118 | /// [Reference](https://doc.rust-lang.org/reference/expressions/call-expr.html) | ||
1119 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 610 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1120 | pub struct CallExpr { | 611 | pub struct Literal { |
1121 | pub(crate) syntax: SyntaxNode, | 612 | pub(crate) syntax: SyntaxNode, |
1122 | } | 613 | } |
1123 | impl ast::ArgListOwner for CallExpr {} | 614 | impl ast::AttrsOwner for Literal {} |
1124 | impl CallExpr { | 615 | impl Literal {} |
1125 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1126 | } | ||
1127 | /// Method call expression. | ||
1128 | /// | ||
1129 | /// ``` | ||
1130 | /// ❰ receiver_expr.method() ❱; | ||
1131 | /// ❰ receiver_expr.method::<T>(42, true) ❱; | ||
1132 | /// | ||
1133 | /// ❰ ❰ ❰ foo.bar() ❱ .baz() ❱ .bruh() ❱; | ||
1134 | /// ``` | ||
1135 | /// | ||
1136 | /// [Reference](https://doc.rust-lang.org/reference/expressions/method-call-expr.html) | ||
1137 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 616 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1138 | pub struct MethodCallExpr { | 617 | pub struct ExprStmt { |
1139 | pub(crate) syntax: SyntaxNode, | 618 | pub(crate) syntax: SyntaxNode, |
1140 | } | 619 | } |
1141 | impl ast::AttrsOwner for MethodCallExpr {} | 620 | impl ast::AttrsOwner for ExprStmt {} |
1142 | impl ast::ArgListOwner for MethodCallExpr {} | 621 | impl ExprStmt { |
1143 | impl MethodCallExpr { | ||
1144 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 622 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1145 | pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } | 623 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
1146 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
1147 | pub fn type_arg_list(&self) -> Option<TypeArgList> { support::child(&self.syntax) } | ||
1148 | } | 624 | } |
1149 | /// Index expression a.k.a. subscript operator call. | ||
1150 | /// | ||
1151 | /// ``` | ||
1152 | /// ❰ foo[42] ❱; | ||
1153 | /// ``` | ||
1154 | /// | ||
1155 | /// [Reference](https://doc.rust-lang.org/reference/expressions/array-expr.html) | ||
1156 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 625 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1157 | pub struct IndexExpr { | 626 | pub struct LetStmt { |
1158 | pub(crate) syntax: SyntaxNode, | 627 | pub(crate) syntax: SyntaxNode, |
1159 | } | 628 | } |
1160 | impl ast::AttrsOwner for IndexExpr {} | 629 | impl ast::AttrsOwner for LetStmt {} |
1161 | impl IndexExpr { | 630 | impl LetStmt { |
1162 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | 631 | pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) } |
1163 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | 632 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
633 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
634 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
635 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
636 | pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
637 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
1164 | } | 638 | } |
1165 | /// Field access expression. | ||
1166 | /// | ||
1167 | /// ``` | ||
1168 | /// ❰ expr.bar ❱; | ||
1169 | /// | ||
1170 | /// ❰ ❰ ❰ foo.bar ❱ .baz ❱ .bruh ❱; | ||
1171 | /// ``` | ||
1172 | /// | ||
1173 | /// [Reference](https://doc.rust-lang.org/reference/expressions/field-expr.html) | ||
1174 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 639 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1175 | pub struct FieldExpr { | 640 | pub struct ArrayExpr { |
1176 | pub(crate) syntax: SyntaxNode, | 641 | pub(crate) syntax: SyntaxNode, |
1177 | } | 642 | } |
1178 | impl ast::AttrsOwner for FieldExpr {} | 643 | impl ast::AttrsOwner for ArrayExpr {} |
1179 | impl FieldExpr { | 644 | impl ArrayExpr { |
645 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | ||
646 | pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) } | ||
1180 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 647 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1181 | pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } | 648 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
1182 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | 649 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } |
1183 | } | 650 | } |
1184 | /// Await operator call expression. | ||
1185 | /// | ||
1186 | /// ``` | ||
1187 | /// ❰ expr.await ❱; | ||
1188 | /// ``` | ||
1189 | /// | ||
1190 | /// [Reference](https://doc.rust-lang.org/reference/expressions/await-expr.html) | ||
1191 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 651 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1192 | pub struct AwaitExpr { | 652 | pub struct AwaitExpr { |
1193 | pub(crate) syntax: SyntaxNode, | 653 | pub(crate) syntax: SyntaxNode, |
@@ -1198,1579 +658,739 @@ impl AwaitExpr { | |||
1198 | pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } | 658 | pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } |
1199 | pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) } | 659 | pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) } |
1200 | } | 660 | } |
1201 | /// The question mark operator call. | ||
1202 | /// | ||
1203 | /// ``` | ||
1204 | /// ❰ expr? ❱; | ||
1205 | /// ``` | ||
1206 | /// | ||
1207 | /// [Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#the-question-mark-operator) | ||
1208 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 661 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1209 | pub struct TryExpr { | 662 | pub struct BinExpr { |
1210 | pub(crate) syntax: SyntaxNode, | 663 | pub(crate) syntax: SyntaxNode, |
1211 | } | 664 | } |
1212 | impl ast::AttrsOwner for TryExpr {} | 665 | impl ast::AttrsOwner for BinExpr {} |
1213 | impl TryExpr { | 666 | impl BinExpr {} |
1214 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1215 | pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) } | ||
1216 | } | ||
1217 | /// Type cast expression. | ||
1218 | /// | ||
1219 | /// ``` | ||
1220 | /// ❰ expr as T ❱; | ||
1221 | /// ``` | ||
1222 | /// | ||
1223 | /// [Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#type-cast-expressions) | ||
1224 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 667 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1225 | pub struct CastExpr { | 668 | pub struct BoxExpr { |
1226 | pub(crate) syntax: SyntaxNode, | 669 | pub(crate) syntax: SyntaxNode, |
1227 | } | 670 | } |
1228 | impl ast::AttrsOwner for CastExpr {} | 671 | impl ast::AttrsOwner for BoxExpr {} |
1229 | impl CastExpr { | 672 | impl BoxExpr { |
673 | pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) } | ||
1230 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 674 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1231 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } | 675 | } |
1232 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
1233 | } | ||
1234 | /// Borrow operator call. | ||
1235 | /// | ||
1236 | /// ``` | ||
1237 | /// ❰ &foo ❱; | ||
1238 | /// ❰ &mut bar ❱; | ||
1239 | /// ❰ &raw const bar ❱; | ||
1240 | /// ❰ &raw mut bar ❱; | ||
1241 | /// ``` | ||
1242 | /// | ||
1243 | /// [Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#borrow-operators) | ||
1244 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 676 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1245 | pub struct RefExpr { | 677 | pub struct BreakExpr { |
1246 | pub(crate) syntax: SyntaxNode, | 678 | pub(crate) syntax: SyntaxNode, |
1247 | } | 679 | } |
1248 | impl ast::AttrsOwner for RefExpr {} | 680 | impl ast::AttrsOwner for BreakExpr {} |
1249 | impl RefExpr { | 681 | impl BreakExpr { |
1250 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } | 682 | pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) } |
1251 | pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) } | 683 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
1252 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | 684 | support::token(&self.syntax, T![lifetime]) |
1253 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | 685 | } |
1254 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 686 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1255 | } | 687 | } |
1256 | /// Prefix operator call. This is either `!` or `*` or `-`. | ||
1257 | /// | ||
1258 | /// ``` | ||
1259 | /// ❰ !foo ❱; | ||
1260 | /// ❰ *bar ❱; | ||
1261 | /// ❰ -42 ❱; | ||
1262 | /// ``` | ||
1263 | /// | ||
1264 | /// [Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html) | ||
1265 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 688 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1266 | pub struct PrefixExpr { | 689 | pub struct CallExpr { |
1267 | pub(crate) syntax: SyntaxNode, | 690 | pub(crate) syntax: SyntaxNode, |
1268 | } | 691 | } |
1269 | impl ast::AttrsOwner for PrefixExpr {} | 692 | impl ast::AttrsOwner for CallExpr {} |
1270 | impl PrefixExpr { | 693 | impl ast::ArgListOwner for CallExpr {} |
694 | impl CallExpr { | ||
1271 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 695 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1272 | } | 696 | } |
1273 | /// Box operator call. | ||
1274 | /// | ||
1275 | /// ``` | ||
1276 | /// ❰ box 42 ❱; | ||
1277 | /// ``` | ||
1278 | /// | ||
1279 | /// [RFC](https://github.com/rust-lang/rfcs/blob/0806be4f282144cfcd55b1d20284b43f87cbe1c6/text/0809-box-and-in-for-stdlib.md) | ||
1280 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 697 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1281 | pub struct BoxExpr { | 698 | pub struct CastExpr { |
1282 | pub(crate) syntax: SyntaxNode, | 699 | pub(crate) syntax: SyntaxNode, |
1283 | } | 700 | } |
1284 | impl ast::AttrsOwner for BoxExpr {} | 701 | impl ast::AttrsOwner for CastExpr {} |
1285 | impl BoxExpr { | 702 | impl CastExpr { |
1286 | pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) } | ||
1287 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 703 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
704 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } | ||
705 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
1288 | } | 706 | } |
1289 | /// Range operator call. | ||
1290 | /// | ||
1291 | /// ``` | ||
1292 | /// ❰ 0..42 ❱; | ||
1293 | /// ❰ ..42 ❱; | ||
1294 | /// ❰ 0.. ❱; | ||
1295 | /// ❰ .. ❱; | ||
1296 | /// ❰ 0..=42 ❱; | ||
1297 | /// ❰ ..=42 ❱; | ||
1298 | /// ``` | ||
1299 | /// | ||
1300 | /// [Reference](https://doc.rust-lang.org/reference/expressions/range-expr.html) | ||
1301 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 707 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1302 | pub struct RangeExpr { | 708 | pub struct ClosureExpr { |
1303 | pub(crate) syntax: SyntaxNode, | 709 | pub(crate) syntax: SyntaxNode, |
1304 | } | 710 | } |
1305 | impl ast::AttrsOwner for RangeExpr {} | 711 | impl ast::AttrsOwner for ClosureExpr {} |
1306 | impl RangeExpr {} | 712 | impl ClosureExpr { |
1307 | /// Binary operator call. | 713 | pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } |
1308 | /// Includes all arithmetic, logic, bitwise and assignment operators. | 714 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } |
1309 | /// | 715 | pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) } |
1310 | /// ``` | 716 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } |
1311 | /// ❰ 2 + ❰ 2 * 2 ❱ ❱; | 717 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } |
1312 | /// ❰ ❰ true && false ❱ || true ❱; | 718 | pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } |
1313 | /// ``` | ||
1314 | /// | ||
1315 | /// [Reference](https://doc.rust-lang.org/reference/expressions/operator-expr.html#arithmetic-and-logical-binary-operators) | ||
1316 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1317 | pub struct BinExpr { | ||
1318 | pub(crate) syntax: SyntaxNode, | ||
1319 | } | 719 | } |
1320 | impl ast::AttrsOwner for BinExpr {} | ||
1321 | impl BinExpr {} | ||
1322 | /// [Raw] string, [raw] byte string, char, byte, integer, float or bool literal. | ||
1323 | /// | ||
1324 | /// ``` | ||
1325 | /// ❰ "str" ❱; | ||
1326 | /// ❰ br##"raw byte str"## ❱; | ||
1327 | /// ❰ 'c' ❱; | ||
1328 | /// ❰ b'c' ❱; | ||
1329 | /// ❰ 42 ❱; | ||
1330 | /// ❰ 1e9 ❱; | ||
1331 | /// ❰ true ❱; | ||
1332 | /// ``` | ||
1333 | /// | ||
1334 | /// [Reference](https://doc.rust-lang.org/reference/expressions/literal-expr.html) | ||
1335 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 720 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1336 | pub struct Literal { | 721 | pub struct ContinueExpr { |
1337 | pub(crate) syntax: SyntaxNode, | 722 | pub(crate) syntax: SyntaxNode, |
1338 | } | 723 | } |
1339 | impl Literal {} | 724 | impl ast::AttrsOwner for ContinueExpr {} |
1340 | /// Match expression. | 725 | impl ContinueExpr { |
1341 | /// | 726 | pub fn continue_token(&self) -> Option<SyntaxToken> { |
1342 | /// ``` | 727 | support::token(&self.syntax, T![continue]) |
1343 | /// ❰ | 728 | } |
1344 | /// match expr { | 729 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
1345 | /// Pat1 => {} | 730 | support::token(&self.syntax, T![lifetime]) |
1346 | /// Pat2(_) => 42, | 731 | } |
1347 | /// } | 732 | } |
1348 | /// ❱ | ||
1349 | /// ``` | ||
1350 | /// | ||
1351 | /// [Reference](https://doc.rust-lang.org/reference/expressions/match-expr.html) | ||
1352 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 733 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1353 | pub struct MatchExpr { | 734 | pub struct EffectExpr { |
1354 | pub(crate) syntax: SyntaxNode, | 735 | pub(crate) syntax: SyntaxNode, |
1355 | } | 736 | } |
1356 | impl ast::AttrsOwner for MatchExpr {} | 737 | impl ast::AttrsOwner for EffectExpr {} |
1357 | impl MatchExpr { | 738 | impl EffectExpr { |
1358 | pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) } | 739 | pub fn label(&self) -> Option<Label> { support::child(&self.syntax) } |
1359 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 740 | pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) } |
1360 | pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) } | 741 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } |
742 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } | ||
743 | pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) } | ||
1361 | } | 744 | } |
1362 | /// Match arm list part of match expression. Includes its inner attributes. | ||
1363 | /// | ||
1364 | /// ``` | ||
1365 | /// match expr | ||
1366 | /// ❰ | ||
1367 | /// { | ||
1368 | /// #![inner_attr] | ||
1369 | /// Pat1 => {} | ||
1370 | /// Pat2(_) => 42, | ||
1371 | /// } | ||
1372 | /// ❱ | ||
1373 | /// ``` | ||
1374 | /// | ||
1375 | /// [Reference](https://doc.rust-lang.org/reference/expressions/match-expr.html) | ||
1376 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 745 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1377 | pub struct MatchArmList { | 746 | pub struct FieldExpr { |
1378 | pub(crate) syntax: SyntaxNode, | 747 | pub(crate) syntax: SyntaxNode, |
1379 | } | 748 | } |
1380 | impl ast::AttrsOwner for MatchArmList {} | 749 | impl ast::AttrsOwner for FieldExpr {} |
1381 | impl MatchArmList { | 750 | impl FieldExpr { |
1382 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 751 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1383 | pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) } | 752 | pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } |
1384 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 753 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } |
1385 | } | 754 | } |
1386 | /// Match arm. | ||
1387 | /// Note: record struct literals are not valid as target match expression | ||
1388 | /// due to ambiguity. | ||
1389 | /// ``` | ||
1390 | /// match expr { | ||
1391 | /// ❰ #[attr] Pattern(it) if bool_cond => it ❱, | ||
1392 | /// } | ||
1393 | /// ``` | ||
1394 | /// | ||
1395 | /// [Reference](https://doc.rust-lang.org/reference/expressions/match-expr.html) | ||
1396 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 755 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1397 | pub struct MatchArm { | 756 | pub struct ForExpr { |
1398 | pub(crate) syntax: SyntaxNode, | 757 | pub(crate) syntax: SyntaxNode, |
1399 | } | 758 | } |
1400 | impl ast::AttrsOwner for MatchArm {} | 759 | impl ast::AttrsOwner for ForExpr {} |
1401 | impl MatchArm { | 760 | impl ast::LoopBodyOwner for ForExpr {} |
761 | impl ForExpr { | ||
762 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | ||
1402 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | 763 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
1403 | pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) } | 764 | pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) } |
1404 | pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) } | 765 | pub fn iterable(&self) -> Option<Expr> { support::child(&self.syntax) } |
1405 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1406 | } | 766 | } |
1407 | /// Match guard. | ||
1408 | /// | ||
1409 | /// ``` | ||
1410 | /// match expr { | ||
1411 | /// Pattern(it) ❰ if bool_cond ❱ => it, | ||
1412 | /// } | ||
1413 | /// ``` | ||
1414 | /// | ||
1415 | /// [Reference](https://doc.rust-lang.org/reference/expressions/match-expr.html#match-guards) | ||
1416 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 767 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1417 | pub struct MatchGuard { | 768 | pub struct IfExpr { |
1418 | pub(crate) syntax: SyntaxNode, | 769 | pub(crate) syntax: SyntaxNode, |
1419 | } | 770 | } |
1420 | impl MatchGuard { | 771 | impl ast::AttrsOwner for IfExpr {} |
772 | impl IfExpr { | ||
1421 | pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) } | 773 | pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) } |
1422 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 774 | pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) } |
775 | pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) } | ||
1423 | } | 776 | } |
1424 | /// Record literal expression. The same syntax is used for structs, | 777 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1425 | /// unions and record enum variants. | 778 | pub struct IndexExpr { |
1426 | /// | ||
1427 | /// ``` | ||
1428 | /// ❰ | ||
1429 | /// foo::Bar { | ||
1430 | /// #![inner_attr] | ||
1431 | /// baz: 42, | ||
1432 | /// bruh: true, | ||
1433 | /// ..spread | ||
1434 | /// } | ||
1435 | /// ❱ | ||
1436 | /// ``` | ||
1437 | /// | ||
1438 | /// [Reference](https://doc.rust-lang.org/reference/expressions/struct-expr.html) | ||
1439 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1440 | pub struct RecordLit { | ||
1441 | pub(crate) syntax: SyntaxNode, | 779 | pub(crate) syntax: SyntaxNode, |
1442 | } | 780 | } |
1443 | impl RecordLit { | 781 | impl ast::AttrsOwner for IndexExpr {} |
1444 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | 782 | impl IndexExpr { |
1445 | pub fn record_field_list(&self) -> Option<RecordFieldList> { support::child(&self.syntax) } | 783 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } |
784 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | ||
1446 | } | 785 | } |
1447 | /// Record field list including enclosing curly braces. | ||
1448 | /// | ||
1449 | /// foo::Bar ❰ | ||
1450 | /// { | ||
1451 | /// baz: 42, | ||
1452 | /// ..spread | ||
1453 | /// } | ||
1454 | /// ❱ | ||
1455 | /// | ||
1456 | /// [Reference](https://doc.rust-lang.org/reference/expressions/struct-expr.html) | ||
1457 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 786 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1458 | pub struct RecordFieldList { | 787 | pub struct LoopExpr { |
1459 | pub(crate) syntax: SyntaxNode, | 788 | pub(crate) syntax: SyntaxNode, |
1460 | } | 789 | } |
1461 | impl RecordFieldList { | 790 | impl ast::AttrsOwner for LoopExpr {} |
1462 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 791 | impl ast::LoopBodyOwner for LoopExpr {} |
1463 | pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) } | 792 | impl LoopExpr { |
1464 | pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } | 793 | pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) } |
1465 | pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1466 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | ||
1467 | } | 794 | } |
1468 | /// Record field. | ||
1469 | /// | ||
1470 | /// ``` | ||
1471 | /// foo::Bar { | ||
1472 | /// ❰ #[attr] baz: 42 ❱ | ||
1473 | /// } | ||
1474 | /// ``` | ||
1475 | /// | ||
1476 | /// [Reference](https://doc.rust-lang.org/reference/expressions/struct-expr.html) | ||
1477 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 795 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1478 | pub struct RecordField { | 796 | pub struct MatchExpr { |
1479 | pub(crate) syntax: SyntaxNode, | 797 | pub(crate) syntax: SyntaxNode, |
1480 | } | 798 | } |
1481 | impl ast::AttrsOwner for RecordField {} | 799 | impl ast::AttrsOwner for MatchExpr {} |
1482 | impl RecordField { | 800 | impl MatchExpr { |
1483 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | 801 | pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) } |
1484 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | ||
1485 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 802 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
803 | pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) } | ||
1486 | } | 804 | } |
1487 | /// Disjunction of patterns. | ||
1488 | /// | ||
1489 | /// ``` | ||
1490 | /// let ❰ Foo(it) | Bar(it) | Baz(it) ❱ = bruh; | ||
1491 | /// ``` | ||
1492 | /// | ||
1493 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html) | ||
1494 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 805 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1495 | pub struct OrPat { | 806 | pub struct MethodCallExpr { |
1496 | pub(crate) syntax: SyntaxNode, | 807 | pub(crate) syntax: SyntaxNode, |
1497 | } | 808 | } |
1498 | impl OrPat { | 809 | impl ast::AttrsOwner for MethodCallExpr {} |
1499 | pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) } | 810 | impl ast::ArgListOwner for MethodCallExpr {} |
811 | impl MethodCallExpr { | ||
812 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
813 | pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } | ||
814 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
815 | pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) } | ||
1500 | } | 816 | } |
1501 | /// Parenthesized pattern. | ||
1502 | /// Note: parens are only used for grouping, this is not a tuple pattern. | ||
1503 | /// | ||
1504 | /// ``` | ||
1505 | /// if let ❰ &(0..=42) ❱ = foo {} | ||
1506 | /// ``` | ||
1507 | /// | ||
1508 | /// https://doc.rust-lang.org/reference/patterns.html#grouped-patterns | ||
1509 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 817 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1510 | pub struct ParenPat { | 818 | pub struct ParenExpr { |
1511 | pub(crate) syntax: SyntaxNode, | 819 | pub(crate) syntax: SyntaxNode, |
1512 | } | 820 | } |
1513 | impl ParenPat { | 821 | impl ast::AttrsOwner for ParenExpr {} |
822 | impl ParenExpr { | ||
1514 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 823 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
1515 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | 824 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1516 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 825 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
1517 | } | 826 | } |
1518 | /// Reference pattern. | ||
1519 | /// Note: this has nothing to do with `ref` keyword, the latter is used in bind patterns. | ||
1520 | /// | ||
1521 | /// ``` | ||
1522 | /// let ❰ &mut foo ❱ = bar; | ||
1523 | /// | ||
1524 | /// let ❰ & ❰ &mut ❰ &_ ❱ ❱ ❱ = baz; | ||
1525 | /// ``` | ||
1526 | /// | ||
1527 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#reference-patterns) | ||
1528 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 827 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1529 | pub struct RefPat { | 828 | pub struct PathExpr { |
1530 | pub(crate) syntax: SyntaxNode, | 829 | pub(crate) syntax: SyntaxNode, |
1531 | } | 830 | } |
1532 | impl RefPat { | 831 | impl ast::AttrsOwner for PathExpr {} |
1533 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } | 832 | impl PathExpr { |
1534 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | 833 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
1535 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | ||
1536 | } | 834 | } |
1537 | /// Box pattern. | ||
1538 | /// | ||
1539 | /// ``` | ||
1540 | /// let ❰ box foo ❱ = box 42; | ||
1541 | /// ``` | ||
1542 | /// | ||
1543 | /// [Unstable book](https://doc.rust-lang.org/unstable-book/language-features/box-patterns.html) | ||
1544 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 835 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1545 | pub struct BoxPat { | 836 | pub struct PrefixExpr { |
1546 | pub(crate) syntax: SyntaxNode, | ||
1547 | } | ||
1548 | impl BoxPat { | ||
1549 | pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) } | ||
1550 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | ||
1551 | } | ||
1552 | /// Bind pattern. | ||
1553 | /// | ||
1554 | /// ``` | ||
1555 | /// match foo { | ||
1556 | /// Some(❰ ref mut bar ❱) => {} | ||
1557 | /// ❰ baz @ None ❱ => {} | ||
1558 | /// } | ||
1559 | /// ``` | ||
1560 | /// | ||
1561 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#identifier-patterns) | ||
1562 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1563 | pub struct BindPat { | ||
1564 | pub(crate) syntax: SyntaxNode, | 837 | pub(crate) syntax: SyntaxNode, |
1565 | } | 838 | } |
1566 | impl ast::AttrsOwner for BindPat {} | 839 | impl ast::AttrsOwner for PrefixExpr {} |
1567 | impl ast::NameOwner for BindPat {} | 840 | impl PrefixExpr { |
1568 | impl BindPat { | 841 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1569 | pub fn ref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ref]) } | ||
1570 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
1571 | pub fn at_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![@]) } | ||
1572 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | ||
1573 | } | 842 | } |
1574 | /// Placeholder pattern a.k.a. the wildcard pattern or the underscore. | ||
1575 | /// | ||
1576 | /// ``` | ||
1577 | /// let ❰ _ ❱ = foo; | ||
1578 | /// ``` | ||
1579 | /// | ||
1580 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#wildcard-pattern) | ||
1581 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 843 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1582 | pub struct PlaceholderPat { | 844 | pub struct RangeExpr { |
1583 | pub(crate) syntax: SyntaxNode, | 845 | pub(crate) syntax: SyntaxNode, |
1584 | } | 846 | } |
1585 | impl PlaceholderPat { | 847 | impl ast::AttrsOwner for RangeExpr {} |
1586 | pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } | 848 | impl RangeExpr {} |
1587 | } | 849 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1588 | /// Rest-of-the record/tuple pattern. | 850 | pub struct RecordExpr { |
1589 | /// Note: this is not the unbonded range pattern (even more: it doesn't exist). | ||
1590 | /// | ||
1591 | /// ``` | ||
1592 | /// let Foo { bar, ❰ .. ❱ } = baz; | ||
1593 | /// let (❰ .. ❱, bruh) = (42, 24, 42); | ||
1594 | /// let Bruuh(❰ .. ❱) = bruuuh; | ||
1595 | /// ``` | ||
1596 | /// | ||
1597 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#struct-patterns) | ||
1598 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1599 | pub struct DotDotPat { | ||
1600 | pub(crate) syntax: SyntaxNode, | 851 | pub(crate) syntax: SyntaxNode, |
1601 | } | 852 | } |
1602 | impl DotDotPat { | 853 | impl RecordExpr { |
1603 | pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } | 854 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
855 | pub fn record_expr_field_list(&self) -> Option<RecordExprFieldList> { | ||
856 | support::child(&self.syntax) | ||
857 | } | ||
1604 | } | 858 | } |
1605 | /// Path pattern. | ||
1606 | /// Doesn't include the underscore pattern (it is a special case, namely `PlaceholderPat`). | ||
1607 | /// | ||
1608 | /// ``` | ||
1609 | /// let ❰ foo::bar::Baz ❱ { .. } = bruh; | ||
1610 | /// if let ❰ CONST ❱ = 42 {} | ||
1611 | /// ``` | ||
1612 | /// | ||
1613 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#path-patterns) | ||
1614 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 859 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1615 | pub struct PathPat { | 860 | pub struct RefExpr { |
1616 | pub(crate) syntax: SyntaxNode, | 861 | pub(crate) syntax: SyntaxNode, |
1617 | } | 862 | } |
1618 | impl PathPat { | 863 | impl ast::AttrsOwner for RefExpr {} |
1619 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | 864 | impl RefExpr { |
865 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } | ||
866 | pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) } | ||
867 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
868 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
869 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1620 | } | 870 | } |
1621 | /// Slice pattern. | ||
1622 | /// | ||
1623 | /// ``` | ||
1624 | /// let ❰ [foo, bar, baz] ❱ = [1, 2, 3]; | ||
1625 | /// ``` | ||
1626 | /// | ||
1627 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#slice-patterns) | ||
1628 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 871 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1629 | pub struct SlicePat { | 872 | pub struct ReturnExpr { |
1630 | pub(crate) syntax: SyntaxNode, | 873 | pub(crate) syntax: SyntaxNode, |
1631 | } | 874 | } |
1632 | impl SlicePat { | 875 | impl ast::AttrsOwner for ReturnExpr {} |
1633 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | 876 | impl ReturnExpr { |
1634 | pub fn args(&self) -> AstChildren<Pat> { support::children(&self.syntax) } | 877 | pub fn return_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![return]) } |
1635 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | 878 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1636 | } | 879 | } |
1637 | /// Range pattern. | ||
1638 | /// | ||
1639 | /// ``` | ||
1640 | /// match foo { | ||
1641 | /// ❰ 0..42 ❱ => {} | ||
1642 | /// ❰ 0..=42 ❱ => {} | ||
1643 | /// } | ||
1644 | /// ``` | ||
1645 | /// | ||
1646 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#range-patterns) | ||
1647 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 880 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1648 | pub struct RangePat { | 881 | pub struct TryExpr { |
1649 | pub(crate) syntax: SyntaxNode, | 882 | pub(crate) syntax: SyntaxNode, |
1650 | } | 883 | } |
1651 | impl RangePat {} | 884 | impl ast::AttrsOwner for TryExpr {} |
1652 | /// Literal pattern. | 885 | impl TryExpr { |
1653 | /// Includes only bool, number, char, and string literals. | 886 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1654 | /// | 887 | pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) } |
1655 | /// ``` | 888 | } |
1656 | /// match foo { | ||
1657 | /// Number(❰ 42 ❱) => {} | ||
1658 | /// String(❰ "42" ❱) => {} | ||
1659 | /// Bool(❰ true ❱) => {} | ||
1660 | /// } | ||
1661 | /// ``` | ||
1662 | /// | ||
1663 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#literal-patterns) | ||
1664 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 889 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1665 | pub struct LiteralPat { | 890 | pub struct TupleExpr { |
1666 | pub(crate) syntax: SyntaxNode, | 891 | pub(crate) syntax: SyntaxNode, |
1667 | } | 892 | } |
1668 | impl LiteralPat { | 893 | impl ast::AttrsOwner for TupleExpr {} |
1669 | pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) } | 894 | impl TupleExpr { |
895 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | ||
896 | pub fn fields(&self) -> AstChildren<Expr> { support::children(&self.syntax) } | ||
897 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | ||
1670 | } | 898 | } |
1671 | /// Macro invocation in pattern position. | ||
1672 | /// | ||
1673 | /// ``` | ||
1674 | /// let ❰ foo!(my custom syntax) ❱ = baz; | ||
1675 | /// | ||
1676 | /// ``` | ||
1677 | /// [Reference](https://doc.rust-lang.org/reference/macros.html#macro-invocation) | ||
1678 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 899 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1679 | pub struct MacroPat { | 900 | pub struct WhileExpr { |
1680 | pub(crate) syntax: SyntaxNode, | 901 | pub(crate) syntax: SyntaxNode, |
1681 | } | 902 | } |
1682 | impl MacroPat { | 903 | impl ast::AttrsOwner for WhileExpr {} |
1683 | pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) } | 904 | impl ast::LoopBodyOwner for WhileExpr {} |
905 | impl WhileExpr { | ||
906 | pub fn while_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![while]) } | ||
907 | pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) } | ||
1684 | } | 908 | } |
1685 | /// Record literal pattern. | ||
1686 | /// | ||
1687 | /// ``` | ||
1688 | /// let ❰ foo::Bar { baz, .. } ❱ = bruh; | ||
1689 | /// ``` | ||
1690 | /// | ||
1691 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#struct-patterns) | ||
1692 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 909 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1693 | pub struct RecordPat { | 910 | pub struct Label { |
1694 | pub(crate) syntax: SyntaxNode, | 911 | pub(crate) syntax: SyntaxNode, |
1695 | } | 912 | } |
1696 | impl RecordPat { | 913 | impl Label { |
1697 | pub fn record_field_pat_list(&self) -> Option<RecordFieldPatList> { | 914 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
1698 | support::child(&self.syntax) | 915 | support::token(&self.syntax, T![lifetime]) |
1699 | } | 916 | } |
1700 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
1701 | } | 917 | } |
1702 | /// Record literal's field patterns list including enclosing curly braces. | ||
1703 | /// | ||
1704 | /// ``` | ||
1705 | /// let foo::Bar ❰ { baz, bind @ bruh, .. } ❱ = bruuh; | ||
1706 | /// `` | ||
1707 | /// | ||
1708 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#struct-patterns) | ||
1709 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 918 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1710 | pub struct RecordFieldPatList { | 919 | pub struct RecordExprFieldList { |
1711 | pub(crate) syntax: SyntaxNode, | 920 | pub(crate) syntax: SyntaxNode, |
1712 | } | 921 | } |
1713 | impl RecordFieldPatList { | 922 | impl ast::AttrsOwner for RecordExprFieldList {} |
923 | impl RecordExprFieldList { | ||
1714 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 924 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
1715 | pub fn pats(&self) -> AstChildren<RecordInnerPat> { support::children(&self.syntax) } | 925 | pub fn fields(&self) -> AstChildren<RecordExprField> { support::children(&self.syntax) } |
1716 | pub fn record_field_pats(&self) -> AstChildren<RecordFieldPat> { | ||
1717 | support::children(&self.syntax) | ||
1718 | } | ||
1719 | pub fn bind_pats(&self) -> AstChildren<BindPat> { support::children(&self.syntax) } | ||
1720 | pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } | 926 | pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } |
927 | pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1721 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 928 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
1722 | } | 929 | } |
1723 | /// Record literal's field pattern. | 930 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1724 | /// Note: record literal can also match tuple structs. | 931 | pub struct RecordExprField { |
1725 | /// | ||
1726 | /// ``` | ||
1727 | /// let Foo { ❰ bar: _ ❱ } = baz; | ||
1728 | /// let TupleStruct { ❰ 0: _ ❱ } = bruh; | ||
1729 | /// ``` | ||
1730 | /// | ||
1731 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#struct-patterns) | ||
1732 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1733 | pub struct RecordFieldPat { | ||
1734 | pub(crate) syntax: SyntaxNode, | 932 | pub(crate) syntax: SyntaxNode, |
1735 | } | 933 | } |
1736 | impl ast::AttrsOwner for RecordFieldPat {} | 934 | impl ast::AttrsOwner for RecordExprField {} |
1737 | impl RecordFieldPat { | 935 | impl RecordExprField { |
1738 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | 936 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } |
1739 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } | 937 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } |
1740 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | 938 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1741 | } | 939 | } |
1742 | /// Tuple struct literal pattern. | ||
1743 | /// | ||
1744 | /// ``` | ||
1745 | /// let ❰ foo::Bar(baz, bruh) ❱ = bruuh; | ||
1746 | /// ``` | ||
1747 | /// | ||
1748 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#tuple-struct-patterns) | ||
1749 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 940 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1750 | pub struct TupleStructPat { | 941 | pub struct ArgList { |
1751 | pub(crate) syntax: SyntaxNode, | 942 | pub(crate) syntax: SyntaxNode, |
1752 | } | 943 | } |
1753 | impl TupleStructPat { | 944 | impl ArgList { |
1754 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
1755 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 945 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
1756 | pub fn args(&self) -> AstChildren<Pat> { support::children(&self.syntax) } | 946 | pub fn args(&self) -> AstChildren<Expr> { support::children(&self.syntax) } |
1757 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 947 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
1758 | } | 948 | } |
1759 | /// Tuple pattern. | ||
1760 | /// Note: this doesn't include tuple structs (see `TupleStructPat`) | ||
1761 | /// | ||
1762 | /// ``` | ||
1763 | /// let ❰ (foo, bar, .., baz) ❱ = bruh; | ||
1764 | /// ``` | ||
1765 | /// | ||
1766 | /// [Reference](https://doc.rust-lang.org/reference/patterns.html#tuple-patterns) | ||
1767 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 949 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1768 | pub struct TuplePat { | 950 | pub struct Condition { |
1769 | pub(crate) syntax: SyntaxNode, | 951 | pub(crate) syntax: SyntaxNode, |
1770 | } | 952 | } |
1771 | impl TuplePat { | 953 | impl Condition { |
1772 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 954 | pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) } |
1773 | pub fn args(&self) -> AstChildren<Pat> { support::children(&self.syntax) } | 955 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
1774 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 956 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } |
957 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1775 | } | 958 | } |
1776 | /// Visibility. | ||
1777 | /// | ||
1778 | /// ``` | ||
1779 | /// ❰ pub mod ❱ foo; | ||
1780 | /// ❰ pub(crate) ❱ struct Bar; | ||
1781 | /// ❰ pub(self) ❱ enum Baz {} | ||
1782 | /// ❰ pub(super) ❱ fn bruh() {} | ||
1783 | /// ❰ pub(in bruuh::bruuuh) ❱ type T = u64; | ||
1784 | /// ``` | ||
1785 | /// | ||
1786 | /// [Reference](https://doc.rust-lang.org/reference/visibility-and-privacy.html) | ||
1787 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 959 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1788 | pub struct Visibility { | 960 | pub struct MatchArmList { |
1789 | pub(crate) syntax: SyntaxNode, | 961 | pub(crate) syntax: SyntaxNode, |
1790 | } | 962 | } |
1791 | impl Visibility { | 963 | impl ast::AttrsOwner for MatchArmList {} |
1792 | pub fn pub_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pub]) } | 964 | impl MatchArmList { |
1793 | pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) } | 965 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
1794 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | 966 | pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) } |
1795 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | 967 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
1796 | } | 968 | } |
1797 | /// Single identifier. | ||
1798 | /// Note(@matklad): `Name` is for things that install a new name into the scope, | ||
1799 | /// `NameRef` is a usage of a name. Most of the time, this definition/reference | ||
1800 | /// distinction can be determined purely syntactically, ie in | ||
1801 | /// ``` | ||
1802 | /// fn foo() { foo() } | ||
1803 | /// ``` | ||
1804 | /// the first foo is `Name`, the second one is `NameRef`. | ||
1805 | /// The notable exception are patterns, where in | ||
1806 | /// `` | ||
1807 | /// let x = 92 | ||
1808 | /// ``` | ||
1809 | /// `x` can be semantically either a name or a name ref, depeding on | ||
1810 | /// wether there's an `x` constant in scope. | ||
1811 | /// We use `Name` for patterns, and disambiguate semantically (see `NameClass` in ide_db). | ||
1812 | /// | ||
1813 | /// ``` | ||
1814 | /// let ❰ foo ❱ = bar; | ||
1815 | /// struct ❰ Baz ❱; | ||
1816 | /// fn ❰ bruh ❱() {} | ||
1817 | /// ``` | ||
1818 | /// | ||
1819 | /// [Reference](https://doc.rust-lang.org/reference/identifiers.html) | ||
1820 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 969 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1821 | pub struct Name { | 970 | pub struct MatchArm { |
1822 | pub(crate) syntax: SyntaxNode, | 971 | pub(crate) syntax: SyntaxNode, |
1823 | } | 972 | } |
1824 | impl Name { | 973 | impl ast::AttrsOwner for MatchArm {} |
1825 | pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) } | 974 | impl MatchArm { |
1826 | } | 975 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
1827 | /// Reference to a name. | 976 | pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) } |
1828 | /// See the explanation on the difference between `Name` and `NameRef` | 977 | pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) } |
1829 | /// in `Name` ast node docs. | 978 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1830 | /// | 979 | pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) } |
1831 | /// ``` | ||
1832 | /// let foo = ❰ bar ❱(❰ Baz(❰ bruh ❱) ❱; | ||
1833 | /// ``` | ||
1834 | /// | ||
1835 | /// [Reference](https://doc.rust-lang.org/reference/identifiers.html) | ||
1836 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1837 | pub struct NameRef { | ||
1838 | pub(crate) syntax: SyntaxNode, | ||
1839 | } | 980 | } |
1840 | impl NameRef {} | ||
1841 | /// Macro call. | ||
1842 | /// Includes all of its attributes and doc comments. | ||
1843 | /// | ||
1844 | /// ``` | ||
1845 | /// ❰ | ||
1846 | /// /// Docs | ||
1847 | /// #[attr] | ||
1848 | /// macro_rules! foo { // macro rules is also a macro call | ||
1849 | /// ($bar: tt) => {} | ||
1850 | /// } | ||
1851 | /// ❱ | ||
1852 | /// | ||
1853 | /// // semicolon is a part of `MacroCall` when it is used in item positions | ||
1854 | /// ❰ foo!(); ❱ | ||
1855 | /// | ||
1856 | /// fn main() { | ||
1857 | /// ❰ foo!() ❱; // macro call in expression positions doesn't include the semi | ||
1858 | /// } | ||
1859 | /// ``` | ||
1860 | /// | ||
1861 | /// [Reference](https://doc.rust-lang.org/reference/macros.html) | ||
1862 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 981 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1863 | pub struct MacroCall { | 982 | pub struct MatchGuard { |
1864 | pub(crate) syntax: SyntaxNode, | 983 | pub(crate) syntax: SyntaxNode, |
1865 | } | 984 | } |
1866 | impl ast::NameOwner for MacroCall {} | 985 | impl MatchGuard { |
1867 | impl ast::AttrsOwner for MacroCall {} | 986 | pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) } |
1868 | impl ast::DocCommentsOwner for MacroCall {} | 987 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1869 | impl MacroCall { | ||
1870 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
1871 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
1872 | pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } | ||
1873 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
1874 | } | 988 | } |
1875 | /// Attribute. | ||
1876 | /// | ||
1877 | /// ``` | ||
1878 | /// ❰ #![inner_attr] ❱ | ||
1879 | /// | ||
1880 | /// ❰ #[attr] ❱ | ||
1881 | /// ❰ #[foo = "bar"] ❱ | ||
1882 | /// ❰ #[baz(bruh::bruuh = "42")] ❱ | ||
1883 | /// struct Foo; | ||
1884 | /// ``` | ||
1885 | /// | ||
1886 | /// [Reference](https://doc.rust-lang.org/reference/attributes.html) | ||
1887 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 989 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1888 | pub struct Attr { | 990 | pub struct ArrayType { |
1889 | pub(crate) syntax: SyntaxNode, | 991 | pub(crate) syntax: SyntaxNode, |
1890 | } | 992 | } |
1891 | impl Attr { | 993 | impl ArrayType { |
1892 | pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) } | ||
1893 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } | ||
1894 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } | 994 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } |
1895 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | 995 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
1896 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 996 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } |
1897 | pub fn input(&self) -> Option<AttrInput> { support::child(&self.syntax) } | 997 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } |
1898 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | 998 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } |
1899 | } | 999 | } |
1900 | /// Stores a list of lexer tokens and other `TokenTree`s. | ||
1901 | /// It appears in attributes, macro_rules and macro call (foo!) | ||
1902 | /// | ||
1903 | /// ``` | ||
1904 | /// macro_call! ❰ { my syntax here } ❱; | ||
1905 | /// ``` | ||
1906 | /// | ||
1907 | /// [Reference](https://doc.rust-lang.org/reference/macros.html) | ||
1908 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1000 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1909 | pub struct TokenTree { | 1001 | pub struct DynTraitType { |
1910 | pub(crate) syntax: SyntaxNode, | ||
1911 | } | ||
1912 | impl TokenTree {} | ||
1913 | /// Generic lifetime, type and constants parameters list **declaration**. | ||
1914 | /// | ||
1915 | /// ``` | ||
1916 | /// fn foo❰ <'a, 'b, T, U, const BAR: u64> ❱() {} | ||
1917 | /// | ||
1918 | /// struct Baz❰ <T> ❱(T); | ||
1919 | /// | ||
1920 | /// impl❰ <T> ❱ Bruh<T> {} | ||
1921 | /// | ||
1922 | /// type Bruuh = for❰ <'a> ❱ fn(&'a str) -> &'a str; | ||
1923 | /// ``` | ||
1924 | /// | ||
1925 | /// [Reference](https://doc.rust-lang.org/reference/items/generics.html) | ||
1926 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1927 | pub struct TypeParamList { | ||
1928 | pub(crate) syntax: SyntaxNode, | 1002 | pub(crate) syntax: SyntaxNode, |
1929 | } | 1003 | } |
1930 | impl TypeParamList { | 1004 | impl DynTraitType { |
1931 | pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } | 1005 | pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) } |
1932 | pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) } | 1006 | pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) } |
1933 | pub fn type_params(&self) -> AstChildren<TypeParam> { support::children(&self.syntax) } | ||
1934 | pub fn lifetime_params(&self) -> AstChildren<LifetimeParam> { support::children(&self.syntax) } | ||
1935 | pub fn const_params(&self) -> AstChildren<ConstParam> { support::children(&self.syntax) } | ||
1936 | pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } | ||
1937 | } | 1007 | } |
1938 | /// Single type parameter **declaration**. | ||
1939 | /// | ||
1940 | /// ``` | ||
1941 | /// fn foo<❰ K ❱, ❰ I ❱, ❰ E: Debug ❱, ❰ V = DefaultType ❱>() {} | ||
1942 | /// ``` | ||
1943 | /// | ||
1944 | /// [Reference](https://doc.rust-lang.org/reference/items/generics.html) | ||
1945 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1008 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1946 | pub struct TypeParam { | 1009 | pub struct FnPtrType { |
1947 | pub(crate) syntax: SyntaxNode, | 1010 | pub(crate) syntax: SyntaxNode, |
1948 | } | 1011 | } |
1949 | impl ast::NameOwner for TypeParam {} | 1012 | impl FnPtrType { |
1950 | impl ast::AttrsOwner for TypeParam {} | 1013 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } |
1951 | impl ast::TypeBoundsOwner for TypeParam {} | 1014 | pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } |
1952 | impl TypeParam { | 1015 | pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } |
1953 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 1016 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } |
1954 | pub fn default_type(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 1017 | pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) } |
1018 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } | ||
1019 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } | ||
1955 | } | 1020 | } |
1956 | /// Const generic parameter **declaration**. | ||
1957 | /// ``` | ||
1958 | /// fn foo<T, U, ❰ const BAR: usize ❱, ❰ const BAZ: bool ❱>() {} | ||
1959 | /// ``` | ||
1960 | /// | ||
1961 | /// [RFC](https://github.com/rust-lang/rfcs/blob/master/text/2000-const-generics.md#declaring-a-const-parameter) | ||
1962 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1021 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1963 | pub struct ConstParam { | 1022 | pub struct ForType { |
1964 | pub(crate) syntax: SyntaxNode, | 1023 | pub(crate) syntax: SyntaxNode, |
1965 | } | 1024 | } |
1966 | impl ast::NameOwner for ConstParam {} | 1025 | impl ForType { |
1967 | impl ast::AttrsOwner for ConstParam {} | 1026 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } |
1968 | impl ast::TypeAscriptionOwner for ConstParam {} | 1027 | pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) } |
1969 | impl ConstParam { | 1028 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
1970 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
1971 | pub fn default_val(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
1972 | } | 1029 | } |
1973 | /// Lifetime parameter **declaration**. | ||
1974 | /// | ||
1975 | /// ``` | ||
1976 | /// fn foo<❰ 'a ❱, ❰ 'b ❱, V, G, D>(bar: &'a str, baz: &'b mut str) {} | ||
1977 | /// ``` | ||
1978 | /// | ||
1979 | /// [Reference](https://doc.rust-lang.org/reference/items/generics.html) | ||
1980 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1030 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
1981 | pub struct LifetimeParam { | 1031 | pub struct ImplTraitType { |
1982 | pub(crate) syntax: SyntaxNode, | 1032 | pub(crate) syntax: SyntaxNode, |
1983 | } | 1033 | } |
1984 | impl ast::AttrsOwner for LifetimeParam {} | 1034 | impl ImplTraitType { |
1985 | impl LifetimeParam { | 1035 | pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } |
1986 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | 1036 | pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) } |
1987 | support::token(&self.syntax, T![lifetime]) | ||
1988 | } | ||
1989 | } | ||
1990 | /// Type bound declaration clause. | ||
1991 | /// | ||
1992 | /// ``` | ||
1993 | /// fn foo<T: ❰ ?Sized ❱ + ❰ Debug ❱>() {} | ||
1994 | /// | ||
1995 | /// trait Bar<T> | ||
1996 | /// where | ||
1997 | /// T: ❰ Send ❱ + ❰ Sync ❱ | ||
1998 | /// { | ||
1999 | /// type Baz: ❰ !Sync ❱ + ❰ Debug ❱ + ❰ ?const Add ❱; | ||
2000 | /// } | ||
2001 | /// ``` | ||
2002 | /// | ||
2003 | /// [Reference](https://doc.rust-lang.org/reference/trait-bounds.html) | ||
2004 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2005 | pub struct TypeBound { | ||
2006 | pub(crate) syntax: SyntaxNode, | ||
2007 | } | 1037 | } |
2008 | impl TypeBound { | ||
2009 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | ||
2010 | support::token(&self.syntax, T![lifetime]) | ||
2011 | } | ||
2012 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } | ||
2013 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
2014 | } | ||
2015 | /// Type bounds list. | ||
2016 | /// | ||
2017 | /// ``` | ||
2018 | /// | ||
2019 | /// fn foo<T: ❰ ?Sized + Debug ❱>() {} | ||
2020 | /// | ||
2021 | /// trait Bar<T> | ||
2022 | /// where | ||
2023 | /// T: ❰ Send + Sync ❱ | ||
2024 | /// { | ||
2025 | /// type Baz: ❰ !Sync + Debug ❱; | ||
2026 | /// } | ||
2027 | /// ``` | ||
2028 | /// | ||
2029 | /// [Reference](https://doc.rust-lang.org/reference/trait-bounds.html) | ||
2030 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1038 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2031 | pub struct TypeBoundList { | 1039 | pub struct InferType { |
2032 | pub(crate) syntax: SyntaxNode, | 1040 | pub(crate) syntax: SyntaxNode, |
2033 | } | 1041 | } |
2034 | impl TypeBoundList { | 1042 | impl InferType { |
2035 | pub fn bounds(&self) -> AstChildren<TypeBound> { support::children(&self.syntax) } | 1043 | pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } |
2036 | } | 1044 | } |
2037 | /// Single where predicate. | ||
2038 | /// | ||
2039 | /// ``` | ||
2040 | /// trait Foo<'a, 'b, T> | ||
2041 | /// where | ||
2042 | /// ❰ 'a: 'b ❱, | ||
2043 | /// ❰ T: IntoIterator ❱, | ||
2044 | /// ❰ for<'c> <T as IntoIterator>::Item: Bar<'c> ❱ | ||
2045 | /// {} | ||
2046 | /// ``` | ||
2047 | /// | ||
2048 | /// [Reference](https://doc.rust-lang.org/reference/items/generics.html#where-clauses) | ||
2049 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1045 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2050 | pub struct WherePred { | 1046 | pub struct NeverType { |
2051 | pub(crate) syntax: SyntaxNode, | 1047 | pub(crate) syntax: SyntaxNode, |
2052 | } | 1048 | } |
2053 | impl ast::TypeBoundsOwner for WherePred {} | 1049 | impl NeverType { |
2054 | impl WherePred { | 1050 | pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } |
2055 | pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } | ||
2056 | pub fn type_param_list(&self) -> Option<TypeParamList> { support::child(&self.syntax) } | ||
2057 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | ||
2058 | support::token(&self.syntax, T![lifetime]) | ||
2059 | } | ||
2060 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
2061 | } | 1051 | } |
2062 | /// Where clause. | ||
2063 | /// | ||
2064 | /// ``` | ||
2065 | /// trait Foo<'a, T> ❰ where 'a: 'static, T: Debug ❱ {} | ||
2066 | /// | ||
2067 | /// ``` | ||
2068 | /// | ||
2069 | /// [Reference](https://doc.rust-lang.org/reference/items/generics.html#where-clauses) | ||
2070 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1052 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2071 | pub struct WhereClause { | 1053 | pub struct ParenType { |
2072 | pub(crate) syntax: SyntaxNode, | 1054 | pub(crate) syntax: SyntaxNode, |
2073 | } | 1055 | } |
2074 | impl WhereClause { | 1056 | impl ParenType { |
2075 | pub fn where_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![where]) } | 1057 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
2076 | pub fn predicates(&self) -> AstChildren<WherePred> { support::children(&self.syntax) } | 1058 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
2077 | } | 1059 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
2078 | /// Abi declaration. | ||
2079 | /// Note: the abi string is optional. | ||
2080 | /// | ||
2081 | /// ``` | ||
2082 | /// ❰ extern "C" ❱ { | ||
2083 | /// fn foo() {} | ||
2084 | /// } | ||
2085 | /// | ||
2086 | /// type Bar = ❰ extern ❱ fn() -> u32; | ||
2087 | /// | ||
2088 | /// type Baz = ❰ extern r#"stdcall"# ❱ fn() -> bool; | ||
2089 | /// ``` | ||
2090 | /// | ||
2091 | /// - [Extern blocks reference](https://doc.rust-lang.org/reference/items/external-blocks.html) | ||
2092 | /// - [FFI function pointers reference](https://doc.rust-lang.org/reference/items/functions.html#functions) | ||
2093 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2094 | pub struct Abi { | ||
2095 | pub(crate) syntax: SyntaxNode, | ||
2096 | } | 1060 | } |
2097 | impl Abi {} | ||
2098 | /// Expression statement. | ||
2099 | /// | ||
2100 | /// ``` | ||
2101 | /// ❰ 42; ❱ | ||
2102 | /// ❰ foo(); ❱ | ||
2103 | /// ❰ (); ❱ | ||
2104 | /// ❰ {}; ❱ | ||
2105 | /// | ||
2106 | /// // constructions with trailing curly brace can omit the semicolon | ||
2107 | /// // but only when there are satements immediately after them (this is important!) | ||
2108 | /// ❰ if bool_cond { } ❱ | ||
2109 | /// ❰ loop {} ❱ | ||
2110 | /// ❰ somestatment; ❱ | ||
2111 | /// ``` | ||
2112 | /// | ||
2113 | /// [Reference](https://doc.rust-lang.org/reference/statements.html) | ||
2114 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1061 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2115 | pub struct ExprStmt { | 1062 | pub struct PtrType { |
2116 | pub(crate) syntax: SyntaxNode, | 1063 | pub(crate) syntax: SyntaxNode, |
2117 | } | 1064 | } |
2118 | impl ast::AttrsOwner for ExprStmt {} | 1065 | impl PtrType { |
2119 | impl ExprStmt { | 1066 | pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) } |
2120 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 1067 | pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } |
2121 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | 1068 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } |
1069 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
2122 | } | 1070 | } |
2123 | /// Let statement. | ||
2124 | /// | ||
2125 | /// ``` | ||
2126 | /// ❰ #[attr] let foo; ❱ | ||
2127 | /// ❰ let bar: u64; ❱ | ||
2128 | /// ❰ let baz = 42; ❱ | ||
2129 | /// ❰ let bruh: bool = true; ❱ | ||
2130 | /// ``` | ||
2131 | /// | ||
2132 | /// [Reference](https://doc.rust-lang.org/reference/statements.html#let-statements) | ||
2133 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1071 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2134 | pub struct LetStmt { | 1072 | pub struct RefType { |
2135 | pub(crate) syntax: SyntaxNode, | 1073 | pub(crate) syntax: SyntaxNode, |
2136 | } | 1074 | } |
2137 | impl ast::AttrsOwner for LetStmt {} | 1075 | impl RefType { |
2138 | impl ast::TypeAscriptionOwner for LetStmt {} | 1076 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } |
2139 | impl LetStmt { | 1077 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
2140 | pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) } | 1078 | support::token(&self.syntax, T![lifetime]) |
2141 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | 1079 | } |
2142 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 1080 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } |
2143 | pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) } | 1081 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
2144 | pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } | ||
2145 | } | 1082 | } |
2146 | /// Condition of `if` or `while` expression. | ||
2147 | /// | ||
2148 | /// ``` | ||
2149 | /// if ❰ true ❱ {} | ||
2150 | /// if ❰ let Pat(foo) = bar ❱ {} | ||
2151 | /// | ||
2152 | /// while ❰ true ❱ {} | ||
2153 | /// while ❰ let Pat(baz) = bruh ❱ {} | ||
2154 | /// ``` | ||
2155 | /// | ||
2156 | /// [If expression reference](https://doc.rust-lang.org/reference/expressions/if-expr.html) | ||
2157 | /// [While expression reference](https://doc.rust-lang.org/reference/expressions/loop-expr.html#predicate-loops) | ||
2158 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1083 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2159 | pub struct Condition { | 1084 | pub struct SliceType { |
2160 | pub(crate) syntax: SyntaxNode, | 1085 | pub(crate) syntax: SyntaxNode, |
2161 | } | 1086 | } |
2162 | impl Condition { | 1087 | impl SliceType { |
2163 | pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) } | 1088 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } |
2164 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | 1089 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } |
2165 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 1090 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } |
2166 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | ||
2167 | } | 1091 | } |
2168 | /// Parameter list **declaration**. | ||
2169 | /// | ||
2170 | /// ``` | ||
2171 | /// fn foo❰ (a: u32, b: bool) ❱ -> u32 {} | ||
2172 | /// let bar = ❰ |a, b| ❱ {}; | ||
2173 | /// | ||
2174 | /// impl Baz { | ||
2175 | /// fn bruh❰ (&self, a: u32) ❱ {} | ||
2176 | /// } | ||
2177 | /// ``` | ||
2178 | /// | ||
2179 | /// [Reference](https://doc.rust-lang.org/reference/items/functions.html)ocs to codegen script | ||
2180 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1092 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2181 | pub struct ParamList { | 1093 | pub struct TupleType { |
2182 | pub(crate) syntax: SyntaxNode, | 1094 | pub(crate) syntax: SyntaxNode, |
2183 | } | 1095 | } |
2184 | impl ParamList { | 1096 | impl TupleType { |
2185 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 1097 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
2186 | pub fn self_param(&self) -> Option<SelfParam> { support::child(&self.syntax) } | 1098 | pub fn fields(&self) -> AstChildren<Type> { support::children(&self.syntax) } |
2187 | pub fn params(&self) -> AstChildren<Param> { support::children(&self.syntax) } | ||
2188 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 1099 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
2189 | } | 1100 | } |
2190 | /// Self parameter **declaration**. | ||
2191 | /// | ||
2192 | /// ``` | ||
2193 | /// impl Bruh { | ||
2194 | /// fn foo(❰ self ❱) {} | ||
2195 | /// fn bar(❰ &self ❱) {} | ||
2196 | /// fn baz(❰ &mut self ❱) {} | ||
2197 | /// fn blah<'a>(❰ &'a self ❱) {} | ||
2198 | /// fn blin(❰ self: Box<Self> ❱) {} | ||
2199 | /// } | ||
2200 | /// ``` | ||
2201 | /// | ||
2202 | /// [Reference](https://doc.rust-lang.org/reference/items/functions.html) | ||
2203 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1101 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2204 | pub struct SelfParam { | 1102 | pub struct TypeBound { |
2205 | pub(crate) syntax: SyntaxNode, | 1103 | pub(crate) syntax: SyntaxNode, |
2206 | } | 1104 | } |
2207 | impl ast::TypeAscriptionOwner for SelfParam {} | 1105 | impl TypeBound { |
2208 | impl ast::AttrsOwner for SelfParam {} | ||
2209 | impl SelfParam { | ||
2210 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } | ||
2211 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
2212 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | 1106 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { |
2213 | support::token(&self.syntax, T![lifetime]) | 1107 | support::token(&self.syntax, T![lifetime]) |
2214 | } | 1108 | } |
2215 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | 1109 | pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) } |
1110 | pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } | ||
2216 | } | 1111 | } |
2217 | /// Parameter **declaration**. | ||
2218 | /// | ||
2219 | /// ``` | ||
2220 | /// fn foo(❰ #[attr] Pat(bar): Pat(u32) ❱, ❰ #[attr] _: bool ❱) {} | ||
2221 | /// | ||
2222 | /// extern "C" { | ||
2223 | /// fn bar(❰ baz: u32 ❱, ❰ ... ❱) -> u32; | ||
2224 | /// } | ||
2225 | /// ``` | ||
2226 | /// | ||
2227 | /// [Reference](https://doc.rust-lang.org/reference/items/functions.html) | ||
2228 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1112 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2229 | pub struct Param { | 1113 | pub struct IdentPat { |
2230 | pub(crate) syntax: SyntaxNode, | 1114 | pub(crate) syntax: SyntaxNode, |
2231 | } | 1115 | } |
2232 | impl ast::TypeAscriptionOwner for Param {} | 1116 | impl ast::AttrsOwner for IdentPat {} |
2233 | impl ast::AttrsOwner for Param {} | 1117 | impl ast::NameOwner for IdentPat {} |
2234 | impl Param { | 1118 | impl IdentPat { |
1119 | pub fn ref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ref]) } | ||
1120 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } | ||
1121 | pub fn at_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![@]) } | ||
2235 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } | 1122 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
2236 | pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) } | ||
2237 | } | 1123 | } |
2238 | /// Use declaration. | 1124 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2239 | /// | 1125 | pub struct BoxPat { |
2240 | /// ``` | ||
2241 | /// ❰ #[attr] pub use foo; ❱ | ||
2242 | /// ❰ use bar as baz; ❱ | ||
2243 | /// ❰ use bruh::{self, bruuh}; ❱ | ||
2244 | /// ❰ use { blin::blen, blah::* }; | ||
2245 | /// ``` | ||
2246 | /// | ||
2247 | /// [Reference](https://doc.rust-lang.org/reference/items/use-declarations.html) | ||
2248 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2249 | pub struct UseItem { | ||
2250 | pub(crate) syntax: SyntaxNode, | 1126 | pub(crate) syntax: SyntaxNode, |
2251 | } | 1127 | } |
2252 | impl ast::AttrsOwner for UseItem {} | 1128 | impl BoxPat { |
2253 | impl ast::VisibilityOwner for UseItem {} | 1129 | pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) } |
2254 | impl UseItem { | 1130 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
2255 | pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) } | ||
2256 | pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) } | ||
2257 | } | 1131 | } |
2258 | /// Use tree. | ||
2259 | /// | ||
2260 | /// ``` | ||
2261 | /// pub use ❰ foo::❰ * ❱ ❱; | ||
2262 | /// use ❰ bar as baz ❱; | ||
2263 | /// use ❰ bruh::bruuh::{ ❰ self ❱, ❰ blin ❱ } ❱; | ||
2264 | /// use ❰ { ❰ blin::blen ❱ } ❱ | ||
2265 | /// ``` | ||
2266 | /// | ||
2267 | /// [Reference](https://doc.rust-lang.org/reference/items/use-declarations.html) | ||
2268 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1132 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2269 | pub struct UseTree { | 1133 | pub struct RestPat { |
2270 | pub(crate) syntax: SyntaxNode, | 1134 | pub(crate) syntax: SyntaxNode, |
2271 | } | 1135 | } |
2272 | impl UseTree { | 1136 | impl RestPat { |
2273 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | 1137 | pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } |
2274 | pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) } | 1138 | } |
2275 | pub fn use_tree_list(&self) -> Option<UseTreeList> { support::child(&self.syntax) } | 1139 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2276 | pub fn alias(&self) -> Option<Alias> { support::child(&self.syntax) } | 1140 | pub struct LiteralPat { |
2277 | } | ||
2278 | /// Item alias. | ||
2279 | /// Note: this is not the type alias. | ||
2280 | /// | ||
2281 | /// ``` | ||
2282 | /// use foo ❰ as bar ❱; | ||
2283 | /// use baz::{bruh ❰ as _ ❱}; | ||
2284 | /// extern crate bruuh ❰ as blin ❱; | ||
2285 | /// ``` | ||
2286 | /// | ||
2287 | /// [Reference](https://doc.rust-lang.org/reference/items/use-declarations.html) | ||
2288 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2289 | pub struct Alias { | ||
2290 | pub(crate) syntax: SyntaxNode, | 1141 | pub(crate) syntax: SyntaxNode, |
2291 | } | 1142 | } |
2292 | impl ast::NameOwner for Alias {} | 1143 | impl LiteralPat { |
2293 | impl Alias { | 1144 | pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) } |
2294 | pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } | ||
2295 | } | 1145 | } |
2296 | /// Sublist of use trees. | ||
2297 | /// | ||
2298 | /// ``` | ||
2299 | /// use bruh::bruuh::❰ { ❰ self ❱, ❰ blin ❱ } ❱; | ||
2300 | /// use ❰ { blin::blen::❰ {} ❱ } ❱ | ||
2301 | /// ``` | ||
2302 | /// | ||
2303 | /// [Reference](https://doc.rust-lang.org/reference/items/use-declarations.html) | ||
2304 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1146 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2305 | pub struct UseTreeList { | 1147 | pub struct MacroPat { |
2306 | pub(crate) syntax: SyntaxNode, | 1148 | pub(crate) syntax: SyntaxNode, |
2307 | } | 1149 | } |
2308 | impl UseTreeList { | 1150 | impl MacroPat { |
2309 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 1151 | pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) } |
2310 | pub fn use_trees(&self) -> AstChildren<UseTree> { support::children(&self.syntax) } | ||
2311 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | ||
2312 | } | 1152 | } |
2313 | /// Extern crate item. | ||
2314 | /// | ||
2315 | /// ``` | ||
2316 | /// ❰ #[attr] pub extern crate foo; ❱ | ||
2317 | /// ❰ extern crate self as bar; ❱ | ||
2318 | /// ``` | ||
2319 | /// | ||
2320 | /// [Reference](https://doc.rust-lang.org/reference/items/extern-crates.html) | ||
2321 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1153 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2322 | pub struct ExternCrateItem { | 1154 | pub struct OrPat { |
2323 | pub(crate) syntax: SyntaxNode, | 1155 | pub(crate) syntax: SyntaxNode, |
2324 | } | 1156 | } |
2325 | impl ast::AttrsOwner for ExternCrateItem {} | 1157 | impl OrPat { |
2326 | impl ast::VisibilityOwner for ExternCrateItem {} | 1158 | pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) } |
2327 | impl ExternCrateItem { | ||
2328 | pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } | ||
2329 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
2330 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
2331 | pub fn alias(&self) -> Option<Alias> { support::child(&self.syntax) } | ||
2332 | } | 1159 | } |
2333 | /// Call site arguments list. | ||
2334 | /// | ||
2335 | /// ``` | ||
2336 | /// foo::<T, U>❰ (42, true) ❱; | ||
2337 | /// ``` | ||
2338 | /// | ||
2339 | /// [Reference](https://doc.rust-lang.org/reference/expressions/call-expr.html) | ||
2340 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1160 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2341 | pub struct ArgList { | 1161 | pub struct ParenPat { |
2342 | pub(crate) syntax: SyntaxNode, | 1162 | pub(crate) syntax: SyntaxNode, |
2343 | } | 1163 | } |
2344 | impl ArgList { | 1164 | impl ParenPat { |
2345 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } | 1165 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
2346 | pub fn args(&self) -> AstChildren<Expr> { support::children(&self.syntax) } | 1166 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
2347 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | 1167 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
2348 | } | 1168 | } |
2349 | /// Path to a symbol. Includes single identifier names and elaborate paths with | ||
2350 | /// generic parameters. | ||
2351 | /// | ||
2352 | /// ``` | ||
2353 | /// (0..10).❰ ❰ collect ❱ ::<Vec<_>> ❱(); | ||
2354 | /// ❰ ❰ ❰ Vec ❱ ::<u8> ❱ ::with_capacity ❱(1024); | ||
2355 | /// ❰ ❰ <❰ Foo ❱ as ❰ ❰ bar ❱ ::Bar ❱> ❱ ::baz ❱(); | ||
2356 | /// ❰ ❰ <❰ bruh ❱> ❱ ::bruuh ❱(); | ||
2357 | /// ``` | ||
2358 | /// | ||
2359 | /// [Reference](https://doc.rust-lang.org/reference/paths.html) | ||
2360 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1169 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2361 | pub struct Path { | 1170 | pub struct PathPat { |
2362 | pub(crate) syntax: SyntaxNode, | 1171 | pub(crate) syntax: SyntaxNode, |
2363 | } | 1172 | } |
2364 | impl Path { | 1173 | impl PathPat { |
2365 | pub fn segment(&self) -> Option<PathSegment> { support::child(&self.syntax) } | 1174 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
2366 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } | ||
2367 | pub fn qualifier(&self) -> Option<Path> { support::child(&self.syntax) } | ||
2368 | } | 1175 | } |
2369 | /// Segment of the path to a symbol. | ||
2370 | /// Only path segment of an absolute path holds the `::` token, | ||
2371 | /// all other `::` tokens that connect path segments reside under `Path` itself.` | ||
2372 | /// | ||
2373 | /// ``` | ||
2374 | /// (0..10).❰ collect ❱ :: ❰ <Vec<_>> ❱(); | ||
2375 | /// ❰ Vec ❱ :: ❰ <u8> ❱ :: ❰ with_capacity ❱(1024); | ||
2376 | /// ❰ <❰ Foo ❱ as ❰ bar ❱ :: ❰ Bar ❱> ❱ :: ❰ baz ❱(); | ||
2377 | /// ❰ <❰ bruh ❱> ❱ :: ❰ bruuh ❱(); | ||
2378 | /// | ||
2379 | /// // Note that only in this case `::` token is inlcuded: | ||
2380 | /// ❰ ::foo ❱; | ||
2381 | /// ``` | ||
2382 | /// | ||
2383 | /// [Reference](https://doc.rust-lang.org/reference/paths.html) | ||
2384 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1176 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2385 | pub struct PathSegment { | 1177 | pub struct WildcardPat { |
2386 | pub(crate) syntax: SyntaxNode, | 1178 | pub(crate) syntax: SyntaxNode, |
2387 | } | 1179 | } |
2388 | impl PathSegment { | 1180 | impl WildcardPat { |
2389 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } | 1181 | pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } |
2390 | pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } | ||
2391 | pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } | ||
2392 | pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) } | ||
2393 | pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } | ||
2394 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | ||
2395 | pub fn type_arg_list(&self) -> Option<TypeArgList> { support::child(&self.syntax) } | ||
2396 | pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } | ||
2397 | pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } | ||
2398 | pub fn path_type(&self) -> Option<PathType> { support::child(&self.syntax) } | ||
2399 | pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } | ||
2400 | } | ||
2401 | /// List of type arguments that are passed at generic instantiation site. | ||
2402 | /// | ||
2403 | /// ``` | ||
2404 | /// type _ = Foo ❰ ::<'a, u64, Item = Bar, 42, {true}> ❱::Bar; | ||
2405 | /// | ||
2406 | /// Vec❰ ::<bool> ❱::(); | ||
2407 | /// ``` | ||
2408 | /// | ||
2409 | /// [Reference](https://doc.rust-lang.org/reference/paths.html#paths-in-expressions) | ||
2410 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2411 | pub struct TypeArgList { | ||
2412 | pub(crate) syntax: SyntaxNode, | ||
2413 | } | ||
2414 | impl TypeArgList { | ||
2415 | pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } | ||
2416 | pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } | ||
2417 | pub fn generic_args(&self) -> AstChildren<GenericArg> { support::children(&self.syntax) } | ||
2418 | pub fn type_args(&self) -> AstChildren<TypeArg> { support::children(&self.syntax) } | ||
2419 | pub fn lifetime_args(&self) -> AstChildren<LifetimeArg> { support::children(&self.syntax) } | ||
2420 | pub fn assoc_type_args(&self) -> AstChildren<AssocTypeArg> { support::children(&self.syntax) } | ||
2421 | pub fn const_args(&self) -> AstChildren<ConstArg> { support::children(&self.syntax) } | ||
2422 | pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } | ||
2423 | } | 1182 | } |
2424 | /// Type argument that is passed at generic instantiation site. | ||
2425 | /// | ||
2426 | /// ``` | ||
2427 | /// type _ = Foo::<'a, ❰ u64 ❱, ❰ bool ❱, Item = Bar, 42>::Baz; | ||
2428 | /// ``` | ||
2429 | /// | ||
2430 | /// [Reference](https://doc.rust-lang.org/reference/paths.html#paths-in-expressions) | ||
2431 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1183 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2432 | pub struct TypeArg { | 1184 | pub struct RangePat { |
2433 | pub(crate) syntax: SyntaxNode, | 1185 | pub(crate) syntax: SyntaxNode, |
2434 | } | 1186 | } |
2435 | impl TypeArg { | 1187 | impl RangePat {} |
2436 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | ||
2437 | } | ||
2438 | /// Associated type argument that is passed at generic instantiation site. | ||
2439 | /// ``` | ||
2440 | /// type Foo = Bar::<'a, u64, bool, ❰ Item = Baz ❱, 42>::Bruh; | ||
2441 | /// | ||
2442 | /// trait Bruh<T>: Iterator<❰ Item: Debug ❱> {} | ||
2443 | /// ``` | ||
2444 | /// | ||
2445 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1188 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2446 | pub struct AssocTypeArg { | 1189 | pub struct RecordPat { |
2447 | pub(crate) syntax: SyntaxNode, | 1190 | pub(crate) syntax: SyntaxNode, |
2448 | } | 1191 | } |
2449 | impl ast::TypeBoundsOwner for AssocTypeArg {} | 1192 | impl RecordPat { |
2450 | impl AssocTypeArg { | 1193 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
2451 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } | 1194 | pub fn record_pat_field_list(&self) -> Option<RecordPatFieldList> { |
2452 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | 1195 | support::child(&self.syntax) |
2453 | pub fn type_ref(&self) -> Option<TypeRef> { support::child(&self.syntax) } | 1196 | } |
2454 | } | 1197 | } |
2455 | /// Lifetime argument that is passed at generic instantiation site. | ||
2456 | /// | ||
2457 | /// ``` | ||
2458 | /// fn foo<'a>(s: &'a str) { | ||
2459 | /// bar::<❰ 'a ❱>(s); | ||
2460 | /// } | ||
2461 | /// ``` | ||
2462 | /// | ||
2463 | /// [Reference](https://doc.rust-lang.org/reference/paths.html#paths-in-expressions) | ||
2464 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1198 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2465 | pub struct LifetimeArg { | 1199 | pub struct RefPat { |
2466 | pub(crate) syntax: SyntaxNode, | 1200 | pub(crate) syntax: SyntaxNode, |
2467 | } | 1201 | } |
2468 | impl LifetimeArg { | 1202 | impl RefPat { |
2469 | pub fn lifetime_token(&self) -> Option<SyntaxToken> { | 1203 | pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } |
2470 | support::token(&self.syntax, T![lifetime]) | 1204 | pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } |
2471 | } | 1205 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
2472 | } | 1206 | } |
2473 | /// Constant value argument that is passed at generic instantiation site. | ||
2474 | /// | ||
2475 | /// ``` | ||
2476 | /// foo::<u32, ❰ { true } ❱>(); | ||
2477 | /// | ||
2478 | /// bar::<❰ { 2 + 2} ❱>(); | ||
2479 | /// ``` | ||
2480 | /// | ||
2481 | /// [RFC](https://github.com/rust-lang/rfcs/blob/master/text/2000-const-generics.md#declaring-a-const-parameter) | ||
2482 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1207 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2483 | pub struct ConstArg { | 1208 | pub struct SlicePat { |
2484 | pub(crate) syntax: SyntaxNode, | 1209 | pub(crate) syntax: SyntaxNode, |
2485 | } | 1210 | } |
2486 | impl ConstArg { | 1211 | impl SlicePat { |
2487 | pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) } | 1212 | pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } |
2488 | pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) } | 1213 | pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) } |
1214 | pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } | ||
2489 | } | 1215 | } |
2490 | /// FIXME: (@edwin0cheng) Remove it to use ItemList instead | ||
2491 | /// https://github.com/rust-analyzer/rust-analyzer/pull/4083#discussion_r422666243 | ||
2492 | /// | ||
2493 | /// [Reference](https://doc.rust-lang.org/reference/macros.html) | ||
2494 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1216 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2495 | pub struct MacroItems { | 1217 | pub struct TuplePat { |
2496 | pub(crate) syntax: SyntaxNode, | 1218 | pub(crate) syntax: SyntaxNode, |
2497 | } | 1219 | } |
2498 | impl ast::ModuleItemOwner for MacroItems {} | 1220 | impl TuplePat { |
2499 | impl MacroItems {} | 1221 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
2500 | /// FIXME: (@edwin0cheng) add some documentation here. As per the writing | 1222 | pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) } |
2501 | /// of this comment this ast node is not used. | 1223 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } |
2502 | /// | 1224 | } |
2503 | /// ``` | ||
2504 | /// // FIXME: example here | ||
2505 | /// ``` | ||
2506 | /// | ||
2507 | /// [Reference](https://doc.rust-lang.org/reference/macros.html) | ||
2508 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1225 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2509 | pub struct MacroStmts { | 1226 | pub struct TupleStructPat { |
2510 | pub(crate) syntax: SyntaxNode, | 1227 | pub(crate) syntax: SyntaxNode, |
2511 | } | 1228 | } |
2512 | impl MacroStmts { | 1229 | impl TupleStructPat { |
2513 | pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) } | 1230 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } |
2514 | pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } | 1231 | pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } |
1232 | pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) } | ||
1233 | pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } | ||
2515 | } | 1234 | } |
2516 | /// List of items in an extern block. | ||
2517 | /// | ||
2518 | /// ``` | ||
2519 | /// extern "C" ❰ | ||
2520 | /// { | ||
2521 | /// fn foo(); | ||
2522 | /// static var: u32; | ||
2523 | /// } | ||
2524 | /// ❱ | ||
2525 | /// ``` | ||
2526 | /// | ||
2527 | /// [Reference](https://doc.rust-lang.org/reference/items/external-blocks.html) | ||
2528 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1235 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2529 | pub struct ExternItemList { | 1236 | pub struct RecordPatFieldList { |
2530 | pub(crate) syntax: SyntaxNode, | 1237 | pub(crate) syntax: SyntaxNode, |
2531 | } | 1238 | } |
2532 | impl ast::ModuleItemOwner for ExternItemList {} | 1239 | impl RecordPatFieldList { |
2533 | impl ExternItemList { | ||
2534 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } | 1240 | pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } |
2535 | pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) } | 1241 | pub fn fields(&self) -> AstChildren<RecordPatField> { support::children(&self.syntax) } |
1242 | pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } | ||
2536 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } | 1243 | pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } |
2537 | } | 1244 | } |
2538 | /// Extern block. | ||
2539 | /// | ||
2540 | /// ``` | ||
2541 | /// ❰ | ||
2542 | /// extern "C" { | ||
2543 | /// fn foo(); | ||
2544 | /// } | ||
2545 | /// ❱ | ||
2546 | /// | ||
2547 | /// ``` | ||
2548 | /// | ||
2549 | /// [Reference](https://doc.rust-lang.org/reference/items/external-blocks.html) | ||
2550 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1245 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2551 | pub struct ExternBlock { | 1246 | pub struct RecordPatField { |
2552 | pub(crate) syntax: SyntaxNode, | 1247 | pub(crate) syntax: SyntaxNode, |
2553 | } | 1248 | } |
2554 | impl ExternBlock { | 1249 | impl ast::AttrsOwner for RecordPatField {} |
2555 | pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } | 1250 | impl RecordPatField { |
2556 | pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) } | 1251 | pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } |
2557 | } | 1252 | pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } |
2558 | /// Meta item in an attribute. | 1253 | pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } |
2559 | /// | ||
2560 | /// ``` | ||
2561 | /// #[❰ bar::baz = "42" ❱] | ||
2562 | /// #[❰ bruh(bruuh("true")) ❱] | ||
2563 | /// struct Foo; | ||
2564 | /// ``` | ||
2565 | /// | ||
2566 | /// [Reference](https://doc.rust-lang.org/reference/attributes.html?highlight=meta,item#meta-item-attribute-syntax) | ||
2567 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2568 | pub struct MetaItem { | ||
2569 | pub(crate) syntax: SyntaxNode, | ||
2570 | } | ||
2571 | impl MetaItem { | ||
2572 | pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } | ||
2573 | pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } | ||
2574 | pub fn attr_input(&self) -> Option<AttrInput> { support::child(&self.syntax) } | ||
2575 | pub fn nested_meta_items(&self) -> AstChildren<MetaItem> { support::children(&self.syntax) } | ||
2576 | } | ||
2577 | /// Macro 2.0 definition. | ||
2578 | /// Their syntax is still WIP by rustc team... | ||
2579 | /// ``` | ||
2580 | /// ❰ | ||
2581 | /// macro foo { } | ||
2582 | /// ❱ | ||
2583 | /// ``` | ||
2584 | /// | ||
2585 | /// [RFC](https://github.com/rust-lang/rfcs/blob/master/text/1584-macros.md) | ||
2586 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2587 | pub struct MacroDef { | ||
2588 | pub(crate) syntax: SyntaxNode, | ||
2589 | } | ||
2590 | impl MacroDef { | ||
2591 | pub fn name(&self) -> Option<Name> { support::child(&self.syntax) } | ||
2592 | pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } | ||
2593 | } | ||
2594 | /// Any kind of nominal type definition. | ||
2595 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2596 | pub enum NominalDef { | ||
2597 | StructDef(StructDef), | ||
2598 | EnumDef(EnumDef), | ||
2599 | UnionDef(UnionDef), | ||
2600 | } | ||
2601 | impl ast::NameOwner for NominalDef {} | ||
2602 | impl ast::TypeParamsOwner for NominalDef {} | ||
2603 | impl ast::AttrsOwner for NominalDef {} | ||
2604 | /// Any kind of **declared** generic parameter | ||
2605 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2606 | pub enum GenericParam { | ||
2607 | LifetimeParam(LifetimeParam), | ||
2608 | TypeParam(TypeParam), | ||
2609 | ConstParam(ConstParam), | ||
2610 | } | 1254 | } |
2611 | /// Any kind of generic argument passed at instantiation site | ||
2612 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1255 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2613 | pub enum GenericArg { | 1256 | pub enum GenericArg { |
2614 | LifetimeArg(LifetimeArg), | ||
2615 | TypeArg(TypeArg), | 1257 | TypeArg(TypeArg), |
2616 | ConstArg(ConstArg), | ||
2617 | AssocTypeArg(AssocTypeArg), | 1258 | AssocTypeArg(AssocTypeArg), |
1259 | LifetimeArg(LifetimeArg), | ||
1260 | ConstArg(ConstArg), | ||
2618 | } | 1261 | } |
2619 | /// Any kind of construct valid in type context | ||
2620 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1262 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2621 | pub enum TypeRef { | 1263 | pub enum Type { |
2622 | ParenType(ParenType), | ||
2623 | TupleType(TupleType), | ||
2624 | NeverType(NeverType), | ||
2625 | PathType(PathType), | ||
2626 | PointerType(PointerType), | ||
2627 | ArrayType(ArrayType), | 1264 | ArrayType(ArrayType), |
2628 | SliceType(SliceType), | 1265 | DynTraitType(DynTraitType), |
2629 | ReferenceType(ReferenceType), | 1266 | FnPtrType(FnPtrType), |
2630 | PlaceholderType(PlaceholderType), | ||
2631 | FnPointerType(FnPointerType), | ||
2632 | ForType(ForType), | 1267 | ForType(ForType), |
2633 | ImplTraitType(ImplTraitType), | 1268 | ImplTraitType(ImplTraitType), |
2634 | DynTraitType(DynTraitType), | 1269 | InferType(InferType), |
2635 | } | 1270 | NeverType(NeverType), |
2636 | /// Any kind of top-level item that may appear in a module | 1271 | ParenType(ParenType), |
2637 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1272 | PathType(PathType), |
2638 | pub enum ModuleItem { | 1273 | PtrType(PtrType), |
2639 | StructDef(StructDef), | 1274 | RefType(RefType), |
2640 | UnionDef(UnionDef), | 1275 | SliceType(SliceType), |
2641 | EnumDef(EnumDef), | 1276 | TupleType(TupleType), |
2642 | FnDef(FnDef), | ||
2643 | TraitDef(TraitDef), | ||
2644 | TypeAliasDef(TypeAliasDef), | ||
2645 | ImplDef(ImplDef), | ||
2646 | UseItem(UseItem), | ||
2647 | ExternCrateItem(ExternCrateItem), | ||
2648 | ConstDef(ConstDef), | ||
2649 | StaticDef(StaticDef), | ||
2650 | Module(Module), | ||
2651 | MacroCall(MacroCall), | ||
2652 | ExternBlock(ExternBlock), | ||
2653 | } | ||
2654 | impl ast::NameOwner for ModuleItem {} | ||
2655 | impl ast::AttrsOwner for ModuleItem {} | ||
2656 | impl ast::VisibilityOwner for ModuleItem {} | ||
2657 | /// Any kind of item that may appear in an impl block | ||
2658 | /// | ||
2659 | /// // FIXME: impl blocks can also contain MacroCall | ||
2660 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2661 | pub enum AssocItem { | ||
2662 | FnDef(FnDef), | ||
2663 | TypeAliasDef(TypeAliasDef), | ||
2664 | ConstDef(ConstDef), | ||
2665 | } | ||
2666 | impl ast::NameOwner for AssocItem {} | ||
2667 | impl ast::AttrsOwner for AssocItem {} | ||
2668 | /// Any kind of item that may appear in an extern block | ||
2669 | /// | ||
2670 | /// // FIXME: extern blocks can also contain MacroCall | ||
2671 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
2672 | pub enum ExternItem { | ||
2673 | FnDef(FnDef), | ||
2674 | StaticDef(StaticDef), | ||
2675 | } | 1277 | } |
2676 | impl ast::NameOwner for ExternItem {} | ||
2677 | impl ast::AttrsOwner for ExternItem {} | ||
2678 | impl ast::VisibilityOwner for ExternItem {} | ||
2679 | /// Any kind of expression | ||
2680 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1278 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2681 | pub enum Expr { | 1279 | pub enum Expr { |
2682 | TupleExpr(TupleExpr), | ||
2683 | ArrayExpr(ArrayExpr), | 1280 | ArrayExpr(ArrayExpr), |
2684 | ParenExpr(ParenExpr), | 1281 | AwaitExpr(AwaitExpr), |
2685 | PathExpr(PathExpr), | 1282 | BinExpr(BinExpr), |
2686 | LambdaExpr(LambdaExpr), | ||
2687 | IfExpr(IfExpr), | ||
2688 | LoopExpr(LoopExpr), | ||
2689 | ForExpr(ForExpr), | ||
2690 | WhileExpr(WhileExpr), | ||
2691 | ContinueExpr(ContinueExpr), | ||
2692 | BreakExpr(BreakExpr), | ||
2693 | Label(Label), | ||
2694 | BlockExpr(BlockExpr), | 1283 | BlockExpr(BlockExpr), |
2695 | ReturnExpr(ReturnExpr), | 1284 | BoxExpr(BoxExpr), |
2696 | MatchExpr(MatchExpr), | 1285 | BreakExpr(BreakExpr), |
2697 | RecordLit(RecordLit), | ||
2698 | CallExpr(CallExpr), | 1286 | CallExpr(CallExpr), |
1287 | CastExpr(CastExpr), | ||
1288 | ClosureExpr(ClosureExpr), | ||
1289 | ContinueExpr(ContinueExpr), | ||
1290 | EffectExpr(EffectExpr), | ||
1291 | FieldExpr(FieldExpr), | ||
1292 | ForExpr(ForExpr), | ||
1293 | IfExpr(IfExpr), | ||
2699 | IndexExpr(IndexExpr), | 1294 | IndexExpr(IndexExpr), |
1295 | Literal(Literal), | ||
1296 | LoopExpr(LoopExpr), | ||
1297 | MacroCall(MacroCall), | ||
1298 | MatchExpr(MatchExpr), | ||
2700 | MethodCallExpr(MethodCallExpr), | 1299 | MethodCallExpr(MethodCallExpr), |
2701 | FieldExpr(FieldExpr), | 1300 | ParenExpr(ParenExpr), |
2702 | AwaitExpr(AwaitExpr), | 1301 | PathExpr(PathExpr), |
2703 | TryExpr(TryExpr), | ||
2704 | EffectExpr(EffectExpr), | ||
2705 | CastExpr(CastExpr), | ||
2706 | RefExpr(RefExpr), | ||
2707 | PrefixExpr(PrefixExpr), | 1302 | PrefixExpr(PrefixExpr), |
2708 | RangeExpr(RangeExpr), | 1303 | RangeExpr(RangeExpr), |
2709 | BinExpr(BinExpr), | 1304 | RecordExpr(RecordExpr), |
2710 | Literal(Literal), | 1305 | RefExpr(RefExpr), |
1306 | ReturnExpr(ReturnExpr), | ||
1307 | TryExpr(TryExpr), | ||
1308 | TupleExpr(TupleExpr), | ||
1309 | WhileExpr(WhileExpr), | ||
1310 | } | ||
1311 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1312 | pub enum Item { | ||
1313 | Const(Const), | ||
1314 | Enum(Enum), | ||
1315 | ExternBlock(ExternBlock), | ||
1316 | ExternCrate(ExternCrate), | ||
1317 | Fn(Fn), | ||
1318 | Impl(Impl), | ||
2711 | MacroCall(MacroCall), | 1319 | MacroCall(MacroCall), |
2712 | BoxExpr(BoxExpr), | 1320 | Module(Module), |
1321 | Static(Static), | ||
1322 | Struct(Struct), | ||
1323 | Trait(Trait), | ||
1324 | TypeAlias(TypeAlias), | ||
1325 | Union(Union), | ||
1326 | Use(Use), | ||
1327 | } | ||
1328 | impl ast::AttrsOwner for Item {} | ||
1329 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | ||
1330 | pub enum Stmt { | ||
1331 | ExprStmt(ExprStmt), | ||
1332 | Item(Item), | ||
1333 | LetStmt(LetStmt), | ||
2713 | } | 1334 | } |
2714 | impl ast::AttrsOwner for Expr {} | ||
2715 | /// Any kind of pattern | ||
2716 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1335 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2717 | pub enum Pat { | 1336 | pub enum Pat { |
1337 | IdentPat(IdentPat), | ||
1338 | BoxPat(BoxPat), | ||
1339 | RestPat(RestPat), | ||
1340 | LiteralPat(LiteralPat), | ||
1341 | MacroPat(MacroPat), | ||
2718 | OrPat(OrPat), | 1342 | OrPat(OrPat), |
2719 | ParenPat(ParenPat), | 1343 | ParenPat(ParenPat), |
2720 | RefPat(RefPat), | ||
2721 | BoxPat(BoxPat), | ||
2722 | BindPat(BindPat), | ||
2723 | PlaceholderPat(PlaceholderPat), | ||
2724 | DotDotPat(DotDotPat), | ||
2725 | PathPat(PathPat), | 1344 | PathPat(PathPat), |
1345 | WildcardPat(WildcardPat), | ||
1346 | RangePat(RangePat), | ||
2726 | RecordPat(RecordPat), | 1347 | RecordPat(RecordPat), |
2727 | TupleStructPat(TupleStructPat), | 1348 | RefPat(RefPat), |
2728 | TuplePat(TuplePat), | ||
2729 | SlicePat(SlicePat), | 1349 | SlicePat(SlicePat), |
2730 | RangePat(RangePat), | 1350 | TuplePat(TuplePat), |
2731 | LiteralPat(LiteralPat), | 1351 | TupleStructPat(TupleStructPat), |
2732 | MacroPat(MacroPat), | ||
2733 | } | 1352 | } |
2734 | /// Any kind of pattern that appears directly inside of the curly | ||
2735 | /// braces of a record pattern | ||
2736 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1353 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2737 | pub enum RecordInnerPat { | 1354 | pub enum FieldList { |
2738 | RecordFieldPat(RecordFieldPat), | 1355 | RecordFieldList(RecordFieldList), |
2739 | BindPat(BindPat), | 1356 | TupleFieldList(TupleFieldList), |
2740 | } | 1357 | } |
2741 | /// Any kind of input to an attribute | ||
2742 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1358 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2743 | pub enum AttrInput { | 1359 | pub enum AdtDef { |
2744 | Literal(Literal), | 1360 | Enum(Enum), |
2745 | TokenTree(TokenTree), | 1361 | Struct(Struct), |
1362 | Union(Union), | ||
2746 | } | 1363 | } |
2747 | /// Any kind of statement | 1364 | impl ast::AttrsOwner for AdtDef {} |
2748 | /// Note: there are no empty statements, these are just represented as | 1365 | impl ast::GenericParamsOwner for AdtDef {} |
2749 | /// bare semicolons without a dedicated statement ast node. | 1366 | impl ast::NameOwner for AdtDef {} |
1367 | impl ast::VisibilityOwner for AdtDef {} | ||
2750 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1368 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2751 | pub enum Stmt { | 1369 | pub enum AssocItem { |
2752 | LetStmt(LetStmt), | 1370 | Const(Const), |
2753 | ExprStmt(ExprStmt), | 1371 | Fn(Fn), |
1372 | MacroCall(MacroCall), | ||
1373 | TypeAlias(TypeAlias), | ||
2754 | } | 1374 | } |
2755 | /// Any kind of fields list (record or tuple field lists) | 1375 | impl ast::AttrsOwner for AssocItem {} |
1376 | impl ast::NameOwner for AssocItem {} | ||
2756 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 1377 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2757 | pub enum FieldDefList { | 1378 | pub enum ExternItem { |
2758 | RecordFieldDefList(RecordFieldDefList), | 1379 | Fn(Fn), |
2759 | TupleFieldDefList(TupleFieldDefList), | 1380 | MacroCall(MacroCall), |
1381 | Static(Static), | ||
2760 | } | 1382 | } |
2761 | impl AstNode for SourceFile { | 1383 | impl ast::AttrsOwner for ExternItem {} |
2762 | fn can_cast(kind: SyntaxKind) -> bool { kind == SOURCE_FILE } | 1384 | impl ast::NameOwner for ExternItem {} |
2763 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1385 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2764 | if Self::can_cast(syntax.kind()) { | 1386 | pub enum GenericParam { |
2765 | Some(Self { syntax }) | 1387 | ConstParam(ConstParam), |
2766 | } else { | 1388 | LifetimeParam(LifetimeParam), |
2767 | None | 1389 | TypeParam(TypeParam), |
2768 | } | ||
2769 | } | ||
2770 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | ||
2771 | } | 1390 | } |
2772 | impl AstNode for FnDef { | 1391 | impl ast::AttrsOwner for GenericParam {} |
2773 | fn can_cast(kind: SyntaxKind) -> bool { kind == FN_DEF } | 1392 | impl AstNode for Name { |
1393 | fn can_cast(kind: SyntaxKind) -> bool { kind == NAME } | ||
2774 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1394 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2775 | if Self::can_cast(syntax.kind()) { | 1395 | if Self::can_cast(syntax.kind()) { |
2776 | Some(Self { syntax }) | 1396 | Some(Self { syntax }) |
@@ -2780,8 +1400,8 @@ impl AstNode for FnDef { | |||
2780 | } | 1400 | } |
2781 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1401 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2782 | } | 1402 | } |
2783 | impl AstNode for RetType { | 1403 | impl AstNode for NameRef { |
2784 | fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE } | 1404 | fn can_cast(kind: SyntaxKind) -> bool { kind == NAME_REF } |
2785 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1405 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2786 | if Self::can_cast(syntax.kind()) { | 1406 | if Self::can_cast(syntax.kind()) { |
2787 | Some(Self { syntax }) | 1407 | Some(Self { syntax }) |
@@ -2791,8 +1411,8 @@ impl AstNode for RetType { | |||
2791 | } | 1411 | } |
2792 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1412 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2793 | } | 1413 | } |
2794 | impl AstNode for StructDef { | 1414 | impl AstNode for Path { |
2795 | fn can_cast(kind: SyntaxKind) -> bool { kind == STRUCT_DEF } | 1415 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH } |
2796 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1416 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2797 | if Self::can_cast(syntax.kind()) { | 1417 | if Self::can_cast(syntax.kind()) { |
2798 | Some(Self { syntax }) | 1418 | Some(Self { syntax }) |
@@ -2802,8 +1422,8 @@ impl AstNode for StructDef { | |||
2802 | } | 1422 | } |
2803 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1423 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2804 | } | 1424 | } |
2805 | impl AstNode for UnionDef { | 1425 | impl AstNode for PathSegment { |
2806 | fn can_cast(kind: SyntaxKind) -> bool { kind == UNION_DEF } | 1426 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT } |
2807 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1427 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2808 | if Self::can_cast(syntax.kind()) { | 1428 | if Self::can_cast(syntax.kind()) { |
2809 | Some(Self { syntax }) | 1429 | Some(Self { syntax }) |
@@ -2813,8 +1433,8 @@ impl AstNode for UnionDef { | |||
2813 | } | 1433 | } |
2814 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1434 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2815 | } | 1435 | } |
2816 | impl AstNode for RecordFieldDefList { | 1436 | impl AstNode for GenericArgList { |
2817 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_DEF_LIST } | 1437 | fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_ARG_LIST } |
2818 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1438 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2819 | if Self::can_cast(syntax.kind()) { | 1439 | if Self::can_cast(syntax.kind()) { |
2820 | Some(Self { syntax }) | 1440 | Some(Self { syntax }) |
@@ -2824,8 +1444,8 @@ impl AstNode for RecordFieldDefList { | |||
2824 | } | 1444 | } |
2825 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1445 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2826 | } | 1446 | } |
2827 | impl AstNode for RecordFieldDef { | 1447 | impl AstNode for ParamList { |
2828 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_DEF } | 1448 | fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST } |
2829 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1449 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2830 | if Self::can_cast(syntax.kind()) { | 1450 | if Self::can_cast(syntax.kind()) { |
2831 | Some(Self { syntax }) | 1451 | Some(Self { syntax }) |
@@ -2835,8 +1455,8 @@ impl AstNode for RecordFieldDef { | |||
2835 | } | 1455 | } |
2836 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1456 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2837 | } | 1457 | } |
2838 | impl AstNode for TupleFieldDefList { | 1458 | impl AstNode for RetType { |
2839 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_DEF_LIST } | 1459 | fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE } |
2840 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1460 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2841 | if Self::can_cast(syntax.kind()) { | 1461 | if Self::can_cast(syntax.kind()) { |
2842 | Some(Self { syntax }) | 1462 | Some(Self { syntax }) |
@@ -2846,8 +1466,8 @@ impl AstNode for TupleFieldDefList { | |||
2846 | } | 1466 | } |
2847 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1467 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2848 | } | 1468 | } |
2849 | impl AstNode for TupleFieldDef { | 1469 | impl AstNode for PathType { |
2850 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_DEF } | 1470 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_TYPE } |
2851 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1471 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2852 | if Self::can_cast(syntax.kind()) { | 1472 | if Self::can_cast(syntax.kind()) { |
2853 | Some(Self { syntax }) | 1473 | Some(Self { syntax }) |
@@ -2857,8 +1477,8 @@ impl AstNode for TupleFieldDef { | |||
2857 | } | 1477 | } |
2858 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1478 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2859 | } | 1479 | } |
2860 | impl AstNode for EnumDef { | 1480 | impl AstNode for TypeArg { |
2861 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_DEF } | 1481 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ARG } |
2862 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1482 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2863 | if Self::can_cast(syntax.kind()) { | 1483 | if Self::can_cast(syntax.kind()) { |
2864 | Some(Self { syntax }) | 1484 | Some(Self { syntax }) |
@@ -2868,8 +1488,8 @@ impl AstNode for EnumDef { | |||
2868 | } | 1488 | } |
2869 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1489 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2870 | } | 1490 | } |
2871 | impl AstNode for EnumVariantList { | 1491 | impl AstNode for AssocTypeArg { |
2872 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_VARIANT_LIST } | 1492 | fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_TYPE_ARG } |
2873 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1493 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2874 | if Self::can_cast(syntax.kind()) { | 1494 | if Self::can_cast(syntax.kind()) { |
2875 | Some(Self { syntax }) | 1495 | Some(Self { syntax }) |
@@ -2879,8 +1499,8 @@ impl AstNode for EnumVariantList { | |||
2879 | } | 1499 | } |
2880 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1500 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2881 | } | 1501 | } |
2882 | impl AstNode for EnumVariant { | 1502 | impl AstNode for LifetimeArg { |
2883 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM_VARIANT } | 1503 | fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_ARG } |
2884 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1504 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2885 | if Self::can_cast(syntax.kind()) { | 1505 | if Self::can_cast(syntax.kind()) { |
2886 | Some(Self { syntax }) | 1506 | Some(Self { syntax }) |
@@ -2890,8 +1510,8 @@ impl AstNode for EnumVariant { | |||
2890 | } | 1510 | } |
2891 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1511 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2892 | } | 1512 | } |
2893 | impl AstNode for TraitDef { | 1513 | impl AstNode for ConstArg { |
2894 | fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT_DEF } | 1514 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_ARG } |
2895 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1515 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2896 | if Self::can_cast(syntax.kind()) { | 1516 | if Self::can_cast(syntax.kind()) { |
2897 | Some(Self { syntax }) | 1517 | Some(Self { syntax }) |
@@ -2901,8 +1521,8 @@ impl AstNode for TraitDef { | |||
2901 | } | 1521 | } |
2902 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1522 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2903 | } | 1523 | } |
2904 | impl AstNode for Module { | 1524 | impl AstNode for TypeBoundList { |
2905 | fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE } | 1525 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST } |
2906 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1526 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2907 | if Self::can_cast(syntax.kind()) { | 1527 | if Self::can_cast(syntax.kind()) { |
2908 | Some(Self { syntax }) | 1528 | Some(Self { syntax }) |
@@ -2912,8 +1532,8 @@ impl AstNode for Module { | |||
2912 | } | 1532 | } |
2913 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1533 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2914 | } | 1534 | } |
2915 | impl AstNode for ItemList { | 1535 | impl AstNode for MacroCall { |
2916 | fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST } | 1536 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL } |
2917 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1537 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2918 | if Self::can_cast(syntax.kind()) { | 1538 | if Self::can_cast(syntax.kind()) { |
2919 | Some(Self { syntax }) | 1539 | Some(Self { syntax }) |
@@ -2923,8 +1543,8 @@ impl AstNode for ItemList { | |||
2923 | } | 1543 | } |
2924 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1544 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2925 | } | 1545 | } |
2926 | impl AstNode for ConstDef { | 1546 | impl AstNode for Attr { |
2927 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_DEF } | 1547 | fn can_cast(kind: SyntaxKind) -> bool { kind == ATTR } |
2928 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1548 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2929 | if Self::can_cast(syntax.kind()) { | 1549 | if Self::can_cast(syntax.kind()) { |
2930 | Some(Self { syntax }) | 1550 | Some(Self { syntax }) |
@@ -2934,8 +1554,8 @@ impl AstNode for ConstDef { | |||
2934 | } | 1554 | } |
2935 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1555 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2936 | } | 1556 | } |
2937 | impl AstNode for StaticDef { | 1557 | impl AstNode for TokenTree { |
2938 | fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC_DEF } | 1558 | fn can_cast(kind: SyntaxKind) -> bool { kind == TOKEN_TREE } |
2939 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1559 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2940 | if Self::can_cast(syntax.kind()) { | 1560 | if Self::can_cast(syntax.kind()) { |
2941 | Some(Self { syntax }) | 1561 | Some(Self { syntax }) |
@@ -2945,8 +1565,8 @@ impl AstNode for StaticDef { | |||
2945 | } | 1565 | } |
2946 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1566 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2947 | } | 1567 | } |
2948 | impl AstNode for TypeAliasDef { | 1568 | impl AstNode for MacroItems { |
2949 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS_DEF } | 1569 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_ITEMS } |
2950 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1570 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2951 | if Self::can_cast(syntax.kind()) { | 1571 | if Self::can_cast(syntax.kind()) { |
2952 | Some(Self { syntax }) | 1572 | Some(Self { syntax }) |
@@ -2956,8 +1576,8 @@ impl AstNode for TypeAliasDef { | |||
2956 | } | 1576 | } |
2957 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1577 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2958 | } | 1578 | } |
2959 | impl AstNode for ImplDef { | 1579 | impl AstNode for MacroStmts { |
2960 | fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_DEF } | 1580 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_STMTS } |
2961 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1581 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2962 | if Self::can_cast(syntax.kind()) { | 1582 | if Self::can_cast(syntax.kind()) { |
2963 | Some(Self { syntax }) | 1583 | Some(Self { syntax }) |
@@ -2967,8 +1587,8 @@ impl AstNode for ImplDef { | |||
2967 | } | 1587 | } |
2968 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1588 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2969 | } | 1589 | } |
2970 | impl AstNode for ParenType { | 1590 | impl AstNode for SourceFile { |
2971 | fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_TYPE } | 1591 | fn can_cast(kind: SyntaxKind) -> bool { kind == SOURCE_FILE } |
2972 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1592 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2973 | if Self::can_cast(syntax.kind()) { | 1593 | if Self::can_cast(syntax.kind()) { |
2974 | Some(Self { syntax }) | 1594 | Some(Self { syntax }) |
@@ -2978,8 +1598,8 @@ impl AstNode for ParenType { | |||
2978 | } | 1598 | } |
2979 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1599 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2980 | } | 1600 | } |
2981 | impl AstNode for TupleType { | 1601 | impl AstNode for Const { |
2982 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_TYPE } | 1602 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST } |
2983 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1603 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2984 | if Self::can_cast(syntax.kind()) { | 1604 | if Self::can_cast(syntax.kind()) { |
2985 | Some(Self { syntax }) | 1605 | Some(Self { syntax }) |
@@ -2989,8 +1609,8 @@ impl AstNode for TupleType { | |||
2989 | } | 1609 | } |
2990 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1610 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
2991 | } | 1611 | } |
2992 | impl AstNode for NeverType { | 1612 | impl AstNode for Enum { |
2993 | fn can_cast(kind: SyntaxKind) -> bool { kind == NEVER_TYPE } | 1613 | fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM } |
2994 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1614 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
2995 | if Self::can_cast(syntax.kind()) { | 1615 | if Self::can_cast(syntax.kind()) { |
2996 | Some(Self { syntax }) | 1616 | Some(Self { syntax }) |
@@ -3000,8 +1620,8 @@ impl AstNode for NeverType { | |||
3000 | } | 1620 | } |
3001 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1621 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3002 | } | 1622 | } |
3003 | impl AstNode for PathType { | 1623 | impl AstNode for ExternBlock { |
3004 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_TYPE } | 1624 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK } |
3005 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1625 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3006 | if Self::can_cast(syntax.kind()) { | 1626 | if Self::can_cast(syntax.kind()) { |
3007 | Some(Self { syntax }) | 1627 | Some(Self { syntax }) |
@@ -3011,8 +1631,8 @@ impl AstNode for PathType { | |||
3011 | } | 1631 | } |
3012 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1632 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3013 | } | 1633 | } |
3014 | impl AstNode for PointerType { | 1634 | impl AstNode for ExternCrate { |
3015 | fn can_cast(kind: SyntaxKind) -> bool { kind == POINTER_TYPE } | 1635 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE } |
3016 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1636 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3017 | if Self::can_cast(syntax.kind()) { | 1637 | if Self::can_cast(syntax.kind()) { |
3018 | Some(Self { syntax }) | 1638 | Some(Self { syntax }) |
@@ -3022,8 +1642,8 @@ impl AstNode for PointerType { | |||
3022 | } | 1642 | } |
3023 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1643 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3024 | } | 1644 | } |
3025 | impl AstNode for ArrayType { | 1645 | impl AstNode for Fn { |
3026 | fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_TYPE } | 1646 | fn can_cast(kind: SyntaxKind) -> bool { kind == FN } |
3027 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1647 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3028 | if Self::can_cast(syntax.kind()) { | 1648 | if Self::can_cast(syntax.kind()) { |
3029 | Some(Self { syntax }) | 1649 | Some(Self { syntax }) |
@@ -3033,8 +1653,8 @@ impl AstNode for ArrayType { | |||
3033 | } | 1653 | } |
3034 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1654 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3035 | } | 1655 | } |
3036 | impl AstNode for SliceType { | 1656 | impl AstNode for Impl { |
3037 | fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_TYPE } | 1657 | fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL } |
3038 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1658 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3039 | if Self::can_cast(syntax.kind()) { | 1659 | if Self::can_cast(syntax.kind()) { |
3040 | Some(Self { syntax }) | 1660 | Some(Self { syntax }) |
@@ -3044,8 +1664,8 @@ impl AstNode for SliceType { | |||
3044 | } | 1664 | } |
3045 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1665 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3046 | } | 1666 | } |
3047 | impl AstNode for ReferenceType { | 1667 | impl AstNode for Module { |
3048 | fn can_cast(kind: SyntaxKind) -> bool { kind == REFERENCE_TYPE } | 1668 | fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE } |
3049 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1669 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3050 | if Self::can_cast(syntax.kind()) { | 1670 | if Self::can_cast(syntax.kind()) { |
3051 | Some(Self { syntax }) | 1671 | Some(Self { syntax }) |
@@ -3055,8 +1675,8 @@ impl AstNode for ReferenceType { | |||
3055 | } | 1675 | } |
3056 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1676 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3057 | } | 1677 | } |
3058 | impl AstNode for PlaceholderType { | 1678 | impl AstNode for Static { |
3059 | fn can_cast(kind: SyntaxKind) -> bool { kind == PLACEHOLDER_TYPE } | 1679 | fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC } |
3060 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1680 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3061 | if Self::can_cast(syntax.kind()) { | 1681 | if Self::can_cast(syntax.kind()) { |
3062 | Some(Self { syntax }) | 1682 | Some(Self { syntax }) |
@@ -3066,8 +1686,8 @@ impl AstNode for PlaceholderType { | |||
3066 | } | 1686 | } |
3067 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1687 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3068 | } | 1688 | } |
3069 | impl AstNode for FnPointerType { | 1689 | impl AstNode for Struct { |
3070 | fn can_cast(kind: SyntaxKind) -> bool { kind == FN_POINTER_TYPE } | 1690 | fn can_cast(kind: SyntaxKind) -> bool { kind == STRUCT } |
3071 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1691 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3072 | if Self::can_cast(syntax.kind()) { | 1692 | if Self::can_cast(syntax.kind()) { |
3073 | Some(Self { syntax }) | 1693 | Some(Self { syntax }) |
@@ -3077,8 +1697,8 @@ impl AstNode for FnPointerType { | |||
3077 | } | 1697 | } |
3078 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1698 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3079 | } | 1699 | } |
3080 | impl AstNode for ForType { | 1700 | impl AstNode for Trait { |
3081 | fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_TYPE } | 1701 | fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT } |
3082 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1702 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3083 | if Self::can_cast(syntax.kind()) { | 1703 | if Self::can_cast(syntax.kind()) { |
3084 | Some(Self { syntax }) | 1704 | Some(Self { syntax }) |
@@ -3088,8 +1708,8 @@ impl AstNode for ForType { | |||
3088 | } | 1708 | } |
3089 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1709 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3090 | } | 1710 | } |
3091 | impl AstNode for ImplTraitType { | 1711 | impl AstNode for TypeAlias { |
3092 | fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_TRAIT_TYPE } | 1712 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS } |
3093 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1713 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3094 | if Self::can_cast(syntax.kind()) { | 1714 | if Self::can_cast(syntax.kind()) { |
3095 | Some(Self { syntax }) | 1715 | Some(Self { syntax }) |
@@ -3099,8 +1719,8 @@ impl AstNode for ImplTraitType { | |||
3099 | } | 1719 | } |
3100 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1720 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3101 | } | 1721 | } |
3102 | impl AstNode for DynTraitType { | 1722 | impl AstNode for Union { |
3103 | fn can_cast(kind: SyntaxKind) -> bool { kind == DYN_TRAIT_TYPE } | 1723 | fn can_cast(kind: SyntaxKind) -> bool { kind == UNION } |
3104 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1724 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3105 | if Self::can_cast(syntax.kind()) { | 1725 | if Self::can_cast(syntax.kind()) { |
3106 | Some(Self { syntax }) | 1726 | Some(Self { syntax }) |
@@ -3110,8 +1730,8 @@ impl AstNode for DynTraitType { | |||
3110 | } | 1730 | } |
3111 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1731 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3112 | } | 1732 | } |
3113 | impl AstNode for TupleExpr { | 1733 | impl AstNode for Use { |
3114 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_EXPR } | 1734 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE } |
3115 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1735 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3116 | if Self::can_cast(syntax.kind()) { | 1736 | if Self::can_cast(syntax.kind()) { |
3117 | Some(Self { syntax }) | 1737 | Some(Self { syntax }) |
@@ -3121,8 +1741,8 @@ impl AstNode for TupleExpr { | |||
3121 | } | 1741 | } |
3122 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1742 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3123 | } | 1743 | } |
3124 | impl AstNode for ArrayExpr { | 1744 | impl AstNode for Visibility { |
3125 | fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_EXPR } | 1745 | fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY } |
3126 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1746 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3127 | if Self::can_cast(syntax.kind()) { | 1747 | if Self::can_cast(syntax.kind()) { |
3128 | Some(Self { syntax }) | 1748 | Some(Self { syntax }) |
@@ -3132,8 +1752,8 @@ impl AstNode for ArrayExpr { | |||
3132 | } | 1752 | } |
3133 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1753 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3134 | } | 1754 | } |
3135 | impl AstNode for ParenExpr { | 1755 | impl AstNode for ItemList { |
3136 | fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_EXPR } | 1756 | fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST } |
3137 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1757 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3138 | if Self::can_cast(syntax.kind()) { | 1758 | if Self::can_cast(syntax.kind()) { |
3139 | Some(Self { syntax }) | 1759 | Some(Self { syntax }) |
@@ -3143,8 +1763,8 @@ impl AstNode for ParenExpr { | |||
3143 | } | 1763 | } |
3144 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1764 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3145 | } | 1765 | } |
3146 | impl AstNode for PathExpr { | 1766 | impl AstNode for Rename { |
3147 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_EXPR } | 1767 | fn can_cast(kind: SyntaxKind) -> bool { kind == RENAME } |
3148 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1768 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3149 | if Self::can_cast(syntax.kind()) { | 1769 | if Self::can_cast(syntax.kind()) { |
3150 | Some(Self { syntax }) | 1770 | Some(Self { syntax }) |
@@ -3154,8 +1774,8 @@ impl AstNode for PathExpr { | |||
3154 | } | 1774 | } |
3155 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1775 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3156 | } | 1776 | } |
3157 | impl AstNode for LambdaExpr { | 1777 | impl AstNode for UseTree { |
3158 | fn can_cast(kind: SyntaxKind) -> bool { kind == LAMBDA_EXPR } | 1778 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE } |
3159 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1779 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3160 | if Self::can_cast(syntax.kind()) { | 1780 | if Self::can_cast(syntax.kind()) { |
3161 | Some(Self { syntax }) | 1781 | Some(Self { syntax }) |
@@ -3165,8 +1785,8 @@ impl AstNode for LambdaExpr { | |||
3165 | } | 1785 | } |
3166 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1786 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3167 | } | 1787 | } |
3168 | impl AstNode for IfExpr { | 1788 | impl AstNode for UseTreeList { |
3169 | fn can_cast(kind: SyntaxKind) -> bool { kind == IF_EXPR } | 1789 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE_LIST } |
3170 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1790 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3171 | if Self::can_cast(syntax.kind()) { | 1791 | if Self::can_cast(syntax.kind()) { |
3172 | Some(Self { syntax }) | 1792 | Some(Self { syntax }) |
@@ -3176,8 +1796,8 @@ impl AstNode for IfExpr { | |||
3176 | } | 1796 | } |
3177 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1797 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3178 | } | 1798 | } |
3179 | impl AstNode for LoopExpr { | 1799 | impl AstNode for Abi { |
3180 | fn can_cast(kind: SyntaxKind) -> bool { kind == LOOP_EXPR } | 1800 | fn can_cast(kind: SyntaxKind) -> bool { kind == ABI } |
3181 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1801 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3182 | if Self::can_cast(syntax.kind()) { | 1802 | if Self::can_cast(syntax.kind()) { |
3183 | Some(Self { syntax }) | 1803 | Some(Self { syntax }) |
@@ -3187,8 +1807,8 @@ impl AstNode for LoopExpr { | |||
3187 | } | 1807 | } |
3188 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1808 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3189 | } | 1809 | } |
3190 | impl AstNode for EffectExpr { | 1810 | impl AstNode for GenericParamList { |
3191 | fn can_cast(kind: SyntaxKind) -> bool { kind == EFFECT_EXPR } | 1811 | fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_PARAM_LIST } |
3192 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1812 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3193 | if Self::can_cast(syntax.kind()) { | 1813 | if Self::can_cast(syntax.kind()) { |
3194 | Some(Self { syntax }) | 1814 | Some(Self { syntax }) |
@@ -3198,8 +1818,8 @@ impl AstNode for EffectExpr { | |||
3198 | } | 1818 | } |
3199 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1819 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3200 | } | 1820 | } |
3201 | impl AstNode for ForExpr { | 1821 | impl AstNode for WhereClause { |
3202 | fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_EXPR } | 1822 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE } |
3203 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1823 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3204 | if Self::can_cast(syntax.kind()) { | 1824 | if Self::can_cast(syntax.kind()) { |
3205 | Some(Self { syntax }) | 1825 | Some(Self { syntax }) |
@@ -3209,8 +1829,8 @@ impl AstNode for ForExpr { | |||
3209 | } | 1829 | } |
3210 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1830 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3211 | } | 1831 | } |
3212 | impl AstNode for WhileExpr { | 1832 | impl AstNode for BlockExpr { |
3213 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHILE_EXPR } | 1833 | fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR } |
3214 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1834 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3215 | if Self::can_cast(syntax.kind()) { | 1835 | if Self::can_cast(syntax.kind()) { |
3216 | Some(Self { syntax }) | 1836 | Some(Self { syntax }) |
@@ -3220,8 +1840,8 @@ impl AstNode for WhileExpr { | |||
3220 | } | 1840 | } |
3221 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1841 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3222 | } | 1842 | } |
3223 | impl AstNode for ContinueExpr { | 1843 | impl AstNode for SelfParam { |
3224 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONTINUE_EXPR } | 1844 | fn can_cast(kind: SyntaxKind) -> bool { kind == SELF_PARAM } |
3225 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1845 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3226 | if Self::can_cast(syntax.kind()) { | 1846 | if Self::can_cast(syntax.kind()) { |
3227 | Some(Self { syntax }) | 1847 | Some(Self { syntax }) |
@@ -3231,8 +1851,8 @@ impl AstNode for ContinueExpr { | |||
3231 | } | 1851 | } |
3232 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1852 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3233 | } | 1853 | } |
3234 | impl AstNode for BreakExpr { | 1854 | impl AstNode for Param { |
3235 | fn can_cast(kind: SyntaxKind) -> bool { kind == BREAK_EXPR } | 1855 | fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM } |
3236 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1856 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3237 | if Self::can_cast(syntax.kind()) { | 1857 | if Self::can_cast(syntax.kind()) { |
3238 | Some(Self { syntax }) | 1858 | Some(Self { syntax }) |
@@ -3242,8 +1862,8 @@ impl AstNode for BreakExpr { | |||
3242 | } | 1862 | } |
3243 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1863 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3244 | } | 1864 | } |
3245 | impl AstNode for Label { | 1865 | impl AstNode for RecordFieldList { |
3246 | fn can_cast(kind: SyntaxKind) -> bool { kind == LABEL } | 1866 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_LIST } |
3247 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1867 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3248 | if Self::can_cast(syntax.kind()) { | 1868 | if Self::can_cast(syntax.kind()) { |
3249 | Some(Self { syntax }) | 1869 | Some(Self { syntax }) |
@@ -3253,8 +1873,8 @@ impl AstNode for Label { | |||
3253 | } | 1873 | } |
3254 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1874 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3255 | } | 1875 | } |
3256 | impl AstNode for BlockExpr { | 1876 | impl AstNode for TupleFieldList { |
3257 | fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR } | 1877 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_LIST } |
3258 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1878 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3259 | if Self::can_cast(syntax.kind()) { | 1879 | if Self::can_cast(syntax.kind()) { |
3260 | Some(Self { syntax }) | 1880 | Some(Self { syntax }) |
@@ -3264,8 +1884,8 @@ impl AstNode for BlockExpr { | |||
3264 | } | 1884 | } |
3265 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1885 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3266 | } | 1886 | } |
3267 | impl AstNode for ReturnExpr { | 1887 | impl AstNode for RecordField { |
3268 | fn can_cast(kind: SyntaxKind) -> bool { kind == RETURN_EXPR } | 1888 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD } |
3269 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1889 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3270 | if Self::can_cast(syntax.kind()) { | 1890 | if Self::can_cast(syntax.kind()) { |
3271 | Some(Self { syntax }) | 1891 | Some(Self { syntax }) |
@@ -3275,8 +1895,8 @@ impl AstNode for ReturnExpr { | |||
3275 | } | 1895 | } |
3276 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1896 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3277 | } | 1897 | } |
3278 | impl AstNode for CallExpr { | 1898 | impl AstNode for TupleField { |
3279 | fn can_cast(kind: SyntaxKind) -> bool { kind == CALL_EXPR } | 1899 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD } |
3280 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1900 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3281 | if Self::can_cast(syntax.kind()) { | 1901 | if Self::can_cast(syntax.kind()) { |
3282 | Some(Self { syntax }) | 1902 | Some(Self { syntax }) |
@@ -3286,8 +1906,8 @@ impl AstNode for CallExpr { | |||
3286 | } | 1906 | } |
3287 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1907 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3288 | } | 1908 | } |
3289 | impl AstNode for MethodCallExpr { | 1909 | impl AstNode for VariantList { |
3290 | fn can_cast(kind: SyntaxKind) -> bool { kind == METHOD_CALL_EXPR } | 1910 | fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT_LIST } |
3291 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1911 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3292 | if Self::can_cast(syntax.kind()) { | 1912 | if Self::can_cast(syntax.kind()) { |
3293 | Some(Self { syntax }) | 1913 | Some(Self { syntax }) |
@@ -3297,8 +1917,8 @@ impl AstNode for MethodCallExpr { | |||
3297 | } | 1917 | } |
3298 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1918 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3299 | } | 1919 | } |
3300 | impl AstNode for IndexExpr { | 1920 | impl AstNode for Variant { |
3301 | fn can_cast(kind: SyntaxKind) -> bool { kind == INDEX_EXPR } | 1921 | fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT } |
3302 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1922 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3303 | if Self::can_cast(syntax.kind()) { | 1923 | if Self::can_cast(syntax.kind()) { |
3304 | Some(Self { syntax }) | 1924 | Some(Self { syntax }) |
@@ -3308,8 +1928,8 @@ impl AstNode for IndexExpr { | |||
3308 | } | 1928 | } |
3309 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1929 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3310 | } | 1930 | } |
3311 | impl AstNode for FieldExpr { | 1931 | impl AstNode for AssocItemList { |
3312 | fn can_cast(kind: SyntaxKind) -> bool { kind == FIELD_EXPR } | 1932 | fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_ITEM_LIST } |
3313 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1933 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3314 | if Self::can_cast(syntax.kind()) { | 1934 | if Self::can_cast(syntax.kind()) { |
3315 | Some(Self { syntax }) | 1935 | Some(Self { syntax }) |
@@ -3319,8 +1939,8 @@ impl AstNode for FieldExpr { | |||
3319 | } | 1939 | } |
3320 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1940 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3321 | } | 1941 | } |
3322 | impl AstNode for AwaitExpr { | 1942 | impl AstNode for ExternItemList { |
3323 | fn can_cast(kind: SyntaxKind) -> bool { kind == AWAIT_EXPR } | 1943 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST } |
3324 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1944 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3325 | if Self::can_cast(syntax.kind()) { | 1945 | if Self::can_cast(syntax.kind()) { |
3326 | Some(Self { syntax }) | 1946 | Some(Self { syntax }) |
@@ -3330,8 +1950,8 @@ impl AstNode for AwaitExpr { | |||
3330 | } | 1950 | } |
3331 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1951 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3332 | } | 1952 | } |
3333 | impl AstNode for TryExpr { | 1953 | impl AstNode for ConstParam { |
3334 | fn can_cast(kind: SyntaxKind) -> bool { kind == TRY_EXPR } | 1954 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_PARAM } |
3335 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1955 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3336 | if Self::can_cast(syntax.kind()) { | 1956 | if Self::can_cast(syntax.kind()) { |
3337 | Some(Self { syntax }) | 1957 | Some(Self { syntax }) |
@@ -3341,8 +1961,8 @@ impl AstNode for TryExpr { | |||
3341 | } | 1961 | } |
3342 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1962 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3343 | } | 1963 | } |
3344 | impl AstNode for CastExpr { | 1964 | impl AstNode for LifetimeParam { |
3345 | fn can_cast(kind: SyntaxKind) -> bool { kind == CAST_EXPR } | 1965 | fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_PARAM } |
3346 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1966 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3347 | if Self::can_cast(syntax.kind()) { | 1967 | if Self::can_cast(syntax.kind()) { |
3348 | Some(Self { syntax }) | 1968 | Some(Self { syntax }) |
@@ -3352,8 +1972,8 @@ impl AstNode for CastExpr { | |||
3352 | } | 1972 | } |
3353 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1973 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3354 | } | 1974 | } |
3355 | impl AstNode for RefExpr { | 1975 | impl AstNode for TypeParam { |
3356 | fn can_cast(kind: SyntaxKind) -> bool { kind == REF_EXPR } | 1976 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM } |
3357 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1977 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3358 | if Self::can_cast(syntax.kind()) { | 1978 | if Self::can_cast(syntax.kind()) { |
3359 | Some(Self { syntax }) | 1979 | Some(Self { syntax }) |
@@ -3363,8 +1983,8 @@ impl AstNode for RefExpr { | |||
3363 | } | 1983 | } |
3364 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1984 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3365 | } | 1985 | } |
3366 | impl AstNode for PrefixExpr { | 1986 | impl AstNode for WherePred { |
3367 | fn can_cast(kind: SyntaxKind) -> bool { kind == PREFIX_EXPR } | 1987 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_PRED } |
3368 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1988 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3369 | if Self::can_cast(syntax.kind()) { | 1989 | if Self::can_cast(syntax.kind()) { |
3370 | Some(Self { syntax }) | 1990 | Some(Self { syntax }) |
@@ -3374,8 +1994,8 @@ impl AstNode for PrefixExpr { | |||
3374 | } | 1994 | } |
3375 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 1995 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3376 | } | 1996 | } |
3377 | impl AstNode for BoxExpr { | 1997 | impl AstNode for Literal { |
3378 | fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_EXPR } | 1998 | fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL } |
3379 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 1999 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3380 | if Self::can_cast(syntax.kind()) { | 2000 | if Self::can_cast(syntax.kind()) { |
3381 | Some(Self { syntax }) | 2001 | Some(Self { syntax }) |
@@ -3385,8 +2005,8 @@ impl AstNode for BoxExpr { | |||
3385 | } | 2005 | } |
3386 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2006 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3387 | } | 2007 | } |
3388 | impl AstNode for RangeExpr { | 2008 | impl AstNode for ExprStmt { |
3389 | fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_EXPR } | 2009 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXPR_STMT } |
3390 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2010 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3391 | if Self::can_cast(syntax.kind()) { | 2011 | if Self::can_cast(syntax.kind()) { |
3392 | Some(Self { syntax }) | 2012 | Some(Self { syntax }) |
@@ -3396,8 +2016,8 @@ impl AstNode for RangeExpr { | |||
3396 | } | 2016 | } |
3397 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2017 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3398 | } | 2018 | } |
3399 | impl AstNode for BinExpr { | 2019 | impl AstNode for LetStmt { |
3400 | fn can_cast(kind: SyntaxKind) -> bool { kind == BIN_EXPR } | 2020 | fn can_cast(kind: SyntaxKind) -> bool { kind == LET_STMT } |
3401 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2021 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3402 | if Self::can_cast(syntax.kind()) { | 2022 | if Self::can_cast(syntax.kind()) { |
3403 | Some(Self { syntax }) | 2023 | Some(Self { syntax }) |
@@ -3407,8 +2027,8 @@ impl AstNode for BinExpr { | |||
3407 | } | 2027 | } |
3408 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2028 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3409 | } | 2029 | } |
3410 | impl AstNode for Literal { | 2030 | impl AstNode for ArrayExpr { |
3411 | fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL } | 2031 | fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_EXPR } |
3412 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2032 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3413 | if Self::can_cast(syntax.kind()) { | 2033 | if Self::can_cast(syntax.kind()) { |
3414 | Some(Self { syntax }) | 2034 | Some(Self { syntax }) |
@@ -3418,8 +2038,8 @@ impl AstNode for Literal { | |||
3418 | } | 2038 | } |
3419 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2039 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3420 | } | 2040 | } |
3421 | impl AstNode for MatchExpr { | 2041 | impl AstNode for AwaitExpr { |
3422 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_EXPR } | 2042 | fn can_cast(kind: SyntaxKind) -> bool { kind == AWAIT_EXPR } |
3423 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2043 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3424 | if Self::can_cast(syntax.kind()) { | 2044 | if Self::can_cast(syntax.kind()) { |
3425 | Some(Self { syntax }) | 2045 | Some(Self { syntax }) |
@@ -3429,8 +2049,8 @@ impl AstNode for MatchExpr { | |||
3429 | } | 2049 | } |
3430 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2050 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3431 | } | 2051 | } |
3432 | impl AstNode for MatchArmList { | 2052 | impl AstNode for BinExpr { |
3433 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM_LIST } | 2053 | fn can_cast(kind: SyntaxKind) -> bool { kind == BIN_EXPR } |
3434 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2054 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3435 | if Self::can_cast(syntax.kind()) { | 2055 | if Self::can_cast(syntax.kind()) { |
3436 | Some(Self { syntax }) | 2056 | Some(Self { syntax }) |
@@ -3440,8 +2060,8 @@ impl AstNode for MatchArmList { | |||
3440 | } | 2060 | } |
3441 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2061 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3442 | } | 2062 | } |
3443 | impl AstNode for MatchArm { | 2063 | impl AstNode for BoxExpr { |
3444 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM } | 2064 | fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_EXPR } |
3445 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2065 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3446 | if Self::can_cast(syntax.kind()) { | 2066 | if Self::can_cast(syntax.kind()) { |
3447 | Some(Self { syntax }) | 2067 | Some(Self { syntax }) |
@@ -3451,8 +2071,8 @@ impl AstNode for MatchArm { | |||
3451 | } | 2071 | } |
3452 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2072 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3453 | } | 2073 | } |
3454 | impl AstNode for MatchGuard { | 2074 | impl AstNode for BreakExpr { |
3455 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_GUARD } | 2075 | fn can_cast(kind: SyntaxKind) -> bool { kind == BREAK_EXPR } |
3456 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2076 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3457 | if Self::can_cast(syntax.kind()) { | 2077 | if Self::can_cast(syntax.kind()) { |
3458 | Some(Self { syntax }) | 2078 | Some(Self { syntax }) |
@@ -3462,8 +2082,8 @@ impl AstNode for MatchGuard { | |||
3462 | } | 2082 | } |
3463 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2083 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3464 | } | 2084 | } |
3465 | impl AstNode for RecordLit { | 2085 | impl AstNode for CallExpr { |
3466 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_LIT } | 2086 | fn can_cast(kind: SyntaxKind) -> bool { kind == CALL_EXPR } |
3467 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2087 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3468 | if Self::can_cast(syntax.kind()) { | 2088 | if Self::can_cast(syntax.kind()) { |
3469 | Some(Self { syntax }) | 2089 | Some(Self { syntax }) |
@@ -3473,8 +2093,8 @@ impl AstNode for RecordLit { | |||
3473 | } | 2093 | } |
3474 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2094 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3475 | } | 2095 | } |
3476 | impl AstNode for RecordFieldList { | 2096 | impl AstNode for CastExpr { |
3477 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_LIST } | 2097 | fn can_cast(kind: SyntaxKind) -> bool { kind == CAST_EXPR } |
3478 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2098 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3479 | if Self::can_cast(syntax.kind()) { | 2099 | if Self::can_cast(syntax.kind()) { |
3480 | Some(Self { syntax }) | 2100 | Some(Self { syntax }) |
@@ -3484,8 +2104,8 @@ impl AstNode for RecordFieldList { | |||
3484 | } | 2104 | } |
3485 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2105 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3486 | } | 2106 | } |
3487 | impl AstNode for RecordField { | 2107 | impl AstNode for ClosureExpr { |
3488 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD } | 2108 | fn can_cast(kind: SyntaxKind) -> bool { kind == CLOSURE_EXPR } |
3489 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2109 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3490 | if Self::can_cast(syntax.kind()) { | 2110 | if Self::can_cast(syntax.kind()) { |
3491 | Some(Self { syntax }) | 2111 | Some(Self { syntax }) |
@@ -3495,8 +2115,8 @@ impl AstNode for RecordField { | |||
3495 | } | 2115 | } |
3496 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2116 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3497 | } | 2117 | } |
3498 | impl AstNode for OrPat { | 2118 | impl AstNode for ContinueExpr { |
3499 | fn can_cast(kind: SyntaxKind) -> bool { kind == OR_PAT } | 2119 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONTINUE_EXPR } |
3500 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2120 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3501 | if Self::can_cast(syntax.kind()) { | 2121 | if Self::can_cast(syntax.kind()) { |
3502 | Some(Self { syntax }) | 2122 | Some(Self { syntax }) |
@@ -3506,8 +2126,8 @@ impl AstNode for OrPat { | |||
3506 | } | 2126 | } |
3507 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2127 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3508 | } | 2128 | } |
3509 | impl AstNode for ParenPat { | 2129 | impl AstNode for EffectExpr { |
3510 | fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_PAT } | 2130 | fn can_cast(kind: SyntaxKind) -> bool { kind == EFFECT_EXPR } |
3511 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2131 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3512 | if Self::can_cast(syntax.kind()) { | 2132 | if Self::can_cast(syntax.kind()) { |
3513 | Some(Self { syntax }) | 2133 | Some(Self { syntax }) |
@@ -3517,8 +2137,8 @@ impl AstNode for ParenPat { | |||
3517 | } | 2137 | } |
3518 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2138 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3519 | } | 2139 | } |
3520 | impl AstNode for RefPat { | 2140 | impl AstNode for FieldExpr { |
3521 | fn can_cast(kind: SyntaxKind) -> bool { kind == REF_PAT } | 2141 | fn can_cast(kind: SyntaxKind) -> bool { kind == FIELD_EXPR } |
3522 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2142 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3523 | if Self::can_cast(syntax.kind()) { | 2143 | if Self::can_cast(syntax.kind()) { |
3524 | Some(Self { syntax }) | 2144 | Some(Self { syntax }) |
@@ -3528,8 +2148,8 @@ impl AstNode for RefPat { | |||
3528 | } | 2148 | } |
3529 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2149 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3530 | } | 2150 | } |
3531 | impl AstNode for BoxPat { | 2151 | impl AstNode for ForExpr { |
3532 | fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_PAT } | 2152 | fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_EXPR } |
3533 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2153 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3534 | if Self::can_cast(syntax.kind()) { | 2154 | if Self::can_cast(syntax.kind()) { |
3535 | Some(Self { syntax }) | 2155 | Some(Self { syntax }) |
@@ -3539,8 +2159,8 @@ impl AstNode for BoxPat { | |||
3539 | } | 2159 | } |
3540 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2160 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3541 | } | 2161 | } |
3542 | impl AstNode for BindPat { | 2162 | impl AstNode for IfExpr { |
3543 | fn can_cast(kind: SyntaxKind) -> bool { kind == BIND_PAT } | 2163 | fn can_cast(kind: SyntaxKind) -> bool { kind == IF_EXPR } |
3544 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2164 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3545 | if Self::can_cast(syntax.kind()) { | 2165 | if Self::can_cast(syntax.kind()) { |
3546 | Some(Self { syntax }) | 2166 | Some(Self { syntax }) |
@@ -3550,8 +2170,8 @@ impl AstNode for BindPat { | |||
3550 | } | 2170 | } |
3551 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2171 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3552 | } | 2172 | } |
3553 | impl AstNode for PlaceholderPat { | 2173 | impl AstNode for IndexExpr { |
3554 | fn can_cast(kind: SyntaxKind) -> bool { kind == PLACEHOLDER_PAT } | 2174 | fn can_cast(kind: SyntaxKind) -> bool { kind == INDEX_EXPR } |
3555 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2175 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3556 | if Self::can_cast(syntax.kind()) { | 2176 | if Self::can_cast(syntax.kind()) { |
3557 | Some(Self { syntax }) | 2177 | Some(Self { syntax }) |
@@ -3561,8 +2181,8 @@ impl AstNode for PlaceholderPat { | |||
3561 | } | 2181 | } |
3562 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2182 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3563 | } | 2183 | } |
3564 | impl AstNode for DotDotPat { | 2184 | impl AstNode for LoopExpr { |
3565 | fn can_cast(kind: SyntaxKind) -> bool { kind == DOT_DOT_PAT } | 2185 | fn can_cast(kind: SyntaxKind) -> bool { kind == LOOP_EXPR } |
3566 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2186 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3567 | if Self::can_cast(syntax.kind()) { | 2187 | if Self::can_cast(syntax.kind()) { |
3568 | Some(Self { syntax }) | 2188 | Some(Self { syntax }) |
@@ -3572,8 +2192,8 @@ impl AstNode for DotDotPat { | |||
3572 | } | 2192 | } |
3573 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2193 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3574 | } | 2194 | } |
3575 | impl AstNode for PathPat { | 2195 | impl AstNode for MatchExpr { |
3576 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_PAT } | 2196 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_EXPR } |
3577 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2197 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3578 | if Self::can_cast(syntax.kind()) { | 2198 | if Self::can_cast(syntax.kind()) { |
3579 | Some(Self { syntax }) | 2199 | Some(Self { syntax }) |
@@ -3583,8 +2203,8 @@ impl AstNode for PathPat { | |||
3583 | } | 2203 | } |
3584 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2204 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3585 | } | 2205 | } |
3586 | impl AstNode for SlicePat { | 2206 | impl AstNode for MethodCallExpr { |
3587 | fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_PAT } | 2207 | fn can_cast(kind: SyntaxKind) -> bool { kind == METHOD_CALL_EXPR } |
3588 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2208 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3589 | if Self::can_cast(syntax.kind()) { | 2209 | if Self::can_cast(syntax.kind()) { |
3590 | Some(Self { syntax }) | 2210 | Some(Self { syntax }) |
@@ -3594,8 +2214,8 @@ impl AstNode for SlicePat { | |||
3594 | } | 2214 | } |
3595 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2215 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3596 | } | 2216 | } |
3597 | impl AstNode for RangePat { | 2217 | impl AstNode for ParenExpr { |
3598 | fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_PAT } | 2218 | fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_EXPR } |
3599 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2219 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3600 | if Self::can_cast(syntax.kind()) { | 2220 | if Self::can_cast(syntax.kind()) { |
3601 | Some(Self { syntax }) | 2221 | Some(Self { syntax }) |
@@ -3605,8 +2225,8 @@ impl AstNode for RangePat { | |||
3605 | } | 2225 | } |
3606 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2226 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3607 | } | 2227 | } |
3608 | impl AstNode for LiteralPat { | 2228 | impl AstNode for PathExpr { |
3609 | fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL_PAT } | 2229 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_EXPR } |
3610 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2230 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3611 | if Self::can_cast(syntax.kind()) { | 2231 | if Self::can_cast(syntax.kind()) { |
3612 | Some(Self { syntax }) | 2232 | Some(Self { syntax }) |
@@ -3616,8 +2236,8 @@ impl AstNode for LiteralPat { | |||
3616 | } | 2236 | } |
3617 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2237 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3618 | } | 2238 | } |
3619 | impl AstNode for MacroPat { | 2239 | impl AstNode for PrefixExpr { |
3620 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_PAT } | 2240 | fn can_cast(kind: SyntaxKind) -> bool { kind == PREFIX_EXPR } |
3621 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2241 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3622 | if Self::can_cast(syntax.kind()) { | 2242 | if Self::can_cast(syntax.kind()) { |
3623 | Some(Self { syntax }) | 2243 | Some(Self { syntax }) |
@@ -3627,8 +2247,8 @@ impl AstNode for MacroPat { | |||
3627 | } | 2247 | } |
3628 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2248 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3629 | } | 2249 | } |
3630 | impl AstNode for RecordPat { | 2250 | impl AstNode for RangeExpr { |
3631 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT } | 2251 | fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_EXPR } |
3632 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2252 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3633 | if Self::can_cast(syntax.kind()) { | 2253 | if Self::can_cast(syntax.kind()) { |
3634 | Some(Self { syntax }) | 2254 | Some(Self { syntax }) |
@@ -3638,8 +2258,8 @@ impl AstNode for RecordPat { | |||
3638 | } | 2258 | } |
3639 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2259 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3640 | } | 2260 | } |
3641 | impl AstNode for RecordFieldPatList { | 2261 | impl AstNode for RecordExpr { |
3642 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_PAT_LIST } | 2262 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR } |
3643 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2263 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3644 | if Self::can_cast(syntax.kind()) { | 2264 | if Self::can_cast(syntax.kind()) { |
3645 | Some(Self { syntax }) | 2265 | Some(Self { syntax }) |
@@ -3649,8 +2269,8 @@ impl AstNode for RecordFieldPatList { | |||
3649 | } | 2269 | } |
3650 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2270 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3651 | } | 2271 | } |
3652 | impl AstNode for RecordFieldPat { | 2272 | impl AstNode for RefExpr { |
3653 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_PAT } | 2273 | fn can_cast(kind: SyntaxKind) -> bool { kind == REF_EXPR } |
3654 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2274 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3655 | if Self::can_cast(syntax.kind()) { | 2275 | if Self::can_cast(syntax.kind()) { |
3656 | Some(Self { syntax }) | 2276 | Some(Self { syntax }) |
@@ -3660,8 +2280,8 @@ impl AstNode for RecordFieldPat { | |||
3660 | } | 2280 | } |
3661 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2281 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3662 | } | 2282 | } |
3663 | impl AstNode for TupleStructPat { | 2283 | impl AstNode for ReturnExpr { |
3664 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_STRUCT_PAT } | 2284 | fn can_cast(kind: SyntaxKind) -> bool { kind == RETURN_EXPR } |
3665 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2285 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3666 | if Self::can_cast(syntax.kind()) { | 2286 | if Self::can_cast(syntax.kind()) { |
3667 | Some(Self { syntax }) | 2287 | Some(Self { syntax }) |
@@ -3671,8 +2291,8 @@ impl AstNode for TupleStructPat { | |||
3671 | } | 2291 | } |
3672 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2292 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3673 | } | 2293 | } |
3674 | impl AstNode for TuplePat { | 2294 | impl AstNode for TryExpr { |
3675 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_PAT } | 2295 | fn can_cast(kind: SyntaxKind) -> bool { kind == TRY_EXPR } |
3676 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2296 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3677 | if Self::can_cast(syntax.kind()) { | 2297 | if Self::can_cast(syntax.kind()) { |
3678 | Some(Self { syntax }) | 2298 | Some(Self { syntax }) |
@@ -3682,8 +2302,8 @@ impl AstNode for TuplePat { | |||
3682 | } | 2302 | } |
3683 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2303 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3684 | } | 2304 | } |
3685 | impl AstNode for Visibility { | 2305 | impl AstNode for TupleExpr { |
3686 | fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY } | 2306 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_EXPR } |
3687 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2307 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3688 | if Self::can_cast(syntax.kind()) { | 2308 | if Self::can_cast(syntax.kind()) { |
3689 | Some(Self { syntax }) | 2309 | Some(Self { syntax }) |
@@ -3693,8 +2313,8 @@ impl AstNode for Visibility { | |||
3693 | } | 2313 | } |
3694 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2314 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3695 | } | 2315 | } |
3696 | impl AstNode for Name { | 2316 | impl AstNode for WhileExpr { |
3697 | fn can_cast(kind: SyntaxKind) -> bool { kind == NAME } | 2317 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHILE_EXPR } |
3698 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2318 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3699 | if Self::can_cast(syntax.kind()) { | 2319 | if Self::can_cast(syntax.kind()) { |
3700 | Some(Self { syntax }) | 2320 | Some(Self { syntax }) |
@@ -3704,8 +2324,8 @@ impl AstNode for Name { | |||
3704 | } | 2324 | } |
3705 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2325 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3706 | } | 2326 | } |
3707 | impl AstNode for NameRef { | 2327 | impl AstNode for Label { |
3708 | fn can_cast(kind: SyntaxKind) -> bool { kind == NAME_REF } | 2328 | fn can_cast(kind: SyntaxKind) -> bool { kind == LABEL } |
3709 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2329 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3710 | if Self::can_cast(syntax.kind()) { | 2330 | if Self::can_cast(syntax.kind()) { |
3711 | Some(Self { syntax }) | 2331 | Some(Self { syntax }) |
@@ -3715,8 +2335,8 @@ impl AstNode for NameRef { | |||
3715 | } | 2335 | } |
3716 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2336 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3717 | } | 2337 | } |
3718 | impl AstNode for MacroCall { | 2338 | impl AstNode for RecordExprFieldList { |
3719 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL } | 2339 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD_LIST } |
3720 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2340 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3721 | if Self::can_cast(syntax.kind()) { | 2341 | if Self::can_cast(syntax.kind()) { |
3722 | Some(Self { syntax }) | 2342 | Some(Self { syntax }) |
@@ -3726,8 +2346,8 @@ impl AstNode for MacroCall { | |||
3726 | } | 2346 | } |
3727 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2347 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3728 | } | 2348 | } |
3729 | impl AstNode for Attr { | 2349 | impl AstNode for RecordExprField { |
3730 | fn can_cast(kind: SyntaxKind) -> bool { kind == ATTR } | 2350 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD } |
3731 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2351 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3732 | if Self::can_cast(syntax.kind()) { | 2352 | if Self::can_cast(syntax.kind()) { |
3733 | Some(Self { syntax }) | 2353 | Some(Self { syntax }) |
@@ -3737,8 +2357,8 @@ impl AstNode for Attr { | |||
3737 | } | 2357 | } |
3738 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2358 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3739 | } | 2359 | } |
3740 | impl AstNode for TokenTree { | 2360 | impl AstNode for ArgList { |
3741 | fn can_cast(kind: SyntaxKind) -> bool { kind == TOKEN_TREE } | 2361 | fn can_cast(kind: SyntaxKind) -> bool { kind == ARG_LIST } |
3742 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2362 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3743 | if Self::can_cast(syntax.kind()) { | 2363 | if Self::can_cast(syntax.kind()) { |
3744 | Some(Self { syntax }) | 2364 | Some(Self { syntax }) |
@@ -3748,8 +2368,8 @@ impl AstNode for TokenTree { | |||
3748 | } | 2368 | } |
3749 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2369 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3750 | } | 2370 | } |
3751 | impl AstNode for TypeParamList { | 2371 | impl AstNode for Condition { |
3752 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM_LIST } | 2372 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONDITION } |
3753 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2373 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3754 | if Self::can_cast(syntax.kind()) { | 2374 | if Self::can_cast(syntax.kind()) { |
3755 | Some(Self { syntax }) | 2375 | Some(Self { syntax }) |
@@ -3759,8 +2379,8 @@ impl AstNode for TypeParamList { | |||
3759 | } | 2379 | } |
3760 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2380 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3761 | } | 2381 | } |
3762 | impl AstNode for TypeParam { | 2382 | impl AstNode for MatchArmList { |
3763 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM } | 2383 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM_LIST } |
3764 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2384 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3765 | if Self::can_cast(syntax.kind()) { | 2385 | if Self::can_cast(syntax.kind()) { |
3766 | Some(Self { syntax }) | 2386 | Some(Self { syntax }) |
@@ -3770,8 +2390,8 @@ impl AstNode for TypeParam { | |||
3770 | } | 2390 | } |
3771 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2391 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3772 | } | 2392 | } |
3773 | impl AstNode for ConstParam { | 2393 | impl AstNode for MatchArm { |
3774 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_PARAM } | 2394 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM } |
3775 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2395 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3776 | if Self::can_cast(syntax.kind()) { | 2396 | if Self::can_cast(syntax.kind()) { |
3777 | Some(Self { syntax }) | 2397 | Some(Self { syntax }) |
@@ -3781,8 +2401,8 @@ impl AstNode for ConstParam { | |||
3781 | } | 2401 | } |
3782 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2402 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3783 | } | 2403 | } |
3784 | impl AstNode for LifetimeParam { | 2404 | impl AstNode for MatchGuard { |
3785 | fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_PARAM } | 2405 | fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_GUARD } |
3786 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2406 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3787 | if Self::can_cast(syntax.kind()) { | 2407 | if Self::can_cast(syntax.kind()) { |
3788 | Some(Self { syntax }) | 2408 | Some(Self { syntax }) |
@@ -3792,8 +2412,8 @@ impl AstNode for LifetimeParam { | |||
3792 | } | 2412 | } |
3793 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2413 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3794 | } | 2414 | } |
3795 | impl AstNode for TypeBound { | 2415 | impl AstNode for ArrayType { |
3796 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND } | 2416 | fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_TYPE } |
3797 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2417 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3798 | if Self::can_cast(syntax.kind()) { | 2418 | if Self::can_cast(syntax.kind()) { |
3799 | Some(Self { syntax }) | 2419 | Some(Self { syntax }) |
@@ -3803,8 +2423,8 @@ impl AstNode for TypeBound { | |||
3803 | } | 2423 | } |
3804 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2424 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3805 | } | 2425 | } |
3806 | impl AstNode for TypeBoundList { | 2426 | impl AstNode for DynTraitType { |
3807 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST } | 2427 | fn can_cast(kind: SyntaxKind) -> bool { kind == DYN_TRAIT_TYPE } |
3808 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2428 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3809 | if Self::can_cast(syntax.kind()) { | 2429 | if Self::can_cast(syntax.kind()) { |
3810 | Some(Self { syntax }) | 2430 | Some(Self { syntax }) |
@@ -3814,8 +2434,8 @@ impl AstNode for TypeBoundList { | |||
3814 | } | 2434 | } |
3815 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2435 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3816 | } | 2436 | } |
3817 | impl AstNode for WherePred { | 2437 | impl AstNode for FnPtrType { |
3818 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_PRED } | 2438 | fn can_cast(kind: SyntaxKind) -> bool { kind == FN_PTR_TYPE } |
3819 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2439 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3820 | if Self::can_cast(syntax.kind()) { | 2440 | if Self::can_cast(syntax.kind()) { |
3821 | Some(Self { syntax }) | 2441 | Some(Self { syntax }) |
@@ -3825,8 +2445,8 @@ impl AstNode for WherePred { | |||
3825 | } | 2445 | } |
3826 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2446 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3827 | } | 2447 | } |
3828 | impl AstNode for WhereClause { | 2448 | impl AstNode for ForType { |
3829 | fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE } | 2449 | fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_TYPE } |
3830 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2450 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3831 | if Self::can_cast(syntax.kind()) { | 2451 | if Self::can_cast(syntax.kind()) { |
3832 | Some(Self { syntax }) | 2452 | Some(Self { syntax }) |
@@ -3836,8 +2456,8 @@ impl AstNode for WhereClause { | |||
3836 | } | 2456 | } |
3837 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2457 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3838 | } | 2458 | } |
3839 | impl AstNode for Abi { | 2459 | impl AstNode for ImplTraitType { |
3840 | fn can_cast(kind: SyntaxKind) -> bool { kind == ABI } | 2460 | fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_TRAIT_TYPE } |
3841 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2461 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3842 | if Self::can_cast(syntax.kind()) { | 2462 | if Self::can_cast(syntax.kind()) { |
3843 | Some(Self { syntax }) | 2463 | Some(Self { syntax }) |
@@ -3847,8 +2467,8 @@ impl AstNode for Abi { | |||
3847 | } | 2467 | } |
3848 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2468 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3849 | } | 2469 | } |
3850 | impl AstNode for ExprStmt { | 2470 | impl AstNode for InferType { |
3851 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXPR_STMT } | 2471 | fn can_cast(kind: SyntaxKind) -> bool { kind == INFER_TYPE } |
3852 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2472 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3853 | if Self::can_cast(syntax.kind()) { | 2473 | if Self::can_cast(syntax.kind()) { |
3854 | Some(Self { syntax }) | 2474 | Some(Self { syntax }) |
@@ -3858,8 +2478,8 @@ impl AstNode for ExprStmt { | |||
3858 | } | 2478 | } |
3859 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2479 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3860 | } | 2480 | } |
3861 | impl AstNode for LetStmt { | 2481 | impl AstNode for NeverType { |
3862 | fn can_cast(kind: SyntaxKind) -> bool { kind == LET_STMT } | 2482 | fn can_cast(kind: SyntaxKind) -> bool { kind == NEVER_TYPE } |
3863 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2483 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3864 | if Self::can_cast(syntax.kind()) { | 2484 | if Self::can_cast(syntax.kind()) { |
3865 | Some(Self { syntax }) | 2485 | Some(Self { syntax }) |
@@ -3869,8 +2489,8 @@ impl AstNode for LetStmt { | |||
3869 | } | 2489 | } |
3870 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2490 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3871 | } | 2491 | } |
3872 | impl AstNode for Condition { | 2492 | impl AstNode for ParenType { |
3873 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONDITION } | 2493 | fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_TYPE } |
3874 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2494 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3875 | if Self::can_cast(syntax.kind()) { | 2495 | if Self::can_cast(syntax.kind()) { |
3876 | Some(Self { syntax }) | 2496 | Some(Self { syntax }) |
@@ -3880,8 +2500,8 @@ impl AstNode for Condition { | |||
3880 | } | 2500 | } |
3881 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2501 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3882 | } | 2502 | } |
3883 | impl AstNode for ParamList { | 2503 | impl AstNode for PtrType { |
3884 | fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST } | 2504 | fn can_cast(kind: SyntaxKind) -> bool { kind == PTR_TYPE } |
3885 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2505 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3886 | if Self::can_cast(syntax.kind()) { | 2506 | if Self::can_cast(syntax.kind()) { |
3887 | Some(Self { syntax }) | 2507 | Some(Self { syntax }) |
@@ -3891,8 +2511,8 @@ impl AstNode for ParamList { | |||
3891 | } | 2511 | } |
3892 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2512 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3893 | } | 2513 | } |
3894 | impl AstNode for SelfParam { | 2514 | impl AstNode for RefType { |
3895 | fn can_cast(kind: SyntaxKind) -> bool { kind == SELF_PARAM } | 2515 | fn can_cast(kind: SyntaxKind) -> bool { kind == REF_TYPE } |
3896 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2516 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3897 | if Self::can_cast(syntax.kind()) { | 2517 | if Self::can_cast(syntax.kind()) { |
3898 | Some(Self { syntax }) | 2518 | Some(Self { syntax }) |
@@ -3902,8 +2522,8 @@ impl AstNode for SelfParam { | |||
3902 | } | 2522 | } |
3903 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2523 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3904 | } | 2524 | } |
3905 | impl AstNode for Param { | 2525 | impl AstNode for SliceType { |
3906 | fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM } | 2526 | fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_TYPE } |
3907 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2527 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3908 | if Self::can_cast(syntax.kind()) { | 2528 | if Self::can_cast(syntax.kind()) { |
3909 | Some(Self { syntax }) | 2529 | Some(Self { syntax }) |
@@ -3913,8 +2533,8 @@ impl AstNode for Param { | |||
3913 | } | 2533 | } |
3914 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2534 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3915 | } | 2535 | } |
3916 | impl AstNode for UseItem { | 2536 | impl AstNode for TupleType { |
3917 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_ITEM } | 2537 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_TYPE } |
3918 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2538 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3919 | if Self::can_cast(syntax.kind()) { | 2539 | if Self::can_cast(syntax.kind()) { |
3920 | Some(Self { syntax }) | 2540 | Some(Self { syntax }) |
@@ -3924,8 +2544,8 @@ impl AstNode for UseItem { | |||
3924 | } | 2544 | } |
3925 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2545 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3926 | } | 2546 | } |
3927 | impl AstNode for UseTree { | 2547 | impl AstNode for TypeBound { |
3928 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE } | 2548 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND } |
3929 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2549 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3930 | if Self::can_cast(syntax.kind()) { | 2550 | if Self::can_cast(syntax.kind()) { |
3931 | Some(Self { syntax }) | 2551 | Some(Self { syntax }) |
@@ -3935,8 +2555,8 @@ impl AstNode for UseTree { | |||
3935 | } | 2555 | } |
3936 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2556 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3937 | } | 2557 | } |
3938 | impl AstNode for Alias { | 2558 | impl AstNode for IdentPat { |
3939 | fn can_cast(kind: SyntaxKind) -> bool { kind == ALIAS } | 2559 | fn can_cast(kind: SyntaxKind) -> bool { kind == IDENT_PAT } |
3940 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2560 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3941 | if Self::can_cast(syntax.kind()) { | 2561 | if Self::can_cast(syntax.kind()) { |
3942 | Some(Self { syntax }) | 2562 | Some(Self { syntax }) |
@@ -3946,8 +2566,8 @@ impl AstNode for Alias { | |||
3946 | } | 2566 | } |
3947 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2567 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3948 | } | 2568 | } |
3949 | impl AstNode for UseTreeList { | 2569 | impl AstNode for BoxPat { |
3950 | fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE_LIST } | 2570 | fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_PAT } |
3951 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2571 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3952 | if Self::can_cast(syntax.kind()) { | 2572 | if Self::can_cast(syntax.kind()) { |
3953 | Some(Self { syntax }) | 2573 | Some(Self { syntax }) |
@@ -3957,8 +2577,8 @@ impl AstNode for UseTreeList { | |||
3957 | } | 2577 | } |
3958 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2578 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3959 | } | 2579 | } |
3960 | impl AstNode for ExternCrateItem { | 2580 | impl AstNode for RestPat { |
3961 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE_ITEM } | 2581 | fn can_cast(kind: SyntaxKind) -> bool { kind == REST_PAT } |
3962 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2582 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3963 | if Self::can_cast(syntax.kind()) { | 2583 | if Self::can_cast(syntax.kind()) { |
3964 | Some(Self { syntax }) | 2584 | Some(Self { syntax }) |
@@ -3968,8 +2588,8 @@ impl AstNode for ExternCrateItem { | |||
3968 | } | 2588 | } |
3969 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2589 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3970 | } | 2590 | } |
3971 | impl AstNode for ArgList { | 2591 | impl AstNode for LiteralPat { |
3972 | fn can_cast(kind: SyntaxKind) -> bool { kind == ARG_LIST } | 2592 | fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL_PAT } |
3973 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2593 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3974 | if Self::can_cast(syntax.kind()) { | 2594 | if Self::can_cast(syntax.kind()) { |
3975 | Some(Self { syntax }) | 2595 | Some(Self { syntax }) |
@@ -3979,8 +2599,8 @@ impl AstNode for ArgList { | |||
3979 | } | 2599 | } |
3980 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2600 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3981 | } | 2601 | } |
3982 | impl AstNode for Path { | 2602 | impl AstNode for MacroPat { |
3983 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH } | 2603 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_PAT } |
3984 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2604 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3985 | if Self::can_cast(syntax.kind()) { | 2605 | if Self::can_cast(syntax.kind()) { |
3986 | Some(Self { syntax }) | 2606 | Some(Self { syntax }) |
@@ -3990,8 +2610,8 @@ impl AstNode for Path { | |||
3990 | } | 2610 | } |
3991 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2611 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
3992 | } | 2612 | } |
3993 | impl AstNode for PathSegment { | 2613 | impl AstNode for OrPat { |
3994 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT } | 2614 | fn can_cast(kind: SyntaxKind) -> bool { kind == OR_PAT } |
3995 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2615 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
3996 | if Self::can_cast(syntax.kind()) { | 2616 | if Self::can_cast(syntax.kind()) { |
3997 | Some(Self { syntax }) | 2617 | Some(Self { syntax }) |
@@ -4001,8 +2621,8 @@ impl AstNode for PathSegment { | |||
4001 | } | 2621 | } |
4002 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2622 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4003 | } | 2623 | } |
4004 | impl AstNode for TypeArgList { | 2624 | impl AstNode for ParenPat { |
4005 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ARG_LIST } | 2625 | fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_PAT } |
4006 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2626 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4007 | if Self::can_cast(syntax.kind()) { | 2627 | if Self::can_cast(syntax.kind()) { |
4008 | Some(Self { syntax }) | 2628 | Some(Self { syntax }) |
@@ -4012,8 +2632,8 @@ impl AstNode for TypeArgList { | |||
4012 | } | 2632 | } |
4013 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2633 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4014 | } | 2634 | } |
4015 | impl AstNode for TypeArg { | 2635 | impl AstNode for PathPat { |
4016 | fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ARG } | 2636 | fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_PAT } |
4017 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2637 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4018 | if Self::can_cast(syntax.kind()) { | 2638 | if Self::can_cast(syntax.kind()) { |
4019 | Some(Self { syntax }) | 2639 | Some(Self { syntax }) |
@@ -4023,8 +2643,8 @@ impl AstNode for TypeArg { | |||
4023 | } | 2643 | } |
4024 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2644 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4025 | } | 2645 | } |
4026 | impl AstNode for AssocTypeArg { | 2646 | impl AstNode for WildcardPat { |
4027 | fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_TYPE_ARG } | 2647 | fn can_cast(kind: SyntaxKind) -> bool { kind == WILDCARD_PAT } |
4028 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2648 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4029 | if Self::can_cast(syntax.kind()) { | 2649 | if Self::can_cast(syntax.kind()) { |
4030 | Some(Self { syntax }) | 2650 | Some(Self { syntax }) |
@@ -4034,8 +2654,8 @@ impl AstNode for AssocTypeArg { | |||
4034 | } | 2654 | } |
4035 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2655 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4036 | } | 2656 | } |
4037 | impl AstNode for LifetimeArg { | 2657 | impl AstNode for RangePat { |
4038 | fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_ARG } | 2658 | fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_PAT } |
4039 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2659 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4040 | if Self::can_cast(syntax.kind()) { | 2660 | if Self::can_cast(syntax.kind()) { |
4041 | Some(Self { syntax }) | 2661 | Some(Self { syntax }) |
@@ -4045,8 +2665,8 @@ impl AstNode for LifetimeArg { | |||
4045 | } | 2665 | } |
4046 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2666 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4047 | } | 2667 | } |
4048 | impl AstNode for ConstArg { | 2668 | impl AstNode for RecordPat { |
4049 | fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_ARG } | 2669 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT } |
4050 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2670 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4051 | if Self::can_cast(syntax.kind()) { | 2671 | if Self::can_cast(syntax.kind()) { |
4052 | Some(Self { syntax }) | 2672 | Some(Self { syntax }) |
@@ -4056,8 +2676,8 @@ impl AstNode for ConstArg { | |||
4056 | } | 2676 | } |
4057 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2677 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4058 | } | 2678 | } |
4059 | impl AstNode for MacroItems { | 2679 | impl AstNode for RefPat { |
4060 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_ITEMS } | 2680 | fn can_cast(kind: SyntaxKind) -> bool { kind == REF_PAT } |
4061 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2681 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4062 | if Self::can_cast(syntax.kind()) { | 2682 | if Self::can_cast(syntax.kind()) { |
4063 | Some(Self { syntax }) | 2683 | Some(Self { syntax }) |
@@ -4067,8 +2687,8 @@ impl AstNode for MacroItems { | |||
4067 | } | 2687 | } |
4068 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2688 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4069 | } | 2689 | } |
4070 | impl AstNode for MacroStmts { | 2690 | impl AstNode for SlicePat { |
4071 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_STMTS } | 2691 | fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_PAT } |
4072 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2692 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4073 | if Self::can_cast(syntax.kind()) { | 2693 | if Self::can_cast(syntax.kind()) { |
4074 | Some(Self { syntax }) | 2694 | Some(Self { syntax }) |
@@ -4078,8 +2698,8 @@ impl AstNode for MacroStmts { | |||
4078 | } | 2698 | } |
4079 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2699 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4080 | } | 2700 | } |
4081 | impl AstNode for ExternItemList { | 2701 | impl AstNode for TuplePat { |
4082 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST } | 2702 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_PAT } |
4083 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2703 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4084 | if Self::can_cast(syntax.kind()) { | 2704 | if Self::can_cast(syntax.kind()) { |
4085 | Some(Self { syntax }) | 2705 | Some(Self { syntax }) |
@@ -4089,8 +2709,8 @@ impl AstNode for ExternItemList { | |||
4089 | } | 2709 | } |
4090 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2710 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4091 | } | 2711 | } |
4092 | impl AstNode for ExternBlock { | 2712 | impl AstNode for TupleStructPat { |
4093 | fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK } | 2713 | fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_STRUCT_PAT } |
4094 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2714 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4095 | if Self::can_cast(syntax.kind()) { | 2715 | if Self::can_cast(syntax.kind()) { |
4096 | Some(Self { syntax }) | 2716 | Some(Self { syntax }) |
@@ -4100,8 +2720,8 @@ impl AstNode for ExternBlock { | |||
4100 | } | 2720 | } |
4101 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2721 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4102 | } | 2722 | } |
4103 | impl AstNode for MetaItem { | 2723 | impl AstNode for RecordPatFieldList { |
4104 | fn can_cast(kind: SyntaxKind) -> bool { kind == META_ITEM } | 2724 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD_LIST } |
4105 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2725 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4106 | if Self::can_cast(syntax.kind()) { | 2726 | if Self::can_cast(syntax.kind()) { |
4107 | Some(Self { syntax }) | 2727 | Some(Self { syntax }) |
@@ -4111,8 +2731,8 @@ impl AstNode for MetaItem { | |||
4111 | } | 2731 | } |
4112 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2732 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4113 | } | 2733 | } |
4114 | impl AstNode for MacroDef { | 2734 | impl AstNode for RecordPatField { |
4115 | fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_DEF } | 2735 | fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD } |
4116 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2736 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4117 | if Self::can_cast(syntax.kind()) { | 2737 | if Self::can_cast(syntax.kind()) { |
4118 | Some(Self { syntax }) | 2738 | Some(Self { syntax }) |
@@ -4122,420 +2742,194 @@ impl AstNode for MacroDef { | |||
4122 | } | 2742 | } |
4123 | fn syntax(&self) -> &SyntaxNode { &self.syntax } | 2743 | fn syntax(&self) -> &SyntaxNode { &self.syntax } |
4124 | } | 2744 | } |
4125 | impl From<StructDef> for NominalDef { | 2745 | impl From<TypeArg> for GenericArg { |
4126 | fn from(node: StructDef) -> NominalDef { NominalDef::StructDef(node) } | 2746 | fn from(node: TypeArg) -> GenericArg { GenericArg::TypeArg(node) } |
4127 | } | ||
4128 | impl From<EnumDef> for NominalDef { | ||
4129 | fn from(node: EnumDef) -> NominalDef { NominalDef::EnumDef(node) } | ||
4130 | } | ||
4131 | impl From<UnionDef> for NominalDef { | ||
4132 | fn from(node: UnionDef) -> NominalDef { NominalDef::UnionDef(node) } | ||
4133 | } | ||
4134 | impl AstNode for NominalDef { | ||
4135 | fn can_cast(kind: SyntaxKind) -> bool { | ||
4136 | match kind { | ||
4137 | STRUCT_DEF | ENUM_DEF | UNION_DEF => true, | ||
4138 | _ => false, | ||
4139 | } | ||
4140 | } | ||
4141 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
4142 | let res = match syntax.kind() { | ||
4143 | STRUCT_DEF => NominalDef::StructDef(StructDef { syntax }), | ||
4144 | ENUM_DEF => NominalDef::EnumDef(EnumDef { syntax }), | ||
4145 | UNION_DEF => NominalDef::UnionDef(UnionDef { syntax }), | ||
4146 | _ => return None, | ||
4147 | }; | ||
4148 | Some(res) | ||
4149 | } | ||
4150 | fn syntax(&self) -> &SyntaxNode { | ||
4151 | match self { | ||
4152 | NominalDef::StructDef(it) => &it.syntax, | ||
4153 | NominalDef::EnumDef(it) => &it.syntax, | ||
4154 | NominalDef::UnionDef(it) => &it.syntax, | ||
4155 | } | ||
4156 | } | ||
4157 | } | ||
4158 | impl From<LifetimeParam> for GenericParam { | ||
4159 | fn from(node: LifetimeParam) -> GenericParam { GenericParam::LifetimeParam(node) } | ||
4160 | } | ||
4161 | impl From<TypeParam> for GenericParam { | ||
4162 | fn from(node: TypeParam) -> GenericParam { GenericParam::TypeParam(node) } | ||
4163 | } | ||
4164 | impl From<ConstParam> for GenericParam { | ||
4165 | fn from(node: ConstParam) -> GenericParam { GenericParam::ConstParam(node) } | ||
4166 | } | 2747 | } |
4167 | impl AstNode for GenericParam { | 2748 | impl From<AssocTypeArg> for GenericArg { |
4168 | fn can_cast(kind: SyntaxKind) -> bool { | 2749 | fn from(node: AssocTypeArg) -> GenericArg { GenericArg::AssocTypeArg(node) } |
4169 | match kind { | ||
4170 | LIFETIME_PARAM | TYPE_PARAM | CONST_PARAM => true, | ||
4171 | _ => false, | ||
4172 | } | ||
4173 | } | ||
4174 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
4175 | let res = match syntax.kind() { | ||
4176 | LIFETIME_PARAM => GenericParam::LifetimeParam(LifetimeParam { syntax }), | ||
4177 | TYPE_PARAM => GenericParam::TypeParam(TypeParam { syntax }), | ||
4178 | CONST_PARAM => GenericParam::ConstParam(ConstParam { syntax }), | ||
4179 | _ => return None, | ||
4180 | }; | ||
4181 | Some(res) | ||
4182 | } | ||
4183 | fn syntax(&self) -> &SyntaxNode { | ||
4184 | match self { | ||
4185 | GenericParam::LifetimeParam(it) => &it.syntax, | ||
4186 | GenericParam::TypeParam(it) => &it.syntax, | ||
4187 | GenericParam::ConstParam(it) => &it.syntax, | ||
4188 | } | ||
4189 | } | ||
4190 | } | 2750 | } |
4191 | impl From<LifetimeArg> for GenericArg { | 2751 | impl From<LifetimeArg> for GenericArg { |
4192 | fn from(node: LifetimeArg) -> GenericArg { GenericArg::LifetimeArg(node) } | 2752 | fn from(node: LifetimeArg) -> GenericArg { GenericArg::LifetimeArg(node) } |
4193 | } | 2753 | } |
4194 | impl From<TypeArg> for GenericArg { | ||
4195 | fn from(node: TypeArg) -> GenericArg { GenericArg::TypeArg(node) } | ||
4196 | } | ||
4197 | impl From<ConstArg> for GenericArg { | 2754 | impl From<ConstArg> for GenericArg { |
4198 | fn from(node: ConstArg) -> GenericArg { GenericArg::ConstArg(node) } | 2755 | fn from(node: ConstArg) -> GenericArg { GenericArg::ConstArg(node) } |
4199 | } | 2756 | } |
4200 | impl From<AssocTypeArg> for GenericArg { | ||
4201 | fn from(node: AssocTypeArg) -> GenericArg { GenericArg::AssocTypeArg(node) } | ||
4202 | } | ||
4203 | impl AstNode for GenericArg { | 2757 | impl AstNode for GenericArg { |
4204 | fn can_cast(kind: SyntaxKind) -> bool { | 2758 | fn can_cast(kind: SyntaxKind) -> bool { |
4205 | match kind { | 2759 | match kind { |
4206 | LIFETIME_ARG | TYPE_ARG | CONST_ARG | ASSOC_TYPE_ARG => true, | 2760 | TYPE_ARG | ASSOC_TYPE_ARG | LIFETIME_ARG | CONST_ARG => true, |
4207 | _ => false, | 2761 | _ => false, |
4208 | } | 2762 | } |
4209 | } | 2763 | } |
4210 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2764 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4211 | let res = match syntax.kind() { | 2765 | let res = match syntax.kind() { |
4212 | LIFETIME_ARG => GenericArg::LifetimeArg(LifetimeArg { syntax }), | ||
4213 | TYPE_ARG => GenericArg::TypeArg(TypeArg { syntax }), | 2766 | TYPE_ARG => GenericArg::TypeArg(TypeArg { syntax }), |
4214 | CONST_ARG => GenericArg::ConstArg(ConstArg { syntax }), | ||
4215 | ASSOC_TYPE_ARG => GenericArg::AssocTypeArg(AssocTypeArg { syntax }), | 2767 | ASSOC_TYPE_ARG => GenericArg::AssocTypeArg(AssocTypeArg { syntax }), |
2768 | LIFETIME_ARG => GenericArg::LifetimeArg(LifetimeArg { syntax }), | ||
2769 | CONST_ARG => GenericArg::ConstArg(ConstArg { syntax }), | ||
4216 | _ => return None, | 2770 | _ => return None, |
4217 | }; | 2771 | }; |
4218 | Some(res) | 2772 | Some(res) |
4219 | } | 2773 | } |
4220 | fn syntax(&self) -> &SyntaxNode { | 2774 | fn syntax(&self) -> &SyntaxNode { |
4221 | match self { | 2775 | match self { |
4222 | GenericArg::LifetimeArg(it) => &it.syntax, | ||
4223 | GenericArg::TypeArg(it) => &it.syntax, | 2776 | GenericArg::TypeArg(it) => &it.syntax, |
4224 | GenericArg::ConstArg(it) => &it.syntax, | ||
4225 | GenericArg::AssocTypeArg(it) => &it.syntax, | 2777 | GenericArg::AssocTypeArg(it) => &it.syntax, |
2778 | GenericArg::LifetimeArg(it) => &it.syntax, | ||
2779 | GenericArg::ConstArg(it) => &it.syntax, | ||
4226 | } | 2780 | } |
4227 | } | 2781 | } |
4228 | } | 2782 | } |
4229 | impl From<ParenType> for TypeRef { | 2783 | impl From<ArrayType> for Type { |
4230 | fn from(node: ParenType) -> TypeRef { TypeRef::ParenType(node) } | 2784 | fn from(node: ArrayType) -> Type { Type::ArrayType(node) } |
4231 | } | ||
4232 | impl From<TupleType> for TypeRef { | ||
4233 | fn from(node: TupleType) -> TypeRef { TypeRef::TupleType(node) } | ||
4234 | } | ||
4235 | impl From<NeverType> for TypeRef { | ||
4236 | fn from(node: NeverType) -> TypeRef { TypeRef::NeverType(node) } | ||
4237 | } | ||
4238 | impl From<PathType> for TypeRef { | ||
4239 | fn from(node: PathType) -> TypeRef { TypeRef::PathType(node) } | ||
4240 | } | ||
4241 | impl From<PointerType> for TypeRef { | ||
4242 | fn from(node: PointerType) -> TypeRef { TypeRef::PointerType(node) } | ||
4243 | } | ||
4244 | impl From<ArrayType> for TypeRef { | ||
4245 | fn from(node: ArrayType) -> TypeRef { TypeRef::ArrayType(node) } | ||
4246 | } | ||
4247 | impl From<SliceType> for TypeRef { | ||
4248 | fn from(node: SliceType) -> TypeRef { TypeRef::SliceType(node) } | ||
4249 | } | ||
4250 | impl From<ReferenceType> for TypeRef { | ||
4251 | fn from(node: ReferenceType) -> TypeRef { TypeRef::ReferenceType(node) } | ||
4252 | } | ||
4253 | impl From<PlaceholderType> for TypeRef { | ||
4254 | fn from(node: PlaceholderType) -> TypeRef { TypeRef::PlaceholderType(node) } | ||
4255 | } | ||
4256 | impl From<FnPointerType> for TypeRef { | ||
4257 | fn from(node: FnPointerType) -> TypeRef { TypeRef::FnPointerType(node) } | ||
4258 | } | ||
4259 | impl From<ForType> for TypeRef { | ||
4260 | fn from(node: ForType) -> TypeRef { TypeRef::ForType(node) } | ||
4261 | } | ||
4262 | impl From<ImplTraitType> for TypeRef { | ||
4263 | fn from(node: ImplTraitType) -> TypeRef { TypeRef::ImplTraitType(node) } | ||
4264 | } | ||
4265 | impl From<DynTraitType> for TypeRef { | ||
4266 | fn from(node: DynTraitType) -> TypeRef { TypeRef::DynTraitType(node) } | ||
4267 | } | ||
4268 | impl AstNode for TypeRef { | ||
4269 | fn can_cast(kind: SyntaxKind) -> bool { | ||
4270 | match kind { | ||
4271 | PAREN_TYPE | TUPLE_TYPE | NEVER_TYPE | PATH_TYPE | POINTER_TYPE | ARRAY_TYPE | ||
4272 | | SLICE_TYPE | REFERENCE_TYPE | PLACEHOLDER_TYPE | FN_POINTER_TYPE | FOR_TYPE | ||
4273 | | IMPL_TRAIT_TYPE | DYN_TRAIT_TYPE => true, | ||
4274 | _ => false, | ||
4275 | } | ||
4276 | } | ||
4277 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
4278 | let res = match syntax.kind() { | ||
4279 | PAREN_TYPE => TypeRef::ParenType(ParenType { syntax }), | ||
4280 | TUPLE_TYPE => TypeRef::TupleType(TupleType { syntax }), | ||
4281 | NEVER_TYPE => TypeRef::NeverType(NeverType { syntax }), | ||
4282 | PATH_TYPE => TypeRef::PathType(PathType { syntax }), | ||
4283 | POINTER_TYPE => TypeRef::PointerType(PointerType { syntax }), | ||
4284 | ARRAY_TYPE => TypeRef::ArrayType(ArrayType { syntax }), | ||
4285 | SLICE_TYPE => TypeRef::SliceType(SliceType { syntax }), | ||
4286 | REFERENCE_TYPE => TypeRef::ReferenceType(ReferenceType { syntax }), | ||
4287 | PLACEHOLDER_TYPE => TypeRef::PlaceholderType(PlaceholderType { syntax }), | ||
4288 | FN_POINTER_TYPE => TypeRef::FnPointerType(FnPointerType { syntax }), | ||
4289 | FOR_TYPE => TypeRef::ForType(ForType { syntax }), | ||
4290 | IMPL_TRAIT_TYPE => TypeRef::ImplTraitType(ImplTraitType { syntax }), | ||
4291 | DYN_TRAIT_TYPE => TypeRef::DynTraitType(DynTraitType { syntax }), | ||
4292 | _ => return None, | ||
4293 | }; | ||
4294 | Some(res) | ||
4295 | } | ||
4296 | fn syntax(&self) -> &SyntaxNode { | ||
4297 | match self { | ||
4298 | TypeRef::ParenType(it) => &it.syntax, | ||
4299 | TypeRef::TupleType(it) => &it.syntax, | ||
4300 | TypeRef::NeverType(it) => &it.syntax, | ||
4301 | TypeRef::PathType(it) => &it.syntax, | ||
4302 | TypeRef::PointerType(it) => &it.syntax, | ||
4303 | TypeRef::ArrayType(it) => &it.syntax, | ||
4304 | TypeRef::SliceType(it) => &it.syntax, | ||
4305 | TypeRef::ReferenceType(it) => &it.syntax, | ||
4306 | TypeRef::PlaceholderType(it) => &it.syntax, | ||
4307 | TypeRef::FnPointerType(it) => &it.syntax, | ||
4308 | TypeRef::ForType(it) => &it.syntax, | ||
4309 | TypeRef::ImplTraitType(it) => &it.syntax, | ||
4310 | TypeRef::DynTraitType(it) => &it.syntax, | ||
4311 | } | ||
4312 | } | ||
4313 | } | ||
4314 | impl From<StructDef> for ModuleItem { | ||
4315 | fn from(node: StructDef) -> ModuleItem { ModuleItem::StructDef(node) } | ||
4316 | } | ||
4317 | impl From<UnionDef> for ModuleItem { | ||
4318 | fn from(node: UnionDef) -> ModuleItem { ModuleItem::UnionDef(node) } | ||
4319 | } | 2785 | } |
4320 | impl From<EnumDef> for ModuleItem { | 2786 | impl From<DynTraitType> for Type { |
4321 | fn from(node: EnumDef) -> ModuleItem { ModuleItem::EnumDef(node) } | 2787 | fn from(node: DynTraitType) -> Type { Type::DynTraitType(node) } |
4322 | } | 2788 | } |
4323 | impl From<FnDef> for ModuleItem { | 2789 | impl From<FnPtrType> for Type { |
4324 | fn from(node: FnDef) -> ModuleItem { ModuleItem::FnDef(node) } | 2790 | fn from(node: FnPtrType) -> Type { Type::FnPtrType(node) } |
4325 | } | 2791 | } |
4326 | impl From<TraitDef> for ModuleItem { | 2792 | impl From<ForType> for Type { |
4327 | fn from(node: TraitDef) -> ModuleItem { ModuleItem::TraitDef(node) } | 2793 | fn from(node: ForType) -> Type { Type::ForType(node) } |
4328 | } | 2794 | } |
4329 | impl From<TypeAliasDef> for ModuleItem { | 2795 | impl From<ImplTraitType> for Type { |
4330 | fn from(node: TypeAliasDef) -> ModuleItem { ModuleItem::TypeAliasDef(node) } | 2796 | fn from(node: ImplTraitType) -> Type { Type::ImplTraitType(node) } |
4331 | } | 2797 | } |
4332 | impl From<ImplDef> for ModuleItem { | 2798 | impl From<InferType> for Type { |
4333 | fn from(node: ImplDef) -> ModuleItem { ModuleItem::ImplDef(node) } | 2799 | fn from(node: InferType) -> Type { Type::InferType(node) } |
4334 | } | 2800 | } |
4335 | impl From<UseItem> for ModuleItem { | 2801 | impl From<NeverType> for Type { |
4336 | fn from(node: UseItem) -> ModuleItem { ModuleItem::UseItem(node) } | 2802 | fn from(node: NeverType) -> Type { Type::NeverType(node) } |
4337 | } | 2803 | } |
4338 | impl From<ExternCrateItem> for ModuleItem { | 2804 | impl From<ParenType> for Type { |
4339 | fn from(node: ExternCrateItem) -> ModuleItem { ModuleItem::ExternCrateItem(node) } | 2805 | fn from(node: ParenType) -> Type { Type::ParenType(node) } |
4340 | } | 2806 | } |
4341 | impl From<ConstDef> for ModuleItem { | 2807 | impl From<PathType> for Type { |
4342 | fn from(node: ConstDef) -> ModuleItem { ModuleItem::ConstDef(node) } | 2808 | fn from(node: PathType) -> Type { Type::PathType(node) } |
4343 | } | 2809 | } |
4344 | impl From<StaticDef> for ModuleItem { | 2810 | impl From<PtrType> for Type { |
4345 | fn from(node: StaticDef) -> ModuleItem { ModuleItem::StaticDef(node) } | 2811 | fn from(node: PtrType) -> Type { Type::PtrType(node) } |
4346 | } | 2812 | } |
4347 | impl From<Module> for ModuleItem { | 2813 | impl From<RefType> for Type { |
4348 | fn from(node: Module) -> ModuleItem { ModuleItem::Module(node) } | 2814 | fn from(node: RefType) -> Type { Type::RefType(node) } |
4349 | } | 2815 | } |
4350 | impl From<MacroCall> for ModuleItem { | 2816 | impl From<SliceType> for Type { |
4351 | fn from(node: MacroCall) -> ModuleItem { ModuleItem::MacroCall(node) } | 2817 | fn from(node: SliceType) -> Type { Type::SliceType(node) } |
4352 | } | 2818 | } |
4353 | impl From<ExternBlock> for ModuleItem { | 2819 | impl From<TupleType> for Type { |
4354 | fn from(node: ExternBlock) -> ModuleItem { ModuleItem::ExternBlock(node) } | 2820 | fn from(node: TupleType) -> Type { Type::TupleType(node) } |
4355 | } | 2821 | } |
4356 | impl AstNode for ModuleItem { | 2822 | impl AstNode for Type { |
4357 | fn can_cast(kind: SyntaxKind) -> bool { | 2823 | fn can_cast(kind: SyntaxKind) -> bool { |
4358 | match kind { | 2824 | match kind { |
4359 | STRUCT_DEF | UNION_DEF | ENUM_DEF | FN_DEF | TRAIT_DEF | TYPE_ALIAS_DEF | IMPL_DEF | 2825 | ARRAY_TYPE | DYN_TRAIT_TYPE | FN_PTR_TYPE | FOR_TYPE | IMPL_TRAIT_TYPE | INFER_TYPE |
4360 | | USE_ITEM | EXTERN_CRATE_ITEM | CONST_DEF | STATIC_DEF | MODULE | MACRO_CALL | 2826 | | NEVER_TYPE | PAREN_TYPE | PATH_TYPE | PTR_TYPE | REF_TYPE | SLICE_TYPE |
4361 | | EXTERN_BLOCK => true, | 2827 | | TUPLE_TYPE => true, |
4362 | _ => false, | 2828 | _ => false, |
4363 | } | 2829 | } |
4364 | } | 2830 | } |
4365 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2831 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4366 | let res = match syntax.kind() { | 2832 | let res = match syntax.kind() { |
4367 | STRUCT_DEF => ModuleItem::StructDef(StructDef { syntax }), | 2833 | ARRAY_TYPE => Type::ArrayType(ArrayType { syntax }), |
4368 | UNION_DEF => ModuleItem::UnionDef(UnionDef { syntax }), | 2834 | DYN_TRAIT_TYPE => Type::DynTraitType(DynTraitType { syntax }), |
4369 | ENUM_DEF => ModuleItem::EnumDef(EnumDef { syntax }), | 2835 | FN_PTR_TYPE => Type::FnPtrType(FnPtrType { syntax }), |
4370 | FN_DEF => ModuleItem::FnDef(FnDef { syntax }), | 2836 | FOR_TYPE => Type::ForType(ForType { syntax }), |
4371 | TRAIT_DEF => ModuleItem::TraitDef(TraitDef { syntax }), | 2837 | IMPL_TRAIT_TYPE => Type::ImplTraitType(ImplTraitType { syntax }), |
4372 | TYPE_ALIAS_DEF => ModuleItem::TypeAliasDef(TypeAliasDef { syntax }), | 2838 | INFER_TYPE => Type::InferType(InferType { syntax }), |
4373 | IMPL_DEF => ModuleItem::ImplDef(ImplDef { syntax }), | 2839 | NEVER_TYPE => Type::NeverType(NeverType { syntax }), |
4374 | USE_ITEM => ModuleItem::UseItem(UseItem { syntax }), | 2840 | PAREN_TYPE => Type::ParenType(ParenType { syntax }), |
4375 | EXTERN_CRATE_ITEM => ModuleItem::ExternCrateItem(ExternCrateItem { syntax }), | 2841 | PATH_TYPE => Type::PathType(PathType { syntax }), |
4376 | CONST_DEF => ModuleItem::ConstDef(ConstDef { syntax }), | 2842 | PTR_TYPE => Type::PtrType(PtrType { syntax }), |
4377 | STATIC_DEF => ModuleItem::StaticDef(StaticDef { syntax }), | 2843 | REF_TYPE => Type::RefType(RefType { syntax }), |
4378 | MODULE => ModuleItem::Module(Module { syntax }), | 2844 | SLICE_TYPE => Type::SliceType(SliceType { syntax }), |
4379 | MACRO_CALL => ModuleItem::MacroCall(MacroCall { syntax }), | 2845 | TUPLE_TYPE => Type::TupleType(TupleType { syntax }), |
4380 | EXTERN_BLOCK => ModuleItem::ExternBlock(ExternBlock { syntax }), | ||
4381 | _ => return None, | 2846 | _ => return None, |
4382 | }; | 2847 | }; |
4383 | Some(res) | 2848 | Some(res) |
4384 | } | 2849 | } |
4385 | fn syntax(&self) -> &SyntaxNode { | 2850 | fn syntax(&self) -> &SyntaxNode { |
4386 | match self { | 2851 | match self { |
4387 | ModuleItem::StructDef(it) => &it.syntax, | 2852 | Type::ArrayType(it) => &it.syntax, |
4388 | ModuleItem::UnionDef(it) => &it.syntax, | 2853 | Type::DynTraitType(it) => &it.syntax, |
4389 | ModuleItem::EnumDef(it) => &it.syntax, | 2854 | Type::FnPtrType(it) => &it.syntax, |
4390 | ModuleItem::FnDef(it) => &it.syntax, | 2855 | Type::ForType(it) => &it.syntax, |
4391 | ModuleItem::TraitDef(it) => &it.syntax, | 2856 | Type::ImplTraitType(it) => &it.syntax, |
4392 | ModuleItem::TypeAliasDef(it) => &it.syntax, | 2857 | Type::InferType(it) => &it.syntax, |
4393 | ModuleItem::ImplDef(it) => &it.syntax, | 2858 | Type::NeverType(it) => &it.syntax, |
4394 | ModuleItem::UseItem(it) => &it.syntax, | 2859 | Type::ParenType(it) => &it.syntax, |
4395 | ModuleItem::ExternCrateItem(it) => &it.syntax, | 2860 | Type::PathType(it) => &it.syntax, |
4396 | ModuleItem::ConstDef(it) => &it.syntax, | 2861 | Type::PtrType(it) => &it.syntax, |
4397 | ModuleItem::StaticDef(it) => &it.syntax, | 2862 | Type::RefType(it) => &it.syntax, |
4398 | ModuleItem::Module(it) => &it.syntax, | 2863 | Type::SliceType(it) => &it.syntax, |
4399 | ModuleItem::MacroCall(it) => &it.syntax, | 2864 | Type::TupleType(it) => &it.syntax, |
4400 | ModuleItem::ExternBlock(it) => &it.syntax, | ||
4401 | } | 2865 | } |
4402 | } | 2866 | } |
4403 | } | 2867 | } |
4404 | impl From<FnDef> for AssocItem { | 2868 | impl From<ArrayExpr> for Expr { |
4405 | fn from(node: FnDef) -> AssocItem { AssocItem::FnDef(node) } | 2869 | fn from(node: ArrayExpr) -> Expr { Expr::ArrayExpr(node) } |
4406 | } | ||
4407 | impl From<TypeAliasDef> for AssocItem { | ||
4408 | fn from(node: TypeAliasDef) -> AssocItem { AssocItem::TypeAliasDef(node) } | ||
4409 | } | ||
4410 | impl From<ConstDef> for AssocItem { | ||
4411 | fn from(node: ConstDef) -> AssocItem { AssocItem::ConstDef(node) } | ||
4412 | } | 2870 | } |
4413 | impl AstNode for AssocItem { | 2871 | impl From<AwaitExpr> for Expr { |
4414 | fn can_cast(kind: SyntaxKind) -> bool { | 2872 | fn from(node: AwaitExpr) -> Expr { Expr::AwaitExpr(node) } |
4415 | match kind { | ||
4416 | FN_DEF | TYPE_ALIAS_DEF | CONST_DEF => true, | ||
4417 | _ => false, | ||
4418 | } | ||
4419 | } | ||
4420 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
4421 | let res = match syntax.kind() { | ||
4422 | FN_DEF => AssocItem::FnDef(FnDef { syntax }), | ||
4423 | TYPE_ALIAS_DEF => AssocItem::TypeAliasDef(TypeAliasDef { syntax }), | ||
4424 | CONST_DEF => AssocItem::ConstDef(ConstDef { syntax }), | ||
4425 | _ => return None, | ||
4426 | }; | ||
4427 | Some(res) | ||
4428 | } | ||
4429 | fn syntax(&self) -> &SyntaxNode { | ||
4430 | match self { | ||
4431 | AssocItem::FnDef(it) => &it.syntax, | ||
4432 | AssocItem::TypeAliasDef(it) => &it.syntax, | ||
4433 | AssocItem::ConstDef(it) => &it.syntax, | ||
4434 | } | ||
4435 | } | ||
4436 | } | 2873 | } |
4437 | impl From<FnDef> for ExternItem { | 2874 | impl From<BinExpr> for Expr { |
4438 | fn from(node: FnDef) -> ExternItem { ExternItem::FnDef(node) } | 2875 | fn from(node: BinExpr) -> Expr { Expr::BinExpr(node) } |
4439 | } | 2876 | } |
4440 | impl From<StaticDef> for ExternItem { | 2877 | impl From<BlockExpr> for Expr { |
4441 | fn from(node: StaticDef) -> ExternItem { ExternItem::StaticDef(node) } | 2878 | fn from(node: BlockExpr) -> Expr { Expr::BlockExpr(node) } |
4442 | } | 2879 | } |
4443 | impl AstNode for ExternItem { | 2880 | impl From<BoxExpr> for Expr { |
4444 | fn can_cast(kind: SyntaxKind) -> bool { | 2881 | fn from(node: BoxExpr) -> Expr { Expr::BoxExpr(node) } |
4445 | match kind { | ||
4446 | FN_DEF | STATIC_DEF => true, | ||
4447 | _ => false, | ||
4448 | } | ||
4449 | } | ||
4450 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
4451 | let res = match syntax.kind() { | ||
4452 | FN_DEF => ExternItem::FnDef(FnDef { syntax }), | ||
4453 | STATIC_DEF => ExternItem::StaticDef(StaticDef { syntax }), | ||
4454 | _ => return None, | ||
4455 | }; | ||
4456 | Some(res) | ||
4457 | } | ||
4458 | fn syntax(&self) -> &SyntaxNode { | ||
4459 | match self { | ||
4460 | ExternItem::FnDef(it) => &it.syntax, | ||
4461 | ExternItem::StaticDef(it) => &it.syntax, | ||
4462 | } | ||
4463 | } | ||
4464 | } | 2882 | } |
4465 | impl From<TupleExpr> for Expr { | 2883 | impl From<BreakExpr> for Expr { |
4466 | fn from(node: TupleExpr) -> Expr { Expr::TupleExpr(node) } | 2884 | fn from(node: BreakExpr) -> Expr { Expr::BreakExpr(node) } |
4467 | } | 2885 | } |
4468 | impl From<ArrayExpr> for Expr { | 2886 | impl From<CallExpr> for Expr { |
4469 | fn from(node: ArrayExpr) -> Expr { Expr::ArrayExpr(node) } | 2887 | fn from(node: CallExpr) -> Expr { Expr::CallExpr(node) } |
4470 | } | 2888 | } |
4471 | impl From<ParenExpr> for Expr { | 2889 | impl From<CastExpr> for Expr { |
4472 | fn from(node: ParenExpr) -> Expr { Expr::ParenExpr(node) } | 2890 | fn from(node: CastExpr) -> Expr { Expr::CastExpr(node) } |
4473 | } | 2891 | } |
4474 | impl From<PathExpr> for Expr { | 2892 | impl From<ClosureExpr> for Expr { |
4475 | fn from(node: PathExpr) -> Expr { Expr::PathExpr(node) } | 2893 | fn from(node: ClosureExpr) -> Expr { Expr::ClosureExpr(node) } |
4476 | } | 2894 | } |
4477 | impl From<LambdaExpr> for Expr { | 2895 | impl From<ContinueExpr> for Expr { |
4478 | fn from(node: LambdaExpr) -> Expr { Expr::LambdaExpr(node) } | 2896 | fn from(node: ContinueExpr) -> Expr { Expr::ContinueExpr(node) } |
4479 | } | 2897 | } |
4480 | impl From<IfExpr> for Expr { | 2898 | impl From<EffectExpr> for Expr { |
4481 | fn from(node: IfExpr) -> Expr { Expr::IfExpr(node) } | 2899 | fn from(node: EffectExpr) -> Expr { Expr::EffectExpr(node) } |
4482 | } | 2900 | } |
4483 | impl From<LoopExpr> for Expr { | 2901 | impl From<FieldExpr> for Expr { |
4484 | fn from(node: LoopExpr) -> Expr { Expr::LoopExpr(node) } | 2902 | fn from(node: FieldExpr) -> Expr { Expr::FieldExpr(node) } |
4485 | } | 2903 | } |
4486 | impl From<ForExpr> for Expr { | 2904 | impl From<ForExpr> for Expr { |
4487 | fn from(node: ForExpr) -> Expr { Expr::ForExpr(node) } | 2905 | fn from(node: ForExpr) -> Expr { Expr::ForExpr(node) } |
4488 | } | 2906 | } |
4489 | impl From<WhileExpr> for Expr { | 2907 | impl From<IfExpr> for Expr { |
4490 | fn from(node: WhileExpr) -> Expr { Expr::WhileExpr(node) } | 2908 | fn from(node: IfExpr) -> Expr { Expr::IfExpr(node) } |
4491 | } | ||
4492 | impl From<ContinueExpr> for Expr { | ||
4493 | fn from(node: ContinueExpr) -> Expr { Expr::ContinueExpr(node) } | ||
4494 | } | 2909 | } |
4495 | impl From<BreakExpr> for Expr { | 2910 | impl From<IndexExpr> for Expr { |
4496 | fn from(node: BreakExpr) -> Expr { Expr::BreakExpr(node) } | 2911 | fn from(node: IndexExpr) -> Expr { Expr::IndexExpr(node) } |
4497 | } | 2912 | } |
4498 | impl From<Label> for Expr { | 2913 | impl From<Literal> for Expr { |
4499 | fn from(node: Label) -> Expr { Expr::Label(node) } | 2914 | fn from(node: Literal) -> Expr { Expr::Literal(node) } |
4500 | } | 2915 | } |
4501 | impl From<BlockExpr> for Expr { | 2916 | impl From<LoopExpr> for Expr { |
4502 | fn from(node: BlockExpr) -> Expr { Expr::BlockExpr(node) } | 2917 | fn from(node: LoopExpr) -> Expr { Expr::LoopExpr(node) } |
4503 | } | 2918 | } |
4504 | impl From<ReturnExpr> for Expr { | 2919 | impl From<MacroCall> for Expr { |
4505 | fn from(node: ReturnExpr) -> Expr { Expr::ReturnExpr(node) } | 2920 | fn from(node: MacroCall) -> Expr { Expr::MacroCall(node) } |
4506 | } | 2921 | } |
4507 | impl From<MatchExpr> for Expr { | 2922 | impl From<MatchExpr> for Expr { |
4508 | fn from(node: MatchExpr) -> Expr { Expr::MatchExpr(node) } | 2923 | fn from(node: MatchExpr) -> Expr { Expr::MatchExpr(node) } |
4509 | } | 2924 | } |
4510 | impl From<RecordLit> for Expr { | ||
4511 | fn from(node: RecordLit) -> Expr { Expr::RecordLit(node) } | ||
4512 | } | ||
4513 | impl From<CallExpr> for Expr { | ||
4514 | fn from(node: CallExpr) -> Expr { Expr::CallExpr(node) } | ||
4515 | } | ||
4516 | impl From<IndexExpr> for Expr { | ||
4517 | fn from(node: IndexExpr) -> Expr { Expr::IndexExpr(node) } | ||
4518 | } | ||
4519 | impl From<MethodCallExpr> for Expr { | 2925 | impl From<MethodCallExpr> for Expr { |
4520 | fn from(node: MethodCallExpr) -> Expr { Expr::MethodCallExpr(node) } | 2926 | fn from(node: MethodCallExpr) -> Expr { Expr::MethodCallExpr(node) } |
4521 | } | 2927 | } |
4522 | impl From<FieldExpr> for Expr { | 2928 | impl From<ParenExpr> for Expr { |
4523 | fn from(node: FieldExpr) -> Expr { Expr::FieldExpr(node) } | 2929 | fn from(node: ParenExpr) -> Expr { Expr::ParenExpr(node) } |
4524 | } | ||
4525 | impl From<AwaitExpr> for Expr { | ||
4526 | fn from(node: AwaitExpr) -> Expr { Expr::AwaitExpr(node) } | ||
4527 | } | ||
4528 | impl From<TryExpr> for Expr { | ||
4529 | fn from(node: TryExpr) -> Expr { Expr::TryExpr(node) } | ||
4530 | } | ||
4531 | impl From<EffectExpr> for Expr { | ||
4532 | fn from(node: EffectExpr) -> Expr { Expr::EffectExpr(node) } | ||
4533 | } | ||
4534 | impl From<CastExpr> for Expr { | ||
4535 | fn from(node: CastExpr) -> Expr { Expr::CastExpr(node) } | ||
4536 | } | 2930 | } |
4537 | impl From<RefExpr> for Expr { | 2931 | impl From<PathExpr> for Expr { |
4538 | fn from(node: RefExpr) -> Expr { Expr::RefExpr(node) } | 2932 | fn from(node: PathExpr) -> Expr { Expr::PathExpr(node) } |
4539 | } | 2933 | } |
4540 | impl From<PrefixExpr> for Expr { | 2934 | impl From<PrefixExpr> for Expr { |
4541 | fn from(node: PrefixExpr) -> Expr { Expr::PrefixExpr(node) } | 2935 | fn from(node: PrefixExpr) -> Expr { Expr::PrefixExpr(node) } |
@@ -4543,349 +2937,485 @@ impl From<PrefixExpr> for Expr { | |||
4543 | impl From<RangeExpr> for Expr { | 2937 | impl From<RangeExpr> for Expr { |
4544 | fn from(node: RangeExpr) -> Expr { Expr::RangeExpr(node) } | 2938 | fn from(node: RangeExpr) -> Expr { Expr::RangeExpr(node) } |
4545 | } | 2939 | } |
4546 | impl From<BinExpr> for Expr { | 2940 | impl From<RecordExpr> for Expr { |
4547 | fn from(node: BinExpr) -> Expr { Expr::BinExpr(node) } | 2941 | fn from(node: RecordExpr) -> Expr { Expr::RecordExpr(node) } |
4548 | } | 2942 | } |
4549 | impl From<Literal> for Expr { | 2943 | impl From<RefExpr> for Expr { |
4550 | fn from(node: Literal) -> Expr { Expr::Literal(node) } | 2944 | fn from(node: RefExpr) -> Expr { Expr::RefExpr(node) } |
4551 | } | 2945 | } |
4552 | impl From<MacroCall> for Expr { | 2946 | impl From<ReturnExpr> for Expr { |
4553 | fn from(node: MacroCall) -> Expr { Expr::MacroCall(node) } | 2947 | fn from(node: ReturnExpr) -> Expr { Expr::ReturnExpr(node) } |
4554 | } | 2948 | } |
4555 | impl From<BoxExpr> for Expr { | 2949 | impl From<TryExpr> for Expr { |
4556 | fn from(node: BoxExpr) -> Expr { Expr::BoxExpr(node) } | 2950 | fn from(node: TryExpr) -> Expr { Expr::TryExpr(node) } |
2951 | } | ||
2952 | impl From<TupleExpr> for Expr { | ||
2953 | fn from(node: TupleExpr) -> Expr { Expr::TupleExpr(node) } | ||
2954 | } | ||
2955 | impl From<WhileExpr> for Expr { | ||
2956 | fn from(node: WhileExpr) -> Expr { Expr::WhileExpr(node) } | ||
4557 | } | 2957 | } |
4558 | impl AstNode for Expr { | 2958 | impl AstNode for Expr { |
4559 | fn can_cast(kind: SyntaxKind) -> bool { | 2959 | fn can_cast(kind: SyntaxKind) -> bool { |
4560 | match kind { | 2960 | match kind { |
4561 | TUPLE_EXPR | ARRAY_EXPR | PAREN_EXPR | PATH_EXPR | LAMBDA_EXPR | IF_EXPR | 2961 | ARRAY_EXPR | AWAIT_EXPR | BIN_EXPR | BLOCK_EXPR | BOX_EXPR | BREAK_EXPR | CALL_EXPR |
4562 | | LOOP_EXPR | FOR_EXPR | WHILE_EXPR | CONTINUE_EXPR | BREAK_EXPR | LABEL | 2962 | | CAST_EXPR | CLOSURE_EXPR | CONTINUE_EXPR | EFFECT_EXPR | FIELD_EXPR | FOR_EXPR |
4563 | | BLOCK_EXPR | RETURN_EXPR | MATCH_EXPR | RECORD_LIT | CALL_EXPR | INDEX_EXPR | 2963 | | IF_EXPR | INDEX_EXPR | LITERAL | LOOP_EXPR | MACRO_CALL | MATCH_EXPR |
4564 | | METHOD_CALL_EXPR | FIELD_EXPR | AWAIT_EXPR | TRY_EXPR | EFFECT_EXPR | CAST_EXPR | 2964 | | METHOD_CALL_EXPR | PAREN_EXPR | PATH_EXPR | PREFIX_EXPR | RANGE_EXPR |
4565 | | REF_EXPR | PREFIX_EXPR | RANGE_EXPR | BIN_EXPR | LITERAL | MACRO_CALL | BOX_EXPR => { | 2965 | | RECORD_EXPR | REF_EXPR | RETURN_EXPR | TRY_EXPR | TUPLE_EXPR | WHILE_EXPR => true, |
4566 | true | ||
4567 | } | ||
4568 | _ => false, | 2966 | _ => false, |
4569 | } | 2967 | } |
4570 | } | 2968 | } |
4571 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 2969 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4572 | let res = match syntax.kind() { | 2970 | let res = match syntax.kind() { |
4573 | TUPLE_EXPR => Expr::TupleExpr(TupleExpr { syntax }), | ||
4574 | ARRAY_EXPR => Expr::ArrayExpr(ArrayExpr { syntax }), | 2971 | ARRAY_EXPR => Expr::ArrayExpr(ArrayExpr { syntax }), |
4575 | PAREN_EXPR => Expr::ParenExpr(ParenExpr { syntax }), | 2972 | AWAIT_EXPR => Expr::AwaitExpr(AwaitExpr { syntax }), |
4576 | PATH_EXPR => Expr::PathExpr(PathExpr { syntax }), | 2973 | BIN_EXPR => Expr::BinExpr(BinExpr { syntax }), |
4577 | LAMBDA_EXPR => Expr::LambdaExpr(LambdaExpr { syntax }), | ||
4578 | IF_EXPR => Expr::IfExpr(IfExpr { syntax }), | ||
4579 | LOOP_EXPR => Expr::LoopExpr(LoopExpr { syntax }), | ||
4580 | FOR_EXPR => Expr::ForExpr(ForExpr { syntax }), | ||
4581 | WHILE_EXPR => Expr::WhileExpr(WhileExpr { syntax }), | ||
4582 | CONTINUE_EXPR => Expr::ContinueExpr(ContinueExpr { syntax }), | ||
4583 | BREAK_EXPR => Expr::BreakExpr(BreakExpr { syntax }), | ||
4584 | LABEL => Expr::Label(Label { syntax }), | ||
4585 | BLOCK_EXPR => Expr::BlockExpr(BlockExpr { syntax }), | 2974 | BLOCK_EXPR => Expr::BlockExpr(BlockExpr { syntax }), |
4586 | RETURN_EXPR => Expr::ReturnExpr(ReturnExpr { syntax }), | 2975 | BOX_EXPR => Expr::BoxExpr(BoxExpr { syntax }), |
4587 | MATCH_EXPR => Expr::MatchExpr(MatchExpr { syntax }), | 2976 | BREAK_EXPR => Expr::BreakExpr(BreakExpr { syntax }), |
4588 | RECORD_LIT => Expr::RecordLit(RecordLit { syntax }), | ||
4589 | CALL_EXPR => Expr::CallExpr(CallExpr { syntax }), | 2977 | CALL_EXPR => Expr::CallExpr(CallExpr { syntax }), |
2978 | CAST_EXPR => Expr::CastExpr(CastExpr { syntax }), | ||
2979 | CLOSURE_EXPR => Expr::ClosureExpr(ClosureExpr { syntax }), | ||
2980 | CONTINUE_EXPR => Expr::ContinueExpr(ContinueExpr { syntax }), | ||
2981 | EFFECT_EXPR => Expr::EffectExpr(EffectExpr { syntax }), | ||
2982 | FIELD_EXPR => Expr::FieldExpr(FieldExpr { syntax }), | ||
2983 | FOR_EXPR => Expr::ForExpr(ForExpr { syntax }), | ||
2984 | IF_EXPR => Expr::IfExpr(IfExpr { syntax }), | ||
4590 | INDEX_EXPR => Expr::IndexExpr(IndexExpr { syntax }), | 2985 | INDEX_EXPR => Expr::IndexExpr(IndexExpr { syntax }), |
2986 | LITERAL => Expr::Literal(Literal { syntax }), | ||
2987 | LOOP_EXPR => Expr::LoopExpr(LoopExpr { syntax }), | ||
2988 | MACRO_CALL => Expr::MacroCall(MacroCall { syntax }), | ||
2989 | MATCH_EXPR => Expr::MatchExpr(MatchExpr { syntax }), | ||
4591 | METHOD_CALL_EXPR => Expr::MethodCallExpr(MethodCallExpr { syntax }), | 2990 | METHOD_CALL_EXPR => Expr::MethodCallExpr(MethodCallExpr { syntax }), |
4592 | FIELD_EXPR => Expr::FieldExpr(FieldExpr { syntax }), | 2991 | PAREN_EXPR => Expr::ParenExpr(ParenExpr { syntax }), |
4593 | AWAIT_EXPR => Expr::AwaitExpr(AwaitExpr { syntax }), | 2992 | PATH_EXPR => Expr::PathExpr(PathExpr { syntax }), |
4594 | TRY_EXPR => Expr::TryExpr(TryExpr { syntax }), | ||
4595 | EFFECT_EXPR => Expr::EffectExpr(EffectExpr { syntax }), | ||
4596 | CAST_EXPR => Expr::CastExpr(CastExpr { syntax }), | ||
4597 | REF_EXPR => Expr::RefExpr(RefExpr { syntax }), | ||
4598 | PREFIX_EXPR => Expr::PrefixExpr(PrefixExpr { syntax }), | 2993 | PREFIX_EXPR => Expr::PrefixExpr(PrefixExpr { syntax }), |
4599 | RANGE_EXPR => Expr::RangeExpr(RangeExpr { syntax }), | 2994 | RANGE_EXPR => Expr::RangeExpr(RangeExpr { syntax }), |
4600 | BIN_EXPR => Expr::BinExpr(BinExpr { syntax }), | 2995 | RECORD_EXPR => Expr::RecordExpr(RecordExpr { syntax }), |
4601 | LITERAL => Expr::Literal(Literal { syntax }), | 2996 | REF_EXPR => Expr::RefExpr(RefExpr { syntax }), |
4602 | MACRO_CALL => Expr::MacroCall(MacroCall { syntax }), | 2997 | RETURN_EXPR => Expr::ReturnExpr(ReturnExpr { syntax }), |
4603 | BOX_EXPR => Expr::BoxExpr(BoxExpr { syntax }), | 2998 | TRY_EXPR => Expr::TryExpr(TryExpr { syntax }), |
2999 | TUPLE_EXPR => Expr::TupleExpr(TupleExpr { syntax }), | ||
3000 | WHILE_EXPR => Expr::WhileExpr(WhileExpr { syntax }), | ||
4604 | _ => return None, | 3001 | _ => return None, |
4605 | }; | 3002 | }; |
4606 | Some(res) | 3003 | Some(res) |
4607 | } | 3004 | } |
4608 | fn syntax(&self) -> &SyntaxNode { | 3005 | fn syntax(&self) -> &SyntaxNode { |
4609 | match self { | 3006 | match self { |
4610 | Expr::TupleExpr(it) => &it.syntax, | ||
4611 | Expr::ArrayExpr(it) => &it.syntax, | 3007 | Expr::ArrayExpr(it) => &it.syntax, |
4612 | Expr::ParenExpr(it) => &it.syntax, | 3008 | Expr::AwaitExpr(it) => &it.syntax, |
4613 | Expr::PathExpr(it) => &it.syntax, | 3009 | Expr::BinExpr(it) => &it.syntax, |
4614 | Expr::LambdaExpr(it) => &it.syntax, | ||
4615 | Expr::IfExpr(it) => &it.syntax, | ||
4616 | Expr::LoopExpr(it) => &it.syntax, | ||
4617 | Expr::ForExpr(it) => &it.syntax, | ||
4618 | Expr::WhileExpr(it) => &it.syntax, | ||
4619 | Expr::ContinueExpr(it) => &it.syntax, | ||
4620 | Expr::BreakExpr(it) => &it.syntax, | ||
4621 | Expr::Label(it) => &it.syntax, | ||
4622 | Expr::BlockExpr(it) => &it.syntax, | 3010 | Expr::BlockExpr(it) => &it.syntax, |
4623 | Expr::ReturnExpr(it) => &it.syntax, | 3011 | Expr::BoxExpr(it) => &it.syntax, |
4624 | Expr::MatchExpr(it) => &it.syntax, | 3012 | Expr::BreakExpr(it) => &it.syntax, |
4625 | Expr::RecordLit(it) => &it.syntax, | ||
4626 | Expr::CallExpr(it) => &it.syntax, | 3013 | Expr::CallExpr(it) => &it.syntax, |
3014 | Expr::CastExpr(it) => &it.syntax, | ||
3015 | Expr::ClosureExpr(it) => &it.syntax, | ||
3016 | Expr::ContinueExpr(it) => &it.syntax, | ||
3017 | Expr::EffectExpr(it) => &it.syntax, | ||
3018 | Expr::FieldExpr(it) => &it.syntax, | ||
3019 | Expr::ForExpr(it) => &it.syntax, | ||
3020 | Expr::IfExpr(it) => &it.syntax, | ||
4627 | Expr::IndexExpr(it) => &it.syntax, | 3021 | Expr::IndexExpr(it) => &it.syntax, |
3022 | Expr::Literal(it) => &it.syntax, | ||
3023 | Expr::LoopExpr(it) => &it.syntax, | ||
3024 | Expr::MacroCall(it) => &it.syntax, | ||
3025 | Expr::MatchExpr(it) => &it.syntax, | ||
4628 | Expr::MethodCallExpr(it) => &it.syntax, | 3026 | Expr::MethodCallExpr(it) => &it.syntax, |
4629 | Expr::FieldExpr(it) => &it.syntax, | 3027 | Expr::ParenExpr(it) => &it.syntax, |
4630 | Expr::AwaitExpr(it) => &it.syntax, | 3028 | Expr::PathExpr(it) => &it.syntax, |
4631 | Expr::TryExpr(it) => &it.syntax, | ||
4632 | Expr::EffectExpr(it) => &it.syntax, | ||
4633 | Expr::CastExpr(it) => &it.syntax, | ||
4634 | Expr::RefExpr(it) => &it.syntax, | ||
4635 | Expr::PrefixExpr(it) => &it.syntax, | 3029 | Expr::PrefixExpr(it) => &it.syntax, |
4636 | Expr::RangeExpr(it) => &it.syntax, | 3030 | Expr::RangeExpr(it) => &it.syntax, |
4637 | Expr::BinExpr(it) => &it.syntax, | 3031 | Expr::RecordExpr(it) => &it.syntax, |
4638 | Expr::Literal(it) => &it.syntax, | 3032 | Expr::RefExpr(it) => &it.syntax, |
4639 | Expr::MacroCall(it) => &it.syntax, | 3033 | Expr::ReturnExpr(it) => &it.syntax, |
4640 | Expr::BoxExpr(it) => &it.syntax, | 3034 | Expr::TryExpr(it) => &it.syntax, |
3035 | Expr::TupleExpr(it) => &it.syntax, | ||
3036 | Expr::WhileExpr(it) => &it.syntax, | ||
4641 | } | 3037 | } |
4642 | } | 3038 | } |
4643 | } | 3039 | } |
4644 | impl From<OrPat> for Pat { | 3040 | impl From<Const> for Item { |
4645 | fn from(node: OrPat) -> Pat { Pat::OrPat(node) } | 3041 | fn from(node: Const) -> Item { Item::Const(node) } |
4646 | } | 3042 | } |
4647 | impl From<ParenPat> for Pat { | 3043 | impl From<Enum> for Item { |
4648 | fn from(node: ParenPat) -> Pat { Pat::ParenPat(node) } | 3044 | fn from(node: Enum) -> Item { Item::Enum(node) } |
4649 | } | 3045 | } |
4650 | impl From<RefPat> for Pat { | 3046 | impl From<ExternBlock> for Item { |
4651 | fn from(node: RefPat) -> Pat { Pat::RefPat(node) } | 3047 | fn from(node: ExternBlock) -> Item { Item::ExternBlock(node) } |
3048 | } | ||
3049 | impl From<ExternCrate> for Item { | ||
3050 | fn from(node: ExternCrate) -> Item { Item::ExternCrate(node) } | ||
3051 | } | ||
3052 | impl From<Fn> for Item { | ||
3053 | fn from(node: Fn) -> Item { Item::Fn(node) } | ||
3054 | } | ||
3055 | impl From<Impl> for Item { | ||
3056 | fn from(node: Impl) -> Item { Item::Impl(node) } | ||
3057 | } | ||
3058 | impl From<MacroCall> for Item { | ||
3059 | fn from(node: MacroCall) -> Item { Item::MacroCall(node) } | ||
3060 | } | ||
3061 | impl From<Module> for Item { | ||
3062 | fn from(node: Module) -> Item { Item::Module(node) } | ||
3063 | } | ||
3064 | impl From<Static> for Item { | ||
3065 | fn from(node: Static) -> Item { Item::Static(node) } | ||
3066 | } | ||
3067 | impl From<Struct> for Item { | ||
3068 | fn from(node: Struct) -> Item { Item::Struct(node) } | ||
3069 | } | ||
3070 | impl From<Trait> for Item { | ||
3071 | fn from(node: Trait) -> Item { Item::Trait(node) } | ||
3072 | } | ||
3073 | impl From<TypeAlias> for Item { | ||
3074 | fn from(node: TypeAlias) -> Item { Item::TypeAlias(node) } | ||
3075 | } | ||
3076 | impl From<Union> for Item { | ||
3077 | fn from(node: Union) -> Item { Item::Union(node) } | ||
3078 | } | ||
3079 | impl From<Use> for Item { | ||
3080 | fn from(node: Use) -> Item { Item::Use(node) } | ||
3081 | } | ||
3082 | impl AstNode for Item { | ||
3083 | fn can_cast(kind: SyntaxKind) -> bool { | ||
3084 | match kind { | ||
3085 | CONST | ENUM | EXTERN_BLOCK | EXTERN_CRATE | FN | IMPL | MACRO_CALL | MODULE | ||
3086 | | STATIC | STRUCT | TRAIT | TYPE_ALIAS | UNION | USE => true, | ||
3087 | _ => false, | ||
3088 | } | ||
3089 | } | ||
3090 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
3091 | let res = match syntax.kind() { | ||
3092 | CONST => Item::Const(Const { syntax }), | ||
3093 | ENUM => Item::Enum(Enum { syntax }), | ||
3094 | EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }), | ||
3095 | EXTERN_CRATE => Item::ExternCrate(ExternCrate { syntax }), | ||
3096 | FN => Item::Fn(Fn { syntax }), | ||
3097 | IMPL => Item::Impl(Impl { syntax }), | ||
3098 | MACRO_CALL => Item::MacroCall(MacroCall { syntax }), | ||
3099 | MODULE => Item::Module(Module { syntax }), | ||
3100 | STATIC => Item::Static(Static { syntax }), | ||
3101 | STRUCT => Item::Struct(Struct { syntax }), | ||
3102 | TRAIT => Item::Trait(Trait { syntax }), | ||
3103 | TYPE_ALIAS => Item::TypeAlias(TypeAlias { syntax }), | ||
3104 | UNION => Item::Union(Union { syntax }), | ||
3105 | USE => Item::Use(Use { syntax }), | ||
3106 | _ => return None, | ||
3107 | }; | ||
3108 | Some(res) | ||
3109 | } | ||
3110 | fn syntax(&self) -> &SyntaxNode { | ||
3111 | match self { | ||
3112 | Item::Const(it) => &it.syntax, | ||
3113 | Item::Enum(it) => &it.syntax, | ||
3114 | Item::ExternBlock(it) => &it.syntax, | ||
3115 | Item::ExternCrate(it) => &it.syntax, | ||
3116 | Item::Fn(it) => &it.syntax, | ||
3117 | Item::Impl(it) => &it.syntax, | ||
3118 | Item::MacroCall(it) => &it.syntax, | ||
3119 | Item::Module(it) => &it.syntax, | ||
3120 | Item::Static(it) => &it.syntax, | ||
3121 | Item::Struct(it) => &it.syntax, | ||
3122 | Item::Trait(it) => &it.syntax, | ||
3123 | Item::TypeAlias(it) => &it.syntax, | ||
3124 | Item::Union(it) => &it.syntax, | ||
3125 | Item::Use(it) => &it.syntax, | ||
3126 | } | ||
3127 | } | ||
3128 | } | ||
3129 | impl From<ExprStmt> for Stmt { | ||
3130 | fn from(node: ExprStmt) -> Stmt { Stmt::ExprStmt(node) } | ||
3131 | } | ||
3132 | impl From<Item> for Stmt { | ||
3133 | fn from(node: Item) -> Stmt { Stmt::Item(node) } | ||
3134 | } | ||
3135 | impl From<LetStmt> for Stmt { | ||
3136 | fn from(node: LetStmt) -> Stmt { Stmt::LetStmt(node) } | ||
3137 | } | ||
3138 | impl From<IdentPat> for Pat { | ||
3139 | fn from(node: IdentPat) -> Pat { Pat::IdentPat(node) } | ||
4652 | } | 3140 | } |
4653 | impl From<BoxPat> for Pat { | 3141 | impl From<BoxPat> for Pat { |
4654 | fn from(node: BoxPat) -> Pat { Pat::BoxPat(node) } | 3142 | fn from(node: BoxPat) -> Pat { Pat::BoxPat(node) } |
4655 | } | 3143 | } |
4656 | impl From<BindPat> for Pat { | 3144 | impl From<RestPat> for Pat { |
4657 | fn from(node: BindPat) -> Pat { Pat::BindPat(node) } | 3145 | fn from(node: RestPat) -> Pat { Pat::RestPat(node) } |
4658 | } | 3146 | } |
4659 | impl From<PlaceholderPat> for Pat { | 3147 | impl From<LiteralPat> for Pat { |
4660 | fn from(node: PlaceholderPat) -> Pat { Pat::PlaceholderPat(node) } | 3148 | fn from(node: LiteralPat) -> Pat { Pat::LiteralPat(node) } |
4661 | } | 3149 | } |
4662 | impl From<DotDotPat> for Pat { | 3150 | impl From<MacroPat> for Pat { |
4663 | fn from(node: DotDotPat) -> Pat { Pat::DotDotPat(node) } | 3151 | fn from(node: MacroPat) -> Pat { Pat::MacroPat(node) } |
3152 | } | ||
3153 | impl From<OrPat> for Pat { | ||
3154 | fn from(node: OrPat) -> Pat { Pat::OrPat(node) } | ||
3155 | } | ||
3156 | impl From<ParenPat> for Pat { | ||
3157 | fn from(node: ParenPat) -> Pat { Pat::ParenPat(node) } | ||
4664 | } | 3158 | } |
4665 | impl From<PathPat> for Pat { | 3159 | impl From<PathPat> for Pat { |
4666 | fn from(node: PathPat) -> Pat { Pat::PathPat(node) } | 3160 | fn from(node: PathPat) -> Pat { Pat::PathPat(node) } |
4667 | } | 3161 | } |
3162 | impl From<WildcardPat> for Pat { | ||
3163 | fn from(node: WildcardPat) -> Pat { Pat::WildcardPat(node) } | ||
3164 | } | ||
3165 | impl From<RangePat> for Pat { | ||
3166 | fn from(node: RangePat) -> Pat { Pat::RangePat(node) } | ||
3167 | } | ||
4668 | impl From<RecordPat> for Pat { | 3168 | impl From<RecordPat> for Pat { |
4669 | fn from(node: RecordPat) -> Pat { Pat::RecordPat(node) } | 3169 | fn from(node: RecordPat) -> Pat { Pat::RecordPat(node) } |
4670 | } | 3170 | } |
4671 | impl From<TupleStructPat> for Pat { | 3171 | impl From<RefPat> for Pat { |
4672 | fn from(node: TupleStructPat) -> Pat { Pat::TupleStructPat(node) } | 3172 | fn from(node: RefPat) -> Pat { Pat::RefPat(node) } |
4673 | } | ||
4674 | impl From<TuplePat> for Pat { | ||
4675 | fn from(node: TuplePat) -> Pat { Pat::TuplePat(node) } | ||
4676 | } | 3173 | } |
4677 | impl From<SlicePat> for Pat { | 3174 | impl From<SlicePat> for Pat { |
4678 | fn from(node: SlicePat) -> Pat { Pat::SlicePat(node) } | 3175 | fn from(node: SlicePat) -> Pat { Pat::SlicePat(node) } |
4679 | } | 3176 | } |
4680 | impl From<RangePat> for Pat { | 3177 | impl From<TuplePat> for Pat { |
4681 | fn from(node: RangePat) -> Pat { Pat::RangePat(node) } | 3178 | fn from(node: TuplePat) -> Pat { Pat::TuplePat(node) } |
4682 | } | ||
4683 | impl From<LiteralPat> for Pat { | ||
4684 | fn from(node: LiteralPat) -> Pat { Pat::LiteralPat(node) } | ||
4685 | } | 3179 | } |
4686 | impl From<MacroPat> for Pat { | 3180 | impl From<TupleStructPat> for Pat { |
4687 | fn from(node: MacroPat) -> Pat { Pat::MacroPat(node) } | 3181 | fn from(node: TupleStructPat) -> Pat { Pat::TupleStructPat(node) } |
4688 | } | 3182 | } |
4689 | impl AstNode for Pat { | 3183 | impl AstNode for Pat { |
4690 | fn can_cast(kind: SyntaxKind) -> bool { | 3184 | fn can_cast(kind: SyntaxKind) -> bool { |
4691 | match kind { | 3185 | match kind { |
4692 | OR_PAT | PAREN_PAT | REF_PAT | BOX_PAT | BIND_PAT | PLACEHOLDER_PAT | DOT_DOT_PAT | 3186 | IDENT_PAT | BOX_PAT | REST_PAT | LITERAL_PAT | MACRO_PAT | OR_PAT | PAREN_PAT |
4693 | | PATH_PAT | RECORD_PAT | TUPLE_STRUCT_PAT | TUPLE_PAT | SLICE_PAT | RANGE_PAT | 3187 | | PATH_PAT | WILDCARD_PAT | RANGE_PAT | RECORD_PAT | REF_PAT | SLICE_PAT |
4694 | | LITERAL_PAT | MACRO_PAT => true, | 3188 | | TUPLE_PAT | TUPLE_STRUCT_PAT => true, |
4695 | _ => false, | 3189 | _ => false, |
4696 | } | 3190 | } |
4697 | } | 3191 | } |
4698 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 3192 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4699 | let res = match syntax.kind() { | 3193 | let res = match syntax.kind() { |
3194 | IDENT_PAT => Pat::IdentPat(IdentPat { syntax }), | ||
3195 | BOX_PAT => Pat::BoxPat(BoxPat { syntax }), | ||
3196 | REST_PAT => Pat::RestPat(RestPat { syntax }), | ||
3197 | LITERAL_PAT => Pat::LiteralPat(LiteralPat { syntax }), | ||
3198 | MACRO_PAT => Pat::MacroPat(MacroPat { syntax }), | ||
4700 | OR_PAT => Pat::OrPat(OrPat { syntax }), | 3199 | OR_PAT => Pat::OrPat(OrPat { syntax }), |
4701 | PAREN_PAT => Pat::ParenPat(ParenPat { syntax }), | 3200 | PAREN_PAT => Pat::ParenPat(ParenPat { syntax }), |
4702 | REF_PAT => Pat::RefPat(RefPat { syntax }), | ||
4703 | BOX_PAT => Pat::BoxPat(BoxPat { syntax }), | ||
4704 | BIND_PAT => Pat::BindPat(BindPat { syntax }), | ||
4705 | PLACEHOLDER_PAT => Pat::PlaceholderPat(PlaceholderPat { syntax }), | ||
4706 | DOT_DOT_PAT => Pat::DotDotPat(DotDotPat { syntax }), | ||
4707 | PATH_PAT => Pat::PathPat(PathPat { syntax }), | 3201 | PATH_PAT => Pat::PathPat(PathPat { syntax }), |
3202 | WILDCARD_PAT => Pat::WildcardPat(WildcardPat { syntax }), | ||
3203 | RANGE_PAT => Pat::RangePat(RangePat { syntax }), | ||
4708 | RECORD_PAT => Pat::RecordPat(RecordPat { syntax }), | 3204 | RECORD_PAT => Pat::RecordPat(RecordPat { syntax }), |
4709 | TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }), | 3205 | REF_PAT => Pat::RefPat(RefPat { syntax }), |
4710 | TUPLE_PAT => Pat::TuplePat(TuplePat { syntax }), | ||
4711 | SLICE_PAT => Pat::SlicePat(SlicePat { syntax }), | 3206 | SLICE_PAT => Pat::SlicePat(SlicePat { syntax }), |
4712 | RANGE_PAT => Pat::RangePat(RangePat { syntax }), | 3207 | TUPLE_PAT => Pat::TuplePat(TuplePat { syntax }), |
4713 | LITERAL_PAT => Pat::LiteralPat(LiteralPat { syntax }), | 3208 | TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }), |
4714 | MACRO_PAT => Pat::MacroPat(MacroPat { syntax }), | ||
4715 | _ => return None, | 3209 | _ => return None, |
4716 | }; | 3210 | }; |
4717 | Some(res) | 3211 | Some(res) |
4718 | } | 3212 | } |
4719 | fn syntax(&self) -> &SyntaxNode { | 3213 | fn syntax(&self) -> &SyntaxNode { |
4720 | match self { | 3214 | match self { |
3215 | Pat::IdentPat(it) => &it.syntax, | ||
3216 | Pat::BoxPat(it) => &it.syntax, | ||
3217 | Pat::RestPat(it) => &it.syntax, | ||
3218 | Pat::LiteralPat(it) => &it.syntax, | ||
3219 | Pat::MacroPat(it) => &it.syntax, | ||
4721 | Pat::OrPat(it) => &it.syntax, | 3220 | Pat::OrPat(it) => &it.syntax, |
4722 | Pat::ParenPat(it) => &it.syntax, | 3221 | Pat::ParenPat(it) => &it.syntax, |
4723 | Pat::RefPat(it) => &it.syntax, | ||
4724 | Pat::BoxPat(it) => &it.syntax, | ||
4725 | Pat::BindPat(it) => &it.syntax, | ||
4726 | Pat::PlaceholderPat(it) => &it.syntax, | ||
4727 | Pat::DotDotPat(it) => &it.syntax, | ||
4728 | Pat::PathPat(it) => &it.syntax, | 3222 | Pat::PathPat(it) => &it.syntax, |
3223 | Pat::WildcardPat(it) => &it.syntax, | ||
3224 | Pat::RangePat(it) => &it.syntax, | ||
4729 | Pat::RecordPat(it) => &it.syntax, | 3225 | Pat::RecordPat(it) => &it.syntax, |
4730 | Pat::TupleStructPat(it) => &it.syntax, | 3226 | Pat::RefPat(it) => &it.syntax, |
4731 | Pat::TuplePat(it) => &it.syntax, | ||
4732 | Pat::SlicePat(it) => &it.syntax, | 3227 | Pat::SlicePat(it) => &it.syntax, |
4733 | Pat::RangePat(it) => &it.syntax, | 3228 | Pat::TuplePat(it) => &it.syntax, |
4734 | Pat::LiteralPat(it) => &it.syntax, | 3229 | Pat::TupleStructPat(it) => &it.syntax, |
4735 | Pat::MacroPat(it) => &it.syntax, | ||
4736 | } | 3230 | } |
4737 | } | 3231 | } |
4738 | } | 3232 | } |
4739 | impl From<RecordFieldPat> for RecordInnerPat { | 3233 | impl From<RecordFieldList> for FieldList { |
4740 | fn from(node: RecordFieldPat) -> RecordInnerPat { RecordInnerPat::RecordFieldPat(node) } | 3234 | fn from(node: RecordFieldList) -> FieldList { FieldList::RecordFieldList(node) } |
4741 | } | 3235 | } |
4742 | impl From<BindPat> for RecordInnerPat { | 3236 | impl From<TupleFieldList> for FieldList { |
4743 | fn from(node: BindPat) -> RecordInnerPat { RecordInnerPat::BindPat(node) } | 3237 | fn from(node: TupleFieldList) -> FieldList { FieldList::TupleFieldList(node) } |
4744 | } | 3238 | } |
4745 | impl AstNode for RecordInnerPat { | 3239 | impl AstNode for FieldList { |
4746 | fn can_cast(kind: SyntaxKind) -> bool { | 3240 | fn can_cast(kind: SyntaxKind) -> bool { |
4747 | match kind { | 3241 | match kind { |
4748 | RECORD_FIELD_PAT | BIND_PAT => true, | 3242 | RECORD_FIELD_LIST | TUPLE_FIELD_LIST => true, |
4749 | _ => false, | 3243 | _ => false, |
4750 | } | 3244 | } |
4751 | } | 3245 | } |
4752 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 3246 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4753 | let res = match syntax.kind() { | 3247 | let res = match syntax.kind() { |
4754 | RECORD_FIELD_PAT => RecordInnerPat::RecordFieldPat(RecordFieldPat { syntax }), | 3248 | RECORD_FIELD_LIST => FieldList::RecordFieldList(RecordFieldList { syntax }), |
4755 | BIND_PAT => RecordInnerPat::BindPat(BindPat { syntax }), | 3249 | TUPLE_FIELD_LIST => FieldList::TupleFieldList(TupleFieldList { syntax }), |
4756 | _ => return None, | 3250 | _ => return None, |
4757 | }; | 3251 | }; |
4758 | Some(res) | 3252 | Some(res) |
4759 | } | 3253 | } |
4760 | fn syntax(&self) -> &SyntaxNode { | 3254 | fn syntax(&self) -> &SyntaxNode { |
4761 | match self { | 3255 | match self { |
4762 | RecordInnerPat::RecordFieldPat(it) => &it.syntax, | 3256 | FieldList::RecordFieldList(it) => &it.syntax, |
4763 | RecordInnerPat::BindPat(it) => &it.syntax, | 3257 | FieldList::TupleFieldList(it) => &it.syntax, |
4764 | } | 3258 | } |
4765 | } | 3259 | } |
4766 | } | 3260 | } |
4767 | impl From<Literal> for AttrInput { | 3261 | impl From<Enum> for AdtDef { |
4768 | fn from(node: Literal) -> AttrInput { AttrInput::Literal(node) } | 3262 | fn from(node: Enum) -> AdtDef { AdtDef::Enum(node) } |
3263 | } | ||
3264 | impl From<Struct> for AdtDef { | ||
3265 | fn from(node: Struct) -> AdtDef { AdtDef::Struct(node) } | ||
4769 | } | 3266 | } |
4770 | impl From<TokenTree> for AttrInput { | 3267 | impl From<Union> for AdtDef { |
4771 | fn from(node: TokenTree) -> AttrInput { AttrInput::TokenTree(node) } | 3268 | fn from(node: Union) -> AdtDef { AdtDef::Union(node) } |
4772 | } | 3269 | } |
4773 | impl AstNode for AttrInput { | 3270 | impl AstNode for AdtDef { |
4774 | fn can_cast(kind: SyntaxKind) -> bool { | 3271 | fn can_cast(kind: SyntaxKind) -> bool { |
4775 | match kind { | 3272 | match kind { |
4776 | LITERAL | TOKEN_TREE => true, | 3273 | ENUM | STRUCT | UNION => true, |
4777 | _ => false, | 3274 | _ => false, |
4778 | } | 3275 | } |
4779 | } | 3276 | } |
4780 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 3277 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4781 | let res = match syntax.kind() { | 3278 | let res = match syntax.kind() { |
4782 | LITERAL => AttrInput::Literal(Literal { syntax }), | 3279 | ENUM => AdtDef::Enum(Enum { syntax }), |
4783 | TOKEN_TREE => AttrInput::TokenTree(TokenTree { syntax }), | 3280 | STRUCT => AdtDef::Struct(Struct { syntax }), |
3281 | UNION => AdtDef::Union(Union { syntax }), | ||
4784 | _ => return None, | 3282 | _ => return None, |
4785 | }; | 3283 | }; |
4786 | Some(res) | 3284 | Some(res) |
4787 | } | 3285 | } |
4788 | fn syntax(&self) -> &SyntaxNode { | 3286 | fn syntax(&self) -> &SyntaxNode { |
4789 | match self { | 3287 | match self { |
4790 | AttrInput::Literal(it) => &it.syntax, | 3288 | AdtDef::Enum(it) => &it.syntax, |
4791 | AttrInput::TokenTree(it) => &it.syntax, | 3289 | AdtDef::Struct(it) => &it.syntax, |
3290 | AdtDef::Union(it) => &it.syntax, | ||
4792 | } | 3291 | } |
4793 | } | 3292 | } |
4794 | } | 3293 | } |
4795 | impl From<LetStmt> for Stmt { | 3294 | impl From<Const> for AssocItem { |
4796 | fn from(node: LetStmt) -> Stmt { Stmt::LetStmt(node) } | 3295 | fn from(node: Const) -> AssocItem { AssocItem::Const(node) } |
4797 | } | 3296 | } |
4798 | impl From<ExprStmt> for Stmt { | 3297 | impl From<Fn> for AssocItem { |
4799 | fn from(node: ExprStmt) -> Stmt { Stmt::ExprStmt(node) } | 3298 | fn from(node: Fn) -> AssocItem { AssocItem::Fn(node) } |
3299 | } | ||
3300 | impl From<MacroCall> for AssocItem { | ||
3301 | fn from(node: MacroCall) -> AssocItem { AssocItem::MacroCall(node) } | ||
4800 | } | 3302 | } |
4801 | impl AstNode for Stmt { | 3303 | impl From<TypeAlias> for AssocItem { |
3304 | fn from(node: TypeAlias) -> AssocItem { AssocItem::TypeAlias(node) } | ||
3305 | } | ||
3306 | impl AstNode for AssocItem { | ||
4802 | fn can_cast(kind: SyntaxKind) -> bool { | 3307 | fn can_cast(kind: SyntaxKind) -> bool { |
4803 | match kind { | 3308 | match kind { |
4804 | LET_STMT | EXPR_STMT => true, | 3309 | CONST | FN | MACRO_CALL | TYPE_ALIAS => true, |
4805 | _ => false, | 3310 | _ => false, |
4806 | } | 3311 | } |
4807 | } | 3312 | } |
4808 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 3313 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4809 | let res = match syntax.kind() { | 3314 | let res = match syntax.kind() { |
4810 | LET_STMT => Stmt::LetStmt(LetStmt { syntax }), | 3315 | CONST => AssocItem::Const(Const { syntax }), |
4811 | EXPR_STMT => Stmt::ExprStmt(ExprStmt { syntax }), | 3316 | FN => AssocItem::Fn(Fn { syntax }), |
3317 | MACRO_CALL => AssocItem::MacroCall(MacroCall { syntax }), | ||
3318 | TYPE_ALIAS => AssocItem::TypeAlias(TypeAlias { syntax }), | ||
4812 | _ => return None, | 3319 | _ => return None, |
4813 | }; | 3320 | }; |
4814 | Some(res) | 3321 | Some(res) |
4815 | } | 3322 | } |
4816 | fn syntax(&self) -> &SyntaxNode { | 3323 | fn syntax(&self) -> &SyntaxNode { |
4817 | match self { | 3324 | match self { |
4818 | Stmt::LetStmt(it) => &it.syntax, | 3325 | AssocItem::Const(it) => &it.syntax, |
4819 | Stmt::ExprStmt(it) => &it.syntax, | 3326 | AssocItem::Fn(it) => &it.syntax, |
3327 | AssocItem::MacroCall(it) => &it.syntax, | ||
3328 | AssocItem::TypeAlias(it) => &it.syntax, | ||
4820 | } | 3329 | } |
4821 | } | 3330 | } |
4822 | } | 3331 | } |
4823 | impl From<RecordFieldDefList> for FieldDefList { | 3332 | impl From<Fn> for ExternItem { |
4824 | fn from(node: RecordFieldDefList) -> FieldDefList { FieldDefList::RecordFieldDefList(node) } | 3333 | fn from(node: Fn) -> ExternItem { ExternItem::Fn(node) } |
4825 | } | 3334 | } |
4826 | impl From<TupleFieldDefList> for FieldDefList { | 3335 | impl From<MacroCall> for ExternItem { |
4827 | fn from(node: TupleFieldDefList) -> FieldDefList { FieldDefList::TupleFieldDefList(node) } | 3336 | fn from(node: MacroCall) -> ExternItem { ExternItem::MacroCall(node) } |
4828 | } | 3337 | } |
4829 | impl AstNode for FieldDefList { | 3338 | impl From<Static> for ExternItem { |
3339 | fn from(node: Static) -> ExternItem { ExternItem::Static(node) } | ||
3340 | } | ||
3341 | impl AstNode for ExternItem { | ||
4830 | fn can_cast(kind: SyntaxKind) -> bool { | 3342 | fn can_cast(kind: SyntaxKind) -> bool { |
4831 | match kind { | 3343 | match kind { |
4832 | RECORD_FIELD_DEF_LIST | TUPLE_FIELD_DEF_LIST => true, | 3344 | FN | MACRO_CALL | STATIC => true, |
4833 | _ => false, | 3345 | _ => false, |
4834 | } | 3346 | } |
4835 | } | 3347 | } |
4836 | fn cast(syntax: SyntaxNode) -> Option<Self> { | 3348 | fn cast(syntax: SyntaxNode) -> Option<Self> { |
4837 | let res = match syntax.kind() { | 3349 | let res = match syntax.kind() { |
4838 | RECORD_FIELD_DEF_LIST => { | 3350 | FN => ExternItem::Fn(Fn { syntax }), |
4839 | FieldDefList::RecordFieldDefList(RecordFieldDefList { syntax }) | 3351 | MACRO_CALL => ExternItem::MacroCall(MacroCall { syntax }), |
4840 | } | 3352 | STATIC => ExternItem::Static(Static { syntax }), |
4841 | TUPLE_FIELD_DEF_LIST => FieldDefList::TupleFieldDefList(TupleFieldDefList { syntax }), | ||
4842 | _ => return None, | 3353 | _ => return None, |
4843 | }; | 3354 | }; |
4844 | Some(res) | 3355 | Some(res) |
4845 | } | 3356 | } |
4846 | fn syntax(&self) -> &SyntaxNode { | 3357 | fn syntax(&self) -> &SyntaxNode { |
4847 | match self { | 3358 | match self { |
4848 | FieldDefList::RecordFieldDefList(it) => &it.syntax, | 3359 | ExternItem::Fn(it) => &it.syntax, |
4849 | FieldDefList::TupleFieldDefList(it) => &it.syntax, | 3360 | ExternItem::MacroCall(it) => &it.syntax, |
3361 | ExternItem::Static(it) => &it.syntax, | ||
4850 | } | 3362 | } |
4851 | } | 3363 | } |
4852 | } | 3364 | } |
4853 | impl std::fmt::Display for NominalDef { | 3365 | impl From<ConstParam> for GenericParam { |
4854 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3366 | fn from(node: ConstParam) -> GenericParam { GenericParam::ConstParam(node) } |
4855 | std::fmt::Display::fmt(self.syntax(), f) | ||
4856 | } | ||
4857 | } | 3367 | } |
4858 | impl std::fmt::Display for GenericParam { | 3368 | impl From<LifetimeParam> for GenericParam { |
4859 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3369 | fn from(node: LifetimeParam) -> GenericParam { GenericParam::LifetimeParam(node) } |
4860 | std::fmt::Display::fmt(self.syntax(), f) | ||
4861 | } | ||
4862 | } | 3370 | } |
4863 | impl std::fmt::Display for GenericArg { | 3371 | impl From<TypeParam> for GenericParam { |
4864 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3372 | fn from(node: TypeParam) -> GenericParam { GenericParam::TypeParam(node) } |
4865 | std::fmt::Display::fmt(self.syntax(), f) | 3373 | } |
3374 | impl AstNode for GenericParam { | ||
3375 | fn can_cast(kind: SyntaxKind) -> bool { | ||
3376 | match kind { | ||
3377 | CONST_PARAM | LIFETIME_PARAM | TYPE_PARAM => true, | ||
3378 | _ => false, | ||
3379 | } | ||
3380 | } | ||
3381 | fn cast(syntax: SyntaxNode) -> Option<Self> { | ||
3382 | let res = match syntax.kind() { | ||
3383 | CONST_PARAM => GenericParam::ConstParam(ConstParam { syntax }), | ||
3384 | LIFETIME_PARAM => GenericParam::LifetimeParam(LifetimeParam { syntax }), | ||
3385 | TYPE_PARAM => GenericParam::TypeParam(TypeParam { syntax }), | ||
3386 | _ => return None, | ||
3387 | }; | ||
3388 | Some(res) | ||
3389 | } | ||
3390 | fn syntax(&self) -> &SyntaxNode { | ||
3391 | match self { | ||
3392 | GenericParam::ConstParam(it) => &it.syntax, | ||
3393 | GenericParam::LifetimeParam(it) => &it.syntax, | ||
3394 | GenericParam::TypeParam(it) => &it.syntax, | ||
3395 | } | ||
4866 | } | 3396 | } |
4867 | } | 3397 | } |
4868 | impl std::fmt::Display for TypeRef { | 3398 | impl std::fmt::Display for GenericArg { |
4869 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3399 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4870 | std::fmt::Display::fmt(self.syntax(), f) | 3400 | std::fmt::Display::fmt(self.syntax(), f) |
4871 | } | 3401 | } |
4872 | } | 3402 | } |
4873 | impl std::fmt::Display for ModuleItem { | 3403 | impl std::fmt::Display for Type { |
4874 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3404 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4875 | std::fmt::Display::fmt(self.syntax(), f) | 3405 | std::fmt::Display::fmt(self.syntax(), f) |
4876 | } | 3406 | } |
4877 | } | 3407 | } |
4878 | impl std::fmt::Display for AssocItem { | 3408 | impl std::fmt::Display for Expr { |
4879 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3409 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4880 | std::fmt::Display::fmt(self.syntax(), f) | 3410 | std::fmt::Display::fmt(self.syntax(), f) |
4881 | } | 3411 | } |
4882 | } | 3412 | } |
4883 | impl std::fmt::Display for ExternItem { | 3413 | impl std::fmt::Display for Item { |
4884 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3414 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4885 | std::fmt::Display::fmt(self.syntax(), f) | 3415 | std::fmt::Display::fmt(self.syntax(), f) |
4886 | } | 3416 | } |
4887 | } | 3417 | } |
4888 | impl std::fmt::Display for Expr { | 3418 | impl std::fmt::Display for Stmt { |
4889 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3419 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4890 | std::fmt::Display::fmt(self.syntax(), f) | 3420 | std::fmt::Display::fmt(self.syntax(), f) |
4891 | } | 3421 | } |
@@ -4895,642 +3425,642 @@ impl std::fmt::Display for Pat { | |||
4895 | std::fmt::Display::fmt(self.syntax(), f) | 3425 | std::fmt::Display::fmt(self.syntax(), f) |
4896 | } | 3426 | } |
4897 | } | 3427 | } |
4898 | impl std::fmt::Display for RecordInnerPat { | 3428 | impl std::fmt::Display for FieldList { |
4899 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3429 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4900 | std::fmt::Display::fmt(self.syntax(), f) | 3430 | std::fmt::Display::fmt(self.syntax(), f) |
4901 | } | 3431 | } |
4902 | } | 3432 | } |
4903 | impl std::fmt::Display for AttrInput { | 3433 | impl std::fmt::Display for AdtDef { |
4904 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3434 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4905 | std::fmt::Display::fmt(self.syntax(), f) | 3435 | std::fmt::Display::fmt(self.syntax(), f) |
4906 | } | 3436 | } |
4907 | } | 3437 | } |
4908 | impl std::fmt::Display for Stmt { | 3438 | impl std::fmt::Display for AssocItem { |
4909 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3439 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4910 | std::fmt::Display::fmt(self.syntax(), f) | 3440 | std::fmt::Display::fmt(self.syntax(), f) |
4911 | } | 3441 | } |
4912 | } | 3442 | } |
4913 | impl std::fmt::Display for FieldDefList { | 3443 | impl std::fmt::Display for ExternItem { |
4914 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3444 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4915 | std::fmt::Display::fmt(self.syntax(), f) | 3445 | std::fmt::Display::fmt(self.syntax(), f) |
4916 | } | 3446 | } |
4917 | } | 3447 | } |
4918 | impl std::fmt::Display for SourceFile { | 3448 | impl std::fmt::Display for GenericParam { |
4919 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3449 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4920 | std::fmt::Display::fmt(self.syntax(), f) | 3450 | std::fmt::Display::fmt(self.syntax(), f) |
4921 | } | 3451 | } |
4922 | } | 3452 | } |
4923 | impl std::fmt::Display for FnDef { | 3453 | impl std::fmt::Display for Name { |
4924 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3454 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4925 | std::fmt::Display::fmt(self.syntax(), f) | 3455 | std::fmt::Display::fmt(self.syntax(), f) |
4926 | } | 3456 | } |
4927 | } | 3457 | } |
4928 | impl std::fmt::Display for RetType { | 3458 | impl std::fmt::Display for NameRef { |
4929 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3459 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4930 | std::fmt::Display::fmt(self.syntax(), f) | 3460 | std::fmt::Display::fmt(self.syntax(), f) |
4931 | } | 3461 | } |
4932 | } | 3462 | } |
4933 | impl std::fmt::Display for StructDef { | 3463 | impl std::fmt::Display for Path { |
4934 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3464 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4935 | std::fmt::Display::fmt(self.syntax(), f) | 3465 | std::fmt::Display::fmt(self.syntax(), f) |
4936 | } | 3466 | } |
4937 | } | 3467 | } |
4938 | impl std::fmt::Display for UnionDef { | 3468 | impl std::fmt::Display for PathSegment { |
4939 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3469 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4940 | std::fmt::Display::fmt(self.syntax(), f) | 3470 | std::fmt::Display::fmt(self.syntax(), f) |
4941 | } | 3471 | } |
4942 | } | 3472 | } |
4943 | impl std::fmt::Display for RecordFieldDefList { | 3473 | impl std::fmt::Display for GenericArgList { |
4944 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3474 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4945 | std::fmt::Display::fmt(self.syntax(), f) | 3475 | std::fmt::Display::fmt(self.syntax(), f) |
4946 | } | 3476 | } |
4947 | } | 3477 | } |
4948 | impl std::fmt::Display for RecordFieldDef { | 3478 | impl std::fmt::Display for ParamList { |
4949 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3479 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4950 | std::fmt::Display::fmt(self.syntax(), f) | 3480 | std::fmt::Display::fmt(self.syntax(), f) |
4951 | } | 3481 | } |
4952 | } | 3482 | } |
4953 | impl std::fmt::Display for TupleFieldDefList { | 3483 | impl std::fmt::Display for RetType { |
4954 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3484 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4955 | std::fmt::Display::fmt(self.syntax(), f) | 3485 | std::fmt::Display::fmt(self.syntax(), f) |
4956 | } | 3486 | } |
4957 | } | 3487 | } |
4958 | impl std::fmt::Display for TupleFieldDef { | 3488 | impl std::fmt::Display for PathType { |
4959 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3489 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4960 | std::fmt::Display::fmt(self.syntax(), f) | 3490 | std::fmt::Display::fmt(self.syntax(), f) |
4961 | } | 3491 | } |
4962 | } | 3492 | } |
4963 | impl std::fmt::Display for EnumDef { | 3493 | impl std::fmt::Display for TypeArg { |
4964 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3494 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4965 | std::fmt::Display::fmt(self.syntax(), f) | 3495 | std::fmt::Display::fmt(self.syntax(), f) |
4966 | } | 3496 | } |
4967 | } | 3497 | } |
4968 | impl std::fmt::Display for EnumVariantList { | 3498 | impl std::fmt::Display for AssocTypeArg { |
4969 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3499 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4970 | std::fmt::Display::fmt(self.syntax(), f) | 3500 | std::fmt::Display::fmt(self.syntax(), f) |
4971 | } | 3501 | } |
4972 | } | 3502 | } |
4973 | impl std::fmt::Display for EnumVariant { | 3503 | impl std::fmt::Display for LifetimeArg { |
4974 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3504 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4975 | std::fmt::Display::fmt(self.syntax(), f) | 3505 | std::fmt::Display::fmt(self.syntax(), f) |
4976 | } | 3506 | } |
4977 | } | 3507 | } |
4978 | impl std::fmt::Display for TraitDef { | 3508 | impl std::fmt::Display for ConstArg { |
4979 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3509 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4980 | std::fmt::Display::fmt(self.syntax(), f) | 3510 | std::fmt::Display::fmt(self.syntax(), f) |
4981 | } | 3511 | } |
4982 | } | 3512 | } |
4983 | impl std::fmt::Display for Module { | 3513 | impl std::fmt::Display for TypeBoundList { |
4984 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3514 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4985 | std::fmt::Display::fmt(self.syntax(), f) | 3515 | std::fmt::Display::fmt(self.syntax(), f) |
4986 | } | 3516 | } |
4987 | } | 3517 | } |
4988 | impl std::fmt::Display for ItemList { | 3518 | impl std::fmt::Display for MacroCall { |
4989 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3519 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4990 | std::fmt::Display::fmt(self.syntax(), f) | 3520 | std::fmt::Display::fmt(self.syntax(), f) |
4991 | } | 3521 | } |
4992 | } | 3522 | } |
4993 | impl std::fmt::Display for ConstDef { | 3523 | impl std::fmt::Display for Attr { |
4994 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3524 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
4995 | std::fmt::Display::fmt(self.syntax(), f) | 3525 | std::fmt::Display::fmt(self.syntax(), f) |
4996 | } | 3526 | } |
4997 | } | 3527 | } |
4998 | impl std::fmt::Display for StaticDef { | 3528 | impl std::fmt::Display for TokenTree { |
4999 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3529 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5000 | std::fmt::Display::fmt(self.syntax(), f) | 3530 | std::fmt::Display::fmt(self.syntax(), f) |
5001 | } | 3531 | } |
5002 | } | 3532 | } |
5003 | impl std::fmt::Display for TypeAliasDef { | 3533 | impl std::fmt::Display for MacroItems { |
5004 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3534 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5005 | std::fmt::Display::fmt(self.syntax(), f) | 3535 | std::fmt::Display::fmt(self.syntax(), f) |
5006 | } | 3536 | } |
5007 | } | 3537 | } |
5008 | impl std::fmt::Display for ImplDef { | 3538 | impl std::fmt::Display for MacroStmts { |
5009 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3539 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5010 | std::fmt::Display::fmt(self.syntax(), f) | 3540 | std::fmt::Display::fmt(self.syntax(), f) |
5011 | } | 3541 | } |
5012 | } | 3542 | } |
5013 | impl std::fmt::Display for ParenType { | 3543 | impl std::fmt::Display for SourceFile { |
5014 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3544 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5015 | std::fmt::Display::fmt(self.syntax(), f) | 3545 | std::fmt::Display::fmt(self.syntax(), f) |
5016 | } | 3546 | } |
5017 | } | 3547 | } |
5018 | impl std::fmt::Display for TupleType { | 3548 | impl std::fmt::Display for Const { |
5019 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3549 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5020 | std::fmt::Display::fmt(self.syntax(), f) | 3550 | std::fmt::Display::fmt(self.syntax(), f) |
5021 | } | 3551 | } |
5022 | } | 3552 | } |
5023 | impl std::fmt::Display for NeverType { | 3553 | impl std::fmt::Display for Enum { |
5024 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3554 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5025 | std::fmt::Display::fmt(self.syntax(), f) | 3555 | std::fmt::Display::fmt(self.syntax(), f) |
5026 | } | 3556 | } |
5027 | } | 3557 | } |
5028 | impl std::fmt::Display for PathType { | 3558 | impl std::fmt::Display for ExternBlock { |
5029 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3559 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5030 | std::fmt::Display::fmt(self.syntax(), f) | 3560 | std::fmt::Display::fmt(self.syntax(), f) |
5031 | } | 3561 | } |
5032 | } | 3562 | } |
5033 | impl std::fmt::Display for PointerType { | 3563 | impl std::fmt::Display for ExternCrate { |
5034 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3564 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5035 | std::fmt::Display::fmt(self.syntax(), f) | 3565 | std::fmt::Display::fmt(self.syntax(), f) |
5036 | } | 3566 | } |
5037 | } | 3567 | } |
5038 | impl std::fmt::Display for ArrayType { | 3568 | impl std::fmt::Display for Fn { |
5039 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3569 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5040 | std::fmt::Display::fmt(self.syntax(), f) | 3570 | std::fmt::Display::fmt(self.syntax(), f) |
5041 | } | 3571 | } |
5042 | } | 3572 | } |
5043 | impl std::fmt::Display for SliceType { | 3573 | impl std::fmt::Display for Impl { |
5044 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3574 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5045 | std::fmt::Display::fmt(self.syntax(), f) | 3575 | std::fmt::Display::fmt(self.syntax(), f) |
5046 | } | 3576 | } |
5047 | } | 3577 | } |
5048 | impl std::fmt::Display for ReferenceType { | 3578 | impl std::fmt::Display for Module { |
5049 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3579 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5050 | std::fmt::Display::fmt(self.syntax(), f) | 3580 | std::fmt::Display::fmt(self.syntax(), f) |
5051 | } | 3581 | } |
5052 | } | 3582 | } |
5053 | impl std::fmt::Display for PlaceholderType { | 3583 | impl std::fmt::Display for Static { |
5054 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3584 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5055 | std::fmt::Display::fmt(self.syntax(), f) | 3585 | std::fmt::Display::fmt(self.syntax(), f) |
5056 | } | 3586 | } |
5057 | } | 3587 | } |
5058 | impl std::fmt::Display for FnPointerType { | 3588 | impl std::fmt::Display for Struct { |
5059 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3589 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5060 | std::fmt::Display::fmt(self.syntax(), f) | 3590 | std::fmt::Display::fmt(self.syntax(), f) |
5061 | } | 3591 | } |
5062 | } | 3592 | } |
5063 | impl std::fmt::Display for ForType { | 3593 | impl std::fmt::Display for Trait { |
5064 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3594 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5065 | std::fmt::Display::fmt(self.syntax(), f) | 3595 | std::fmt::Display::fmt(self.syntax(), f) |
5066 | } | 3596 | } |
5067 | } | 3597 | } |
5068 | impl std::fmt::Display for ImplTraitType { | 3598 | impl std::fmt::Display for TypeAlias { |
5069 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3599 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5070 | std::fmt::Display::fmt(self.syntax(), f) | 3600 | std::fmt::Display::fmt(self.syntax(), f) |
5071 | } | 3601 | } |
5072 | } | 3602 | } |
5073 | impl std::fmt::Display for DynTraitType { | 3603 | impl std::fmt::Display for Union { |
5074 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3604 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5075 | std::fmt::Display::fmt(self.syntax(), f) | 3605 | std::fmt::Display::fmt(self.syntax(), f) |
5076 | } | 3606 | } |
5077 | } | 3607 | } |
5078 | impl std::fmt::Display for TupleExpr { | 3608 | impl std::fmt::Display for Use { |
5079 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3609 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5080 | std::fmt::Display::fmt(self.syntax(), f) | 3610 | std::fmt::Display::fmt(self.syntax(), f) |
5081 | } | 3611 | } |
5082 | } | 3612 | } |
5083 | impl std::fmt::Display for ArrayExpr { | 3613 | impl std::fmt::Display for Visibility { |
5084 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3614 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5085 | std::fmt::Display::fmt(self.syntax(), f) | 3615 | std::fmt::Display::fmt(self.syntax(), f) |
5086 | } | 3616 | } |
5087 | } | 3617 | } |
5088 | impl std::fmt::Display for ParenExpr { | 3618 | impl std::fmt::Display for ItemList { |
5089 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3619 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5090 | std::fmt::Display::fmt(self.syntax(), f) | 3620 | std::fmt::Display::fmt(self.syntax(), f) |
5091 | } | 3621 | } |
5092 | } | 3622 | } |
5093 | impl std::fmt::Display for PathExpr { | 3623 | impl std::fmt::Display for Rename { |
5094 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3624 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5095 | std::fmt::Display::fmt(self.syntax(), f) | 3625 | std::fmt::Display::fmt(self.syntax(), f) |
5096 | } | 3626 | } |
5097 | } | 3627 | } |
5098 | impl std::fmt::Display for LambdaExpr { | 3628 | impl std::fmt::Display for UseTree { |
5099 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3629 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5100 | std::fmt::Display::fmt(self.syntax(), f) | 3630 | std::fmt::Display::fmt(self.syntax(), f) |
5101 | } | 3631 | } |
5102 | } | 3632 | } |
5103 | impl std::fmt::Display for IfExpr { | 3633 | impl std::fmt::Display for UseTreeList { |
5104 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3634 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5105 | std::fmt::Display::fmt(self.syntax(), f) | 3635 | std::fmt::Display::fmt(self.syntax(), f) |
5106 | } | 3636 | } |
5107 | } | 3637 | } |
5108 | impl std::fmt::Display for LoopExpr { | 3638 | impl std::fmt::Display for Abi { |
5109 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3639 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5110 | std::fmt::Display::fmt(self.syntax(), f) | 3640 | std::fmt::Display::fmt(self.syntax(), f) |
5111 | } | 3641 | } |
5112 | } | 3642 | } |
5113 | impl std::fmt::Display for EffectExpr { | 3643 | impl std::fmt::Display for GenericParamList { |
5114 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3644 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5115 | std::fmt::Display::fmt(self.syntax(), f) | 3645 | std::fmt::Display::fmt(self.syntax(), f) |
5116 | } | 3646 | } |
5117 | } | 3647 | } |
5118 | impl std::fmt::Display for ForExpr { | 3648 | impl std::fmt::Display for WhereClause { |
5119 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3649 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5120 | std::fmt::Display::fmt(self.syntax(), f) | 3650 | std::fmt::Display::fmt(self.syntax(), f) |
5121 | } | 3651 | } |
5122 | } | 3652 | } |
5123 | impl std::fmt::Display for WhileExpr { | 3653 | impl std::fmt::Display for BlockExpr { |
5124 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3654 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5125 | std::fmt::Display::fmt(self.syntax(), f) | 3655 | std::fmt::Display::fmt(self.syntax(), f) |
5126 | } | 3656 | } |
5127 | } | 3657 | } |
5128 | impl std::fmt::Display for ContinueExpr { | 3658 | impl std::fmt::Display for SelfParam { |
5129 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3659 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5130 | std::fmt::Display::fmt(self.syntax(), f) | 3660 | std::fmt::Display::fmt(self.syntax(), f) |
5131 | } | 3661 | } |
5132 | } | 3662 | } |
5133 | impl std::fmt::Display for BreakExpr { | 3663 | impl std::fmt::Display for Param { |
5134 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3664 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5135 | std::fmt::Display::fmt(self.syntax(), f) | 3665 | std::fmt::Display::fmt(self.syntax(), f) |
5136 | } | 3666 | } |
5137 | } | 3667 | } |
5138 | impl std::fmt::Display for Label { | 3668 | impl std::fmt::Display for RecordFieldList { |
5139 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3669 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5140 | std::fmt::Display::fmt(self.syntax(), f) | 3670 | std::fmt::Display::fmt(self.syntax(), f) |
5141 | } | 3671 | } |
5142 | } | 3672 | } |
5143 | impl std::fmt::Display for BlockExpr { | 3673 | impl std::fmt::Display for TupleFieldList { |
5144 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3674 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5145 | std::fmt::Display::fmt(self.syntax(), f) | 3675 | std::fmt::Display::fmt(self.syntax(), f) |
5146 | } | 3676 | } |
5147 | } | 3677 | } |
5148 | impl std::fmt::Display for ReturnExpr { | 3678 | impl std::fmt::Display for RecordField { |
5149 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3679 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5150 | std::fmt::Display::fmt(self.syntax(), f) | 3680 | std::fmt::Display::fmt(self.syntax(), f) |
5151 | } | 3681 | } |
5152 | } | 3682 | } |
5153 | impl std::fmt::Display for CallExpr { | 3683 | impl std::fmt::Display for TupleField { |
5154 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3684 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5155 | std::fmt::Display::fmt(self.syntax(), f) | 3685 | std::fmt::Display::fmt(self.syntax(), f) |
5156 | } | 3686 | } |
5157 | } | 3687 | } |
5158 | impl std::fmt::Display for MethodCallExpr { | 3688 | impl std::fmt::Display for VariantList { |
5159 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3689 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5160 | std::fmt::Display::fmt(self.syntax(), f) | 3690 | std::fmt::Display::fmt(self.syntax(), f) |
5161 | } | 3691 | } |
5162 | } | 3692 | } |
5163 | impl std::fmt::Display for IndexExpr { | 3693 | impl std::fmt::Display for Variant { |
5164 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3694 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5165 | std::fmt::Display::fmt(self.syntax(), f) | 3695 | std::fmt::Display::fmt(self.syntax(), f) |
5166 | } | 3696 | } |
5167 | } | 3697 | } |
5168 | impl std::fmt::Display for FieldExpr { | 3698 | impl std::fmt::Display for AssocItemList { |
5169 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3699 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5170 | std::fmt::Display::fmt(self.syntax(), f) | 3700 | std::fmt::Display::fmt(self.syntax(), f) |
5171 | } | 3701 | } |
5172 | } | 3702 | } |
5173 | impl std::fmt::Display for AwaitExpr { | 3703 | impl std::fmt::Display for ExternItemList { |
5174 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3704 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5175 | std::fmt::Display::fmt(self.syntax(), f) | 3705 | std::fmt::Display::fmt(self.syntax(), f) |
5176 | } | 3706 | } |
5177 | } | 3707 | } |
5178 | impl std::fmt::Display for TryExpr { | 3708 | impl std::fmt::Display for ConstParam { |
5179 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3709 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5180 | std::fmt::Display::fmt(self.syntax(), f) | 3710 | std::fmt::Display::fmt(self.syntax(), f) |
5181 | } | 3711 | } |
5182 | } | 3712 | } |
5183 | impl std::fmt::Display for CastExpr { | 3713 | impl std::fmt::Display for LifetimeParam { |
5184 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3714 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5185 | std::fmt::Display::fmt(self.syntax(), f) | 3715 | std::fmt::Display::fmt(self.syntax(), f) |
5186 | } | 3716 | } |
5187 | } | 3717 | } |
5188 | impl std::fmt::Display for RefExpr { | 3718 | impl std::fmt::Display for TypeParam { |
5189 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3719 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5190 | std::fmt::Display::fmt(self.syntax(), f) | 3720 | std::fmt::Display::fmt(self.syntax(), f) |
5191 | } | 3721 | } |
5192 | } | 3722 | } |
5193 | impl std::fmt::Display for PrefixExpr { | 3723 | impl std::fmt::Display for WherePred { |
5194 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3724 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5195 | std::fmt::Display::fmt(self.syntax(), f) | 3725 | std::fmt::Display::fmt(self.syntax(), f) |
5196 | } | 3726 | } |
5197 | } | 3727 | } |
5198 | impl std::fmt::Display for BoxExpr { | 3728 | impl std::fmt::Display for Literal { |
5199 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3729 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5200 | std::fmt::Display::fmt(self.syntax(), f) | 3730 | std::fmt::Display::fmt(self.syntax(), f) |
5201 | } | 3731 | } |
5202 | } | 3732 | } |
5203 | impl std::fmt::Display for RangeExpr { | 3733 | impl std::fmt::Display for ExprStmt { |
5204 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3734 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5205 | std::fmt::Display::fmt(self.syntax(), f) | 3735 | std::fmt::Display::fmt(self.syntax(), f) |
5206 | } | 3736 | } |
5207 | } | 3737 | } |
5208 | impl std::fmt::Display for BinExpr { | 3738 | impl std::fmt::Display for LetStmt { |
5209 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3739 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5210 | std::fmt::Display::fmt(self.syntax(), f) | 3740 | std::fmt::Display::fmt(self.syntax(), f) |
5211 | } | 3741 | } |
5212 | } | 3742 | } |
5213 | impl std::fmt::Display for Literal { | 3743 | impl std::fmt::Display for ArrayExpr { |
5214 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3744 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5215 | std::fmt::Display::fmt(self.syntax(), f) | 3745 | std::fmt::Display::fmt(self.syntax(), f) |
5216 | } | 3746 | } |
5217 | } | 3747 | } |
5218 | impl std::fmt::Display for MatchExpr { | 3748 | impl std::fmt::Display for AwaitExpr { |
5219 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3749 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5220 | std::fmt::Display::fmt(self.syntax(), f) | 3750 | std::fmt::Display::fmt(self.syntax(), f) |
5221 | } | 3751 | } |
5222 | } | 3752 | } |
5223 | impl std::fmt::Display for MatchArmList { | 3753 | impl std::fmt::Display for BinExpr { |
5224 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3754 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5225 | std::fmt::Display::fmt(self.syntax(), f) | 3755 | std::fmt::Display::fmt(self.syntax(), f) |
5226 | } | 3756 | } |
5227 | } | 3757 | } |
5228 | impl std::fmt::Display for MatchArm { | 3758 | impl std::fmt::Display for BoxExpr { |
5229 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3759 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5230 | std::fmt::Display::fmt(self.syntax(), f) | 3760 | std::fmt::Display::fmt(self.syntax(), f) |
5231 | } | 3761 | } |
5232 | } | 3762 | } |
5233 | impl std::fmt::Display for MatchGuard { | 3763 | impl std::fmt::Display for BreakExpr { |
5234 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3764 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5235 | std::fmt::Display::fmt(self.syntax(), f) | 3765 | std::fmt::Display::fmt(self.syntax(), f) |
5236 | } | 3766 | } |
5237 | } | 3767 | } |
5238 | impl std::fmt::Display for RecordLit { | 3768 | impl std::fmt::Display for CallExpr { |
5239 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3769 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5240 | std::fmt::Display::fmt(self.syntax(), f) | 3770 | std::fmt::Display::fmt(self.syntax(), f) |
5241 | } | 3771 | } |
5242 | } | 3772 | } |
5243 | impl std::fmt::Display for RecordFieldList { | 3773 | impl std::fmt::Display for CastExpr { |
5244 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3774 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5245 | std::fmt::Display::fmt(self.syntax(), f) | 3775 | std::fmt::Display::fmt(self.syntax(), f) |
5246 | } | 3776 | } |
5247 | } | 3777 | } |
5248 | impl std::fmt::Display for RecordField { | 3778 | impl std::fmt::Display for ClosureExpr { |
5249 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3779 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5250 | std::fmt::Display::fmt(self.syntax(), f) | 3780 | std::fmt::Display::fmt(self.syntax(), f) |
5251 | } | 3781 | } |
5252 | } | 3782 | } |
5253 | impl std::fmt::Display for OrPat { | 3783 | impl std::fmt::Display for ContinueExpr { |
5254 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3784 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5255 | std::fmt::Display::fmt(self.syntax(), f) | 3785 | std::fmt::Display::fmt(self.syntax(), f) |
5256 | } | 3786 | } |
5257 | } | 3787 | } |
5258 | impl std::fmt::Display for ParenPat { | 3788 | impl std::fmt::Display for EffectExpr { |
5259 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3789 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5260 | std::fmt::Display::fmt(self.syntax(), f) | 3790 | std::fmt::Display::fmt(self.syntax(), f) |
5261 | } | 3791 | } |
5262 | } | 3792 | } |
5263 | impl std::fmt::Display for RefPat { | 3793 | impl std::fmt::Display for FieldExpr { |
5264 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3794 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5265 | std::fmt::Display::fmt(self.syntax(), f) | 3795 | std::fmt::Display::fmt(self.syntax(), f) |
5266 | } | 3796 | } |
5267 | } | 3797 | } |
5268 | impl std::fmt::Display for BoxPat { | 3798 | impl std::fmt::Display for ForExpr { |
5269 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3799 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5270 | std::fmt::Display::fmt(self.syntax(), f) | 3800 | std::fmt::Display::fmt(self.syntax(), f) |
5271 | } | 3801 | } |
5272 | } | 3802 | } |
5273 | impl std::fmt::Display for BindPat { | 3803 | impl std::fmt::Display for IfExpr { |
5274 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3804 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5275 | std::fmt::Display::fmt(self.syntax(), f) | 3805 | std::fmt::Display::fmt(self.syntax(), f) |
5276 | } | 3806 | } |
5277 | } | 3807 | } |
5278 | impl std::fmt::Display for PlaceholderPat { | 3808 | impl std::fmt::Display for IndexExpr { |
5279 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3809 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5280 | std::fmt::Display::fmt(self.syntax(), f) | 3810 | std::fmt::Display::fmt(self.syntax(), f) |
5281 | } | 3811 | } |
5282 | } | 3812 | } |
5283 | impl std::fmt::Display for DotDotPat { | 3813 | impl std::fmt::Display for LoopExpr { |
5284 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3814 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5285 | std::fmt::Display::fmt(self.syntax(), f) | 3815 | std::fmt::Display::fmt(self.syntax(), f) |
5286 | } | 3816 | } |
5287 | } | 3817 | } |
5288 | impl std::fmt::Display for PathPat { | 3818 | impl std::fmt::Display for MatchExpr { |
5289 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3819 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5290 | std::fmt::Display::fmt(self.syntax(), f) | 3820 | std::fmt::Display::fmt(self.syntax(), f) |
5291 | } | 3821 | } |
5292 | } | 3822 | } |
5293 | impl std::fmt::Display for SlicePat { | 3823 | impl std::fmt::Display for MethodCallExpr { |
5294 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3824 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5295 | std::fmt::Display::fmt(self.syntax(), f) | 3825 | std::fmt::Display::fmt(self.syntax(), f) |
5296 | } | 3826 | } |
5297 | } | 3827 | } |
5298 | impl std::fmt::Display for RangePat { | 3828 | impl std::fmt::Display for ParenExpr { |
5299 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3829 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5300 | std::fmt::Display::fmt(self.syntax(), f) | 3830 | std::fmt::Display::fmt(self.syntax(), f) |
5301 | } | 3831 | } |
5302 | } | 3832 | } |
5303 | impl std::fmt::Display for LiteralPat { | 3833 | impl std::fmt::Display for PathExpr { |
5304 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3834 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5305 | std::fmt::Display::fmt(self.syntax(), f) | 3835 | std::fmt::Display::fmt(self.syntax(), f) |
5306 | } | 3836 | } |
5307 | } | 3837 | } |
5308 | impl std::fmt::Display for MacroPat { | 3838 | impl std::fmt::Display for PrefixExpr { |
5309 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3839 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5310 | std::fmt::Display::fmt(self.syntax(), f) | 3840 | std::fmt::Display::fmt(self.syntax(), f) |
5311 | } | 3841 | } |
5312 | } | 3842 | } |
5313 | impl std::fmt::Display for RecordPat { | 3843 | impl std::fmt::Display for RangeExpr { |
5314 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3844 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5315 | std::fmt::Display::fmt(self.syntax(), f) | 3845 | std::fmt::Display::fmt(self.syntax(), f) |
5316 | } | 3846 | } |
5317 | } | 3847 | } |
5318 | impl std::fmt::Display for RecordFieldPatList { | 3848 | impl std::fmt::Display for RecordExpr { |
5319 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3849 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5320 | std::fmt::Display::fmt(self.syntax(), f) | 3850 | std::fmt::Display::fmt(self.syntax(), f) |
5321 | } | 3851 | } |
5322 | } | 3852 | } |
5323 | impl std::fmt::Display for RecordFieldPat { | 3853 | impl std::fmt::Display for RefExpr { |
5324 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3854 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5325 | std::fmt::Display::fmt(self.syntax(), f) | 3855 | std::fmt::Display::fmt(self.syntax(), f) |
5326 | } | 3856 | } |
5327 | } | 3857 | } |
5328 | impl std::fmt::Display for TupleStructPat { | 3858 | impl std::fmt::Display for ReturnExpr { |
5329 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3859 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5330 | std::fmt::Display::fmt(self.syntax(), f) | 3860 | std::fmt::Display::fmt(self.syntax(), f) |
5331 | } | 3861 | } |
5332 | } | 3862 | } |
5333 | impl std::fmt::Display for TuplePat { | 3863 | impl std::fmt::Display for TryExpr { |
5334 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3864 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5335 | std::fmt::Display::fmt(self.syntax(), f) | 3865 | std::fmt::Display::fmt(self.syntax(), f) |
5336 | } | 3866 | } |
5337 | } | 3867 | } |
5338 | impl std::fmt::Display for Visibility { | 3868 | impl std::fmt::Display for TupleExpr { |
5339 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3869 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5340 | std::fmt::Display::fmt(self.syntax(), f) | 3870 | std::fmt::Display::fmt(self.syntax(), f) |
5341 | } | 3871 | } |
5342 | } | 3872 | } |
5343 | impl std::fmt::Display for Name { | 3873 | impl std::fmt::Display for WhileExpr { |
5344 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3874 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5345 | std::fmt::Display::fmt(self.syntax(), f) | 3875 | std::fmt::Display::fmt(self.syntax(), f) |
5346 | } | 3876 | } |
5347 | } | 3877 | } |
5348 | impl std::fmt::Display for NameRef { | 3878 | impl std::fmt::Display for Label { |
5349 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3879 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5350 | std::fmt::Display::fmt(self.syntax(), f) | 3880 | std::fmt::Display::fmt(self.syntax(), f) |
5351 | } | 3881 | } |
5352 | } | 3882 | } |
5353 | impl std::fmt::Display for MacroCall { | 3883 | impl std::fmt::Display for RecordExprFieldList { |
5354 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3884 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5355 | std::fmt::Display::fmt(self.syntax(), f) | 3885 | std::fmt::Display::fmt(self.syntax(), f) |
5356 | } | 3886 | } |
5357 | } | 3887 | } |
5358 | impl std::fmt::Display for Attr { | 3888 | impl std::fmt::Display for RecordExprField { |
5359 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3889 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5360 | std::fmt::Display::fmt(self.syntax(), f) | 3890 | std::fmt::Display::fmt(self.syntax(), f) |
5361 | } | 3891 | } |
5362 | } | 3892 | } |
5363 | impl std::fmt::Display for TokenTree { | 3893 | impl std::fmt::Display for ArgList { |
5364 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3894 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5365 | std::fmt::Display::fmt(self.syntax(), f) | 3895 | std::fmt::Display::fmt(self.syntax(), f) |
5366 | } | 3896 | } |
5367 | } | 3897 | } |
5368 | impl std::fmt::Display for TypeParamList { | 3898 | impl std::fmt::Display for Condition { |
5369 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3899 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5370 | std::fmt::Display::fmt(self.syntax(), f) | 3900 | std::fmt::Display::fmt(self.syntax(), f) |
5371 | } | 3901 | } |
5372 | } | 3902 | } |
5373 | impl std::fmt::Display for TypeParam { | 3903 | impl std::fmt::Display for MatchArmList { |
5374 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3904 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5375 | std::fmt::Display::fmt(self.syntax(), f) | 3905 | std::fmt::Display::fmt(self.syntax(), f) |
5376 | } | 3906 | } |
5377 | } | 3907 | } |
5378 | impl std::fmt::Display for ConstParam { | 3908 | impl std::fmt::Display for MatchArm { |
5379 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3909 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5380 | std::fmt::Display::fmt(self.syntax(), f) | 3910 | std::fmt::Display::fmt(self.syntax(), f) |
5381 | } | 3911 | } |
5382 | } | 3912 | } |
5383 | impl std::fmt::Display for LifetimeParam { | 3913 | impl std::fmt::Display for MatchGuard { |
5384 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3914 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5385 | std::fmt::Display::fmt(self.syntax(), f) | 3915 | std::fmt::Display::fmt(self.syntax(), f) |
5386 | } | 3916 | } |
5387 | } | 3917 | } |
5388 | impl std::fmt::Display for TypeBound { | 3918 | impl std::fmt::Display for ArrayType { |
5389 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3919 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5390 | std::fmt::Display::fmt(self.syntax(), f) | 3920 | std::fmt::Display::fmt(self.syntax(), f) |
5391 | } | 3921 | } |
5392 | } | 3922 | } |
5393 | impl std::fmt::Display for TypeBoundList { | 3923 | impl std::fmt::Display for DynTraitType { |
5394 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3924 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5395 | std::fmt::Display::fmt(self.syntax(), f) | 3925 | std::fmt::Display::fmt(self.syntax(), f) |
5396 | } | 3926 | } |
5397 | } | 3927 | } |
5398 | impl std::fmt::Display for WherePred { | 3928 | impl std::fmt::Display for FnPtrType { |
5399 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3929 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5400 | std::fmt::Display::fmt(self.syntax(), f) | 3930 | std::fmt::Display::fmt(self.syntax(), f) |
5401 | } | 3931 | } |
5402 | } | 3932 | } |
5403 | impl std::fmt::Display for WhereClause { | 3933 | impl std::fmt::Display for ForType { |
5404 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3934 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5405 | std::fmt::Display::fmt(self.syntax(), f) | 3935 | std::fmt::Display::fmt(self.syntax(), f) |
5406 | } | 3936 | } |
5407 | } | 3937 | } |
5408 | impl std::fmt::Display for Abi { | 3938 | impl std::fmt::Display for ImplTraitType { |
5409 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3939 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5410 | std::fmt::Display::fmt(self.syntax(), f) | 3940 | std::fmt::Display::fmt(self.syntax(), f) |
5411 | } | 3941 | } |
5412 | } | 3942 | } |
5413 | impl std::fmt::Display for ExprStmt { | 3943 | impl std::fmt::Display for InferType { |
5414 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3944 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5415 | std::fmt::Display::fmt(self.syntax(), f) | 3945 | std::fmt::Display::fmt(self.syntax(), f) |
5416 | } | 3946 | } |
5417 | } | 3947 | } |
5418 | impl std::fmt::Display for LetStmt { | 3948 | impl std::fmt::Display for NeverType { |
5419 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3949 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5420 | std::fmt::Display::fmt(self.syntax(), f) | 3950 | std::fmt::Display::fmt(self.syntax(), f) |
5421 | } | 3951 | } |
5422 | } | 3952 | } |
5423 | impl std::fmt::Display for Condition { | 3953 | impl std::fmt::Display for ParenType { |
5424 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3954 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5425 | std::fmt::Display::fmt(self.syntax(), f) | 3955 | std::fmt::Display::fmt(self.syntax(), f) |
5426 | } | 3956 | } |
5427 | } | 3957 | } |
5428 | impl std::fmt::Display for ParamList { | 3958 | impl std::fmt::Display for PtrType { |
5429 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3959 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5430 | std::fmt::Display::fmt(self.syntax(), f) | 3960 | std::fmt::Display::fmt(self.syntax(), f) |
5431 | } | 3961 | } |
5432 | } | 3962 | } |
5433 | impl std::fmt::Display for SelfParam { | 3963 | impl std::fmt::Display for RefType { |
5434 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3964 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5435 | std::fmt::Display::fmt(self.syntax(), f) | 3965 | std::fmt::Display::fmt(self.syntax(), f) |
5436 | } | 3966 | } |
5437 | } | 3967 | } |
5438 | impl std::fmt::Display for Param { | 3968 | impl std::fmt::Display for SliceType { |
5439 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3969 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5440 | std::fmt::Display::fmt(self.syntax(), f) | 3970 | std::fmt::Display::fmt(self.syntax(), f) |
5441 | } | 3971 | } |
5442 | } | 3972 | } |
5443 | impl std::fmt::Display for UseItem { | 3973 | impl std::fmt::Display for TupleType { |
5444 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3974 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5445 | std::fmt::Display::fmt(self.syntax(), f) | 3975 | std::fmt::Display::fmt(self.syntax(), f) |
5446 | } | 3976 | } |
5447 | } | 3977 | } |
5448 | impl std::fmt::Display for UseTree { | 3978 | impl std::fmt::Display for TypeBound { |
5449 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3979 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5450 | std::fmt::Display::fmt(self.syntax(), f) | 3980 | std::fmt::Display::fmt(self.syntax(), f) |
5451 | } | 3981 | } |
5452 | } | 3982 | } |
5453 | impl std::fmt::Display for Alias { | 3983 | impl std::fmt::Display for IdentPat { |
5454 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3984 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5455 | std::fmt::Display::fmt(self.syntax(), f) | 3985 | std::fmt::Display::fmt(self.syntax(), f) |
5456 | } | 3986 | } |
5457 | } | 3987 | } |
5458 | impl std::fmt::Display for UseTreeList { | 3988 | impl std::fmt::Display for BoxPat { |
5459 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3989 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5460 | std::fmt::Display::fmt(self.syntax(), f) | 3990 | std::fmt::Display::fmt(self.syntax(), f) |
5461 | } | 3991 | } |
5462 | } | 3992 | } |
5463 | impl std::fmt::Display for ExternCrateItem { | 3993 | impl std::fmt::Display for RestPat { |
5464 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3994 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5465 | std::fmt::Display::fmt(self.syntax(), f) | 3995 | std::fmt::Display::fmt(self.syntax(), f) |
5466 | } | 3996 | } |
5467 | } | 3997 | } |
5468 | impl std::fmt::Display for ArgList { | 3998 | impl std::fmt::Display for LiteralPat { |
5469 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 3999 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5470 | std::fmt::Display::fmt(self.syntax(), f) | 4000 | std::fmt::Display::fmt(self.syntax(), f) |
5471 | } | 4001 | } |
5472 | } | 4002 | } |
5473 | impl std::fmt::Display for Path { | 4003 | impl std::fmt::Display for MacroPat { |
5474 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4004 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5475 | std::fmt::Display::fmt(self.syntax(), f) | 4005 | std::fmt::Display::fmt(self.syntax(), f) |
5476 | } | 4006 | } |
5477 | } | 4007 | } |
5478 | impl std::fmt::Display for PathSegment { | 4008 | impl std::fmt::Display for OrPat { |
5479 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4009 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5480 | std::fmt::Display::fmt(self.syntax(), f) | 4010 | std::fmt::Display::fmt(self.syntax(), f) |
5481 | } | 4011 | } |
5482 | } | 4012 | } |
5483 | impl std::fmt::Display for TypeArgList { | 4013 | impl std::fmt::Display for ParenPat { |
5484 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4014 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5485 | std::fmt::Display::fmt(self.syntax(), f) | 4015 | std::fmt::Display::fmt(self.syntax(), f) |
5486 | } | 4016 | } |
5487 | } | 4017 | } |
5488 | impl std::fmt::Display for TypeArg { | 4018 | impl std::fmt::Display for PathPat { |
5489 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4019 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5490 | std::fmt::Display::fmt(self.syntax(), f) | 4020 | std::fmt::Display::fmt(self.syntax(), f) |
5491 | } | 4021 | } |
5492 | } | 4022 | } |
5493 | impl std::fmt::Display for AssocTypeArg { | 4023 | impl std::fmt::Display for WildcardPat { |
5494 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4024 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5495 | std::fmt::Display::fmt(self.syntax(), f) | 4025 | std::fmt::Display::fmt(self.syntax(), f) |
5496 | } | 4026 | } |
5497 | } | 4027 | } |
5498 | impl std::fmt::Display for LifetimeArg { | 4028 | impl std::fmt::Display for RangePat { |
5499 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4029 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5500 | std::fmt::Display::fmt(self.syntax(), f) | 4030 | std::fmt::Display::fmt(self.syntax(), f) |
5501 | } | 4031 | } |
5502 | } | 4032 | } |
5503 | impl std::fmt::Display for ConstArg { | 4033 | impl std::fmt::Display for RecordPat { |
5504 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4034 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5505 | std::fmt::Display::fmt(self.syntax(), f) | 4035 | std::fmt::Display::fmt(self.syntax(), f) |
5506 | } | 4036 | } |
5507 | } | 4037 | } |
5508 | impl std::fmt::Display for MacroItems { | 4038 | impl std::fmt::Display for RefPat { |
5509 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4039 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5510 | std::fmt::Display::fmt(self.syntax(), f) | 4040 | std::fmt::Display::fmt(self.syntax(), f) |
5511 | } | 4041 | } |
5512 | } | 4042 | } |
5513 | impl std::fmt::Display for MacroStmts { | 4043 | impl std::fmt::Display for SlicePat { |
5514 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4044 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5515 | std::fmt::Display::fmt(self.syntax(), f) | 4045 | std::fmt::Display::fmt(self.syntax(), f) |
5516 | } | 4046 | } |
5517 | } | 4047 | } |
5518 | impl std::fmt::Display for ExternItemList { | 4048 | impl std::fmt::Display for TuplePat { |
5519 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4049 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5520 | std::fmt::Display::fmt(self.syntax(), f) | 4050 | std::fmt::Display::fmt(self.syntax(), f) |
5521 | } | 4051 | } |
5522 | } | 4052 | } |
5523 | impl std::fmt::Display for ExternBlock { | 4053 | impl std::fmt::Display for TupleStructPat { |
5524 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4054 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5525 | std::fmt::Display::fmt(self.syntax(), f) | 4055 | std::fmt::Display::fmt(self.syntax(), f) |
5526 | } | 4056 | } |
5527 | } | 4057 | } |
5528 | impl std::fmt::Display for MetaItem { | 4058 | impl std::fmt::Display for RecordPatFieldList { |
5529 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4059 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5530 | std::fmt::Display::fmt(self.syntax(), f) | 4060 | std::fmt::Display::fmt(self.syntax(), f) |
5531 | } | 4061 | } |
5532 | } | 4062 | } |
5533 | impl std::fmt::Display for MacroDef { | 4063 | impl std::fmt::Display for RecordPatField { |
5534 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { | 4064 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
5535 | std::fmt::Display::fmt(self.syntax(), f) | 4065 | std::fmt::Display::fmt(self.syntax(), f) |
5536 | } | 4066 | } |