2 * Copyright (c) 2016, Facebook, Inc.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree. An additional
11 * THIS FILE IS @generated; DO NOT EDIT IT
12 * To regenerate this file, run
14 * buck run //hphp/hack/src:generate_full_fidelity
21 syntax_children_iterator::SyntaxChildrenIterator,
24 #[derive(Debug, Clone)]
25 pub enum SyntaxVariant<'a, T, V> {
28 SyntaxList(&'a [Syntax<'a, T, V>]),
29 EndOfFile(&'a EndOfFileChildren<'a, T, V>),
30 Script(&'a ScriptChildren<'a, T, V>),
31 QualifiedName(&'a QualifiedNameChildren<'a, T, V>),
32 SimpleTypeSpecifier(&'a SimpleTypeSpecifierChildren<'a, T, V>),
33 LiteralExpression(&'a LiteralExpressionChildren<'a, T, V>),
34 PrefixedStringExpression(&'a PrefixedStringExpressionChildren<'a, T, V>),
35 PrefixedCodeExpression(&'a PrefixedCodeExpressionChildren<'a, T, V>),
36 VariableExpression(&'a VariableExpressionChildren<'a, T, V>),
37 PipeVariableExpression(&'a PipeVariableExpressionChildren<'a, T, V>),
38 FileAttributeSpecification(&'a FileAttributeSpecificationChildren<'a, T, V>),
39 EnumDeclaration(&'a EnumDeclarationChildren<'a, T, V>),
40 EnumUse(&'a EnumUseChildren<'a, T, V>),
41 Enumerator(&'a EnumeratorChildren<'a, T, V>),
42 EnumClassDeclaration(&'a EnumClassDeclarationChildren<'a, T, V>),
43 EnumClassEnumerator(&'a EnumClassEnumeratorChildren<'a, T, V>),
44 RecordDeclaration(&'a RecordDeclarationChildren<'a, T, V>),
45 RecordField(&'a RecordFieldChildren<'a, T, V>),
46 AliasDeclaration(&'a AliasDeclarationChildren<'a, T, V>),
47 ContextAliasDeclaration(&'a ContextAliasDeclarationChildren<'a, T, V>),
48 PropertyDeclaration(&'a PropertyDeclarationChildren<'a, T, V>),
49 PropertyDeclarator(&'a PropertyDeclaratorChildren<'a, T, V>),
50 NamespaceDeclaration(&'a NamespaceDeclarationChildren<'a, T, V>),
51 NamespaceDeclarationHeader(&'a NamespaceDeclarationHeaderChildren<'a, T, V>),
52 NamespaceBody(&'a NamespaceBodyChildren<'a, T, V>),
53 NamespaceEmptyBody(&'a NamespaceEmptyBodyChildren<'a, T, V>),
54 NamespaceUseDeclaration(&'a NamespaceUseDeclarationChildren<'a, T, V>),
55 NamespaceGroupUseDeclaration(&'a NamespaceGroupUseDeclarationChildren<'a, T, V>),
56 NamespaceUseClause(&'a NamespaceUseClauseChildren<'a, T, V>),
57 FunctionDeclaration(&'a FunctionDeclarationChildren<'a, T, V>),
58 FunctionDeclarationHeader(&'a FunctionDeclarationHeaderChildren<'a, T, V>),
59 Contexts(&'a ContextsChildren<'a, T, V>),
60 WhereClause(&'a WhereClauseChildren<'a, T, V>),
61 WhereConstraint(&'a WhereConstraintChildren<'a, T, V>),
62 MethodishDeclaration(&'a MethodishDeclarationChildren<'a, T, V>),
63 MethodishTraitResolution(&'a MethodishTraitResolutionChildren<'a, T, V>),
64 ClassishDeclaration(&'a ClassishDeclarationChildren<'a, T, V>),
65 ClassishBody(&'a ClassishBodyChildren<'a, T, V>),
66 TraitUsePrecedenceItem(&'a TraitUsePrecedenceItemChildren<'a, T, V>),
67 TraitUseAliasItem(&'a TraitUseAliasItemChildren<'a, T, V>),
68 TraitUseConflictResolution(&'a TraitUseConflictResolutionChildren<'a, T, V>),
69 TraitUse(&'a TraitUseChildren<'a, T, V>),
70 RequireClause(&'a RequireClauseChildren<'a, T, V>),
71 ConstDeclaration(&'a ConstDeclarationChildren<'a, T, V>),
72 ConstantDeclarator(&'a ConstantDeclaratorChildren<'a, T, V>),
73 TypeConstDeclaration(&'a TypeConstDeclarationChildren<'a, T, V>),
74 ContextConstDeclaration(&'a ContextConstDeclarationChildren<'a, T, V>),
75 DecoratedExpression(&'a DecoratedExpressionChildren<'a, T, V>),
76 ParameterDeclaration(&'a ParameterDeclarationChildren<'a, T, V>),
77 VariadicParameter(&'a VariadicParameterChildren<'a, T, V>),
78 OldAttributeSpecification(&'a OldAttributeSpecificationChildren<'a, T, V>),
79 AttributeSpecification(&'a AttributeSpecificationChildren<'a, T, V>),
80 Attribute(&'a AttributeChildren<'a, T, V>),
81 InclusionExpression(&'a InclusionExpressionChildren<'a, T, V>),
82 InclusionDirective(&'a InclusionDirectiveChildren<'a, T, V>),
83 CompoundStatement(&'a CompoundStatementChildren<'a, T, V>),
84 ExpressionStatement(&'a ExpressionStatementChildren<'a, T, V>),
85 MarkupSection(&'a MarkupSectionChildren<'a, T, V>),
86 MarkupSuffix(&'a MarkupSuffixChildren<'a, T, V>),
87 UnsetStatement(&'a UnsetStatementChildren<'a, T, V>),
88 UsingStatementBlockScoped(&'a UsingStatementBlockScopedChildren<'a, T, V>),
89 UsingStatementFunctionScoped(&'a UsingStatementFunctionScopedChildren<'a, T, V>),
90 WhileStatement(&'a WhileStatementChildren<'a, T, V>),
91 IfStatement(&'a IfStatementChildren<'a, T, V>),
92 ElseifClause(&'a ElseifClauseChildren<'a, T, V>),
93 ElseClause(&'a ElseClauseChildren<'a, T, V>),
94 TryStatement(&'a TryStatementChildren<'a, T, V>),
95 CatchClause(&'a CatchClauseChildren<'a, T, V>),
96 FinallyClause(&'a FinallyClauseChildren<'a, T, V>),
97 DoStatement(&'a DoStatementChildren<'a, T, V>),
98 ForStatement(&'a ForStatementChildren<'a, T, V>),
99 ForeachStatement(&'a ForeachStatementChildren<'a, T, V>),
100 SwitchStatement(&'a SwitchStatementChildren<'a, T, V>),
101 SwitchSection(&'a SwitchSectionChildren<'a, T, V>),
102 SwitchFallthrough(&'a SwitchFallthroughChildren<'a, T, V>),
103 CaseLabel(&'a CaseLabelChildren<'a, T, V>),
104 DefaultLabel(&'a DefaultLabelChildren<'a, T, V>),
105 ReturnStatement(&'a ReturnStatementChildren<'a, T, V>),
106 YieldBreakStatement(&'a YieldBreakStatementChildren<'a, T, V>),
107 ThrowStatement(&'a ThrowStatementChildren<'a, T, V>),
108 BreakStatement(&'a BreakStatementChildren<'a, T, V>),
109 ContinueStatement(&'a ContinueStatementChildren<'a, T, V>),
110 EchoStatement(&'a EchoStatementChildren<'a, T, V>),
111 ConcurrentStatement(&'a ConcurrentStatementChildren<'a, T, V>),
112 SimpleInitializer(&'a SimpleInitializerChildren<'a, T, V>),
113 AnonymousClass(&'a AnonymousClassChildren<'a, T, V>),
114 AnonymousFunction(&'a AnonymousFunctionChildren<'a, T, V>),
115 AnonymousFunctionUseClause(&'a AnonymousFunctionUseClauseChildren<'a, T, V>),
116 LambdaExpression(&'a LambdaExpressionChildren<'a, T, V>),
117 LambdaSignature(&'a LambdaSignatureChildren<'a, T, V>),
118 CastExpression(&'a CastExpressionChildren<'a, T, V>),
119 ScopeResolutionExpression(&'a ScopeResolutionExpressionChildren<'a, T, V>),
120 MemberSelectionExpression(&'a MemberSelectionExpressionChildren<'a, T, V>),
121 SafeMemberSelectionExpression(&'a SafeMemberSelectionExpressionChildren<'a, T, V>),
122 EmbeddedMemberSelectionExpression(&'a EmbeddedMemberSelectionExpressionChildren<'a, T, V>),
123 YieldExpression(&'a YieldExpressionChildren<'a, T, V>),
124 PrefixUnaryExpression(&'a PrefixUnaryExpressionChildren<'a, T, V>),
125 PostfixUnaryExpression(&'a PostfixUnaryExpressionChildren<'a, T, V>),
126 BinaryExpression(&'a BinaryExpressionChildren<'a, T, V>),
127 IsExpression(&'a IsExpressionChildren<'a, T, V>),
128 AsExpression(&'a AsExpressionChildren<'a, T, V>),
129 NullableAsExpression(&'a NullableAsExpressionChildren<'a, T, V>),
130 UpcastExpression(&'a UpcastExpressionChildren<'a, T, V>),
131 ConditionalExpression(&'a ConditionalExpressionChildren<'a, T, V>),
132 EvalExpression(&'a EvalExpressionChildren<'a, T, V>),
133 IssetExpression(&'a IssetExpressionChildren<'a, T, V>),
134 FunctionCallExpression(&'a FunctionCallExpressionChildren<'a, T, V>),
135 FunctionPointerExpression(&'a FunctionPointerExpressionChildren<'a, T, V>),
136 ParenthesizedExpression(&'a ParenthesizedExpressionChildren<'a, T, V>),
137 BracedExpression(&'a BracedExpressionChildren<'a, T, V>),
138 ETSpliceExpression(&'a ETSpliceExpressionChildren<'a, T, V>),
139 EmbeddedBracedExpression(&'a EmbeddedBracedExpressionChildren<'a, T, V>),
140 ListExpression(&'a ListExpressionChildren<'a, T, V>),
141 CollectionLiteralExpression(&'a CollectionLiteralExpressionChildren<'a, T, V>),
142 ObjectCreationExpression(&'a ObjectCreationExpressionChildren<'a, T, V>),
143 ConstructorCall(&'a ConstructorCallChildren<'a, T, V>),
144 RecordCreationExpression(&'a RecordCreationExpressionChildren<'a, T, V>),
145 DarrayIntrinsicExpression(&'a DarrayIntrinsicExpressionChildren<'a, T, V>),
146 DictionaryIntrinsicExpression(&'a DictionaryIntrinsicExpressionChildren<'a, T, V>),
147 KeysetIntrinsicExpression(&'a KeysetIntrinsicExpressionChildren<'a, T, V>),
148 VarrayIntrinsicExpression(&'a VarrayIntrinsicExpressionChildren<'a, T, V>),
149 VectorIntrinsicExpression(&'a VectorIntrinsicExpressionChildren<'a, T, V>),
150 ElementInitializer(&'a ElementInitializerChildren<'a, T, V>),
151 SubscriptExpression(&'a SubscriptExpressionChildren<'a, T, V>),
152 EmbeddedSubscriptExpression(&'a EmbeddedSubscriptExpressionChildren<'a, T, V>),
153 AwaitableCreationExpression(&'a AwaitableCreationExpressionChildren<'a, T, V>),
154 XHPChildrenDeclaration(&'a XHPChildrenDeclarationChildren<'a, T, V>),
155 XHPChildrenParenthesizedList(&'a XHPChildrenParenthesizedListChildren<'a, T, V>),
156 XHPCategoryDeclaration(&'a XHPCategoryDeclarationChildren<'a, T, V>),
157 XHPEnumType(&'a XHPEnumTypeChildren<'a, T, V>),
158 XHPLateinit(&'a XHPLateinitChildren<'a, T, V>),
159 XHPRequired(&'a XHPRequiredChildren<'a, T, V>),
160 XHPClassAttributeDeclaration(&'a XHPClassAttributeDeclarationChildren<'a, T, V>),
161 XHPClassAttribute(&'a XHPClassAttributeChildren<'a, T, V>),
162 XHPSimpleClassAttribute(&'a XHPSimpleClassAttributeChildren<'a, T, V>),
163 XHPSimpleAttribute(&'a XHPSimpleAttributeChildren<'a, T, V>),
164 XHPSpreadAttribute(&'a XHPSpreadAttributeChildren<'a, T, V>),
165 XHPOpen(&'a XHPOpenChildren<'a, T, V>),
166 XHPExpression(&'a XHPExpressionChildren<'a, T, V>),
167 XHPClose(&'a XHPCloseChildren<'a, T, V>),
168 TypeConstant(&'a TypeConstantChildren<'a, T, V>),
169 VectorTypeSpecifier(&'a VectorTypeSpecifierChildren<'a, T, V>),
170 KeysetTypeSpecifier(&'a KeysetTypeSpecifierChildren<'a, T, V>),
171 TupleTypeExplicitSpecifier(&'a TupleTypeExplicitSpecifierChildren<'a, T, V>),
172 VarrayTypeSpecifier(&'a VarrayTypeSpecifierChildren<'a, T, V>),
173 FunctionCtxTypeSpecifier(&'a FunctionCtxTypeSpecifierChildren<'a, T, V>),
174 TypeParameter(&'a TypeParameterChildren<'a, T, V>),
175 TypeConstraint(&'a TypeConstraintChildren<'a, T, V>),
176 ContextConstraint(&'a ContextConstraintChildren<'a, T, V>),
177 DarrayTypeSpecifier(&'a DarrayTypeSpecifierChildren<'a, T, V>),
178 DictionaryTypeSpecifier(&'a DictionaryTypeSpecifierChildren<'a, T, V>),
179 ClosureTypeSpecifier(&'a ClosureTypeSpecifierChildren<'a, T, V>),
180 ClosureParameterTypeSpecifier(&'a ClosureParameterTypeSpecifierChildren<'a, T, V>),
181 ClassnameTypeSpecifier(&'a ClassnameTypeSpecifierChildren<'a, T, V>),
182 FieldSpecifier(&'a FieldSpecifierChildren<'a, T, V>),
183 FieldInitializer(&'a FieldInitializerChildren<'a, T, V>),
184 ShapeTypeSpecifier(&'a ShapeTypeSpecifierChildren<'a, T, V>),
185 ShapeExpression(&'a ShapeExpressionChildren<'a, T, V>),
186 TupleExpression(&'a TupleExpressionChildren<'a, T, V>),
187 GenericTypeSpecifier(&'a GenericTypeSpecifierChildren<'a, T, V>),
188 NullableTypeSpecifier(&'a NullableTypeSpecifierChildren<'a, T, V>),
189 LikeTypeSpecifier(&'a LikeTypeSpecifierChildren<'a, T, V>),
190 SoftTypeSpecifier(&'a SoftTypeSpecifierChildren<'a, T, V>),
191 AttributizedSpecifier(&'a AttributizedSpecifierChildren<'a, T, V>),
192 ReifiedTypeArgument(&'a ReifiedTypeArgumentChildren<'a, T, V>),
193 TypeArguments(&'a TypeArgumentsChildren<'a, T, V>),
194 TypeParameters(&'a TypeParametersChildren<'a, T, V>),
195 TupleTypeSpecifier(&'a TupleTypeSpecifierChildren<'a, T, V>),
196 UnionTypeSpecifier(&'a UnionTypeSpecifierChildren<'a, T, V>),
197 IntersectionTypeSpecifier(&'a IntersectionTypeSpecifierChildren<'a, T, V>),
198 ErrorSyntax(&'a ErrorSyntaxChildren<'a, T, V>),
199 ListItem(&'a ListItemChildren<'a, T, V>),
200 EnumClassLabelExpression(&'a EnumClassLabelExpressionChildren<'a, T, V>),
203 #[derive(Debug, Clone)]
204 pub struct EndOfFileChildren<'a, T, V> {
205 pub token: Syntax<'a, T, V>,
208 #[derive(Debug, Clone)]
209 pub struct ScriptChildren<'a, T, V> {
210 pub declarations: Syntax<'a, T, V>,
213 #[derive(Debug, Clone)]
214 pub struct QualifiedNameChildren<'a, T, V> {
215 pub parts: Syntax<'a, T, V>,
218 #[derive(Debug, Clone)]
219 pub struct SimpleTypeSpecifierChildren<'a, T, V> {
220 pub specifier: Syntax<'a, T, V>,
223 #[derive(Debug, Clone)]
224 pub struct LiteralExpressionChildren<'a, T, V> {
225 pub expression: Syntax<'a, T, V>,
228 #[derive(Debug, Clone)]
229 pub struct PrefixedStringExpressionChildren<'a, T, V> {
230 pub name: Syntax<'a, T, V>,
231 pub str: Syntax<'a, T, V>,
234 #[derive(Debug, Clone)]
235 pub struct PrefixedCodeExpressionChildren<'a, T, V> {
236 pub prefix: Syntax<'a, T, V>,
237 pub left_backtick: Syntax<'a, T, V>,
238 pub expression: Syntax<'a, T, V>,
239 pub right_backtick: Syntax<'a, T, V>,
242 #[derive(Debug, Clone)]
243 pub struct VariableExpressionChildren<'a, T, V> {
244 pub expression: Syntax<'a, T, V>,
247 #[derive(Debug, Clone)]
248 pub struct PipeVariableExpressionChildren<'a, T, V> {
249 pub expression: Syntax<'a, T, V>,
252 #[derive(Debug, Clone)]
253 pub struct FileAttributeSpecificationChildren<'a, T, V> {
254 pub left_double_angle: Syntax<'a, T, V>,
255 pub keyword: Syntax<'a, T, V>,
256 pub colon: Syntax<'a, T, V>,
257 pub attributes: Syntax<'a, T, V>,
258 pub right_double_angle: Syntax<'a, T, V>,
261 #[derive(Debug, Clone)]
262 pub struct EnumDeclarationChildren<'a, T, V> {
263 pub attribute_spec: Syntax<'a, T, V>,
264 pub keyword: Syntax<'a, T, V>,
265 pub name: Syntax<'a, T, V>,
266 pub colon: Syntax<'a, T, V>,
267 pub base: Syntax<'a, T, V>,
268 pub type_: Syntax<'a, T, V>,
269 pub left_brace: Syntax<'a, T, V>,
270 pub use_clauses: Syntax<'a, T, V>,
271 pub enumerators: Syntax<'a, T, V>,
272 pub right_brace: Syntax<'a, T, V>,
275 #[derive(Debug, Clone)]
276 pub struct EnumUseChildren<'a, T, V> {
277 pub keyword: Syntax<'a, T, V>,
278 pub names: Syntax<'a, T, V>,
279 pub semicolon: Syntax<'a, T, V>,
282 #[derive(Debug, Clone)]
283 pub struct EnumeratorChildren<'a, T, V> {
284 pub name: Syntax<'a, T, V>,
285 pub equal: Syntax<'a, T, V>,
286 pub value: Syntax<'a, T, V>,
287 pub semicolon: Syntax<'a, T, V>,
290 #[derive(Debug, Clone)]
291 pub struct EnumClassDeclarationChildren<'a, T, V> {
292 pub attribute_spec: Syntax<'a, T, V>,
293 pub modifiers: Syntax<'a, T, V>,
294 pub enum_keyword: Syntax<'a, T, V>,
295 pub class_keyword: Syntax<'a, T, V>,
296 pub name: Syntax<'a, T, V>,
297 pub colon: Syntax<'a, T, V>,
298 pub base: Syntax<'a, T, V>,
299 pub extends: Syntax<'a, T, V>,
300 pub extends_list: Syntax<'a, T, V>,
301 pub left_brace: Syntax<'a, T, V>,
302 pub elements: Syntax<'a, T, V>,
303 pub right_brace: Syntax<'a, T, V>,
306 #[derive(Debug, Clone)]
307 pub struct EnumClassEnumeratorChildren<'a, T, V> {
308 pub modifiers: Syntax<'a, T, V>,
309 pub type_: Syntax<'a, T, V>,
310 pub name: Syntax<'a, T, V>,
311 pub initializer: Syntax<'a, T, V>,
312 pub semicolon: Syntax<'a, T, V>,
315 #[derive(Debug, Clone)]
316 pub struct RecordDeclarationChildren<'a, T, V> {
317 pub attribute_spec: Syntax<'a, T, V>,
318 pub modifier: Syntax<'a, T, V>,
319 pub keyword: Syntax<'a, T, V>,
320 pub name: Syntax<'a, T, V>,
321 pub extends_keyword: Syntax<'a, T, V>,
322 pub extends_opt: Syntax<'a, T, V>,
323 pub left_brace: Syntax<'a, T, V>,
324 pub fields: Syntax<'a, T, V>,
325 pub right_brace: Syntax<'a, T, V>,
328 #[derive(Debug, Clone)]
329 pub struct RecordFieldChildren<'a, T, V> {
330 pub type_: Syntax<'a, T, V>,
331 pub name: Syntax<'a, T, V>,
332 pub init: Syntax<'a, T, V>,
333 pub semi: Syntax<'a, T, V>,
336 #[derive(Debug, Clone)]
337 pub struct AliasDeclarationChildren<'a, T, V> {
338 pub attribute_spec: Syntax<'a, T, V>,
339 pub keyword: Syntax<'a, T, V>,
340 pub name: Syntax<'a, T, V>,
341 pub generic_parameter: Syntax<'a, T, V>,
342 pub constraint: Syntax<'a, T, V>,
343 pub equal: Syntax<'a, T, V>,
344 pub type_: Syntax<'a, T, V>,
345 pub semicolon: Syntax<'a, T, V>,
348 #[derive(Debug, Clone)]
349 pub struct ContextAliasDeclarationChildren<'a, T, V> {
350 pub attribute_spec: Syntax<'a, T, V>,
351 pub keyword: Syntax<'a, T, V>,
352 pub name: Syntax<'a, T, V>,
353 pub generic_parameter: Syntax<'a, T, V>,
354 pub as_constraint: Syntax<'a, T, V>,
355 pub equal: Syntax<'a, T, V>,
356 pub context: Syntax<'a, T, V>,
357 pub semicolon: Syntax<'a, T, V>,
360 #[derive(Debug, Clone)]
361 pub struct PropertyDeclarationChildren<'a, T, V> {
362 pub attribute_spec: Syntax<'a, T, V>,
363 pub modifiers: Syntax<'a, T, V>,
364 pub type_: Syntax<'a, T, V>,
365 pub declarators: Syntax<'a, T, V>,
366 pub semicolon: Syntax<'a, T, V>,
369 #[derive(Debug, Clone)]
370 pub struct PropertyDeclaratorChildren<'a, T, V> {
371 pub name: Syntax<'a, T, V>,
372 pub initializer: Syntax<'a, T, V>,
375 #[derive(Debug, Clone)]
376 pub struct NamespaceDeclarationChildren<'a, T, V> {
377 pub header: Syntax<'a, T, V>,
378 pub body: Syntax<'a, T, V>,
381 #[derive(Debug, Clone)]
382 pub struct NamespaceDeclarationHeaderChildren<'a, T, V> {
383 pub keyword: Syntax<'a, T, V>,
384 pub name: Syntax<'a, T, V>,
387 #[derive(Debug, Clone)]
388 pub struct NamespaceBodyChildren<'a, T, V> {
389 pub left_brace: Syntax<'a, T, V>,
390 pub declarations: Syntax<'a, T, V>,
391 pub right_brace: Syntax<'a, T, V>,
394 #[derive(Debug, Clone)]
395 pub struct NamespaceEmptyBodyChildren<'a, T, V> {
396 pub semicolon: Syntax<'a, T, V>,
399 #[derive(Debug, Clone)]
400 pub struct NamespaceUseDeclarationChildren<'a, T, V> {
401 pub keyword: Syntax<'a, T, V>,
402 pub kind: Syntax<'a, T, V>,
403 pub clauses: Syntax<'a, T, V>,
404 pub semicolon: Syntax<'a, T, V>,
407 #[derive(Debug, Clone)]
408 pub struct NamespaceGroupUseDeclarationChildren<'a, T, V> {
409 pub keyword: Syntax<'a, T, V>,
410 pub kind: Syntax<'a, T, V>,
411 pub prefix: Syntax<'a, T, V>,
412 pub left_brace: Syntax<'a, T, V>,
413 pub clauses: Syntax<'a, T, V>,
414 pub right_brace: Syntax<'a, T, V>,
415 pub semicolon: Syntax<'a, T, V>,
418 #[derive(Debug, Clone)]
419 pub struct NamespaceUseClauseChildren<'a, T, V> {
420 pub clause_kind: Syntax<'a, T, V>,
421 pub name: Syntax<'a, T, V>,
422 pub as_: Syntax<'a, T, V>,
423 pub alias: Syntax<'a, T, V>,
426 #[derive(Debug, Clone)]
427 pub struct FunctionDeclarationChildren<'a, T, V> {
428 pub attribute_spec: Syntax<'a, T, V>,
429 pub declaration_header: Syntax<'a, T, V>,
430 pub body: Syntax<'a, T, V>,
433 #[derive(Debug, Clone)]
434 pub struct FunctionDeclarationHeaderChildren<'a, T, V> {
435 pub modifiers: Syntax<'a, T, V>,
436 pub keyword: Syntax<'a, T, V>,
437 pub name: Syntax<'a, T, V>,
438 pub type_parameter_list: Syntax<'a, T, V>,
439 pub left_paren: Syntax<'a, T, V>,
440 pub parameter_list: Syntax<'a, T, V>,
441 pub right_paren: Syntax<'a, T, V>,
442 pub contexts: Syntax<'a, T, V>,
443 pub colon: Syntax<'a, T, V>,
444 pub readonly_return: Syntax<'a, T, V>,
445 pub type_: Syntax<'a, T, V>,
446 pub where_clause: Syntax<'a, T, V>,
449 #[derive(Debug, Clone)]
450 pub struct ContextsChildren<'a, T, V> {
451 pub left_bracket: Syntax<'a, T, V>,
452 pub types: Syntax<'a, T, V>,
453 pub right_bracket: Syntax<'a, T, V>,
456 #[derive(Debug, Clone)]
457 pub struct WhereClauseChildren<'a, T, V> {
458 pub keyword: Syntax<'a, T, V>,
459 pub constraints: Syntax<'a, T, V>,
462 #[derive(Debug, Clone)]
463 pub struct WhereConstraintChildren<'a, T, V> {
464 pub left_type: Syntax<'a, T, V>,
465 pub operator: Syntax<'a, T, V>,
466 pub right_type: Syntax<'a, T, V>,
469 #[derive(Debug, Clone)]
470 pub struct MethodishDeclarationChildren<'a, T, V> {
471 pub attribute: Syntax<'a, T, V>,
472 pub function_decl_header: Syntax<'a, T, V>,
473 pub function_body: Syntax<'a, T, V>,
474 pub semicolon: Syntax<'a, T, V>,
477 #[derive(Debug, Clone)]
478 pub struct MethodishTraitResolutionChildren<'a, T, V> {
479 pub attribute: Syntax<'a, T, V>,
480 pub function_decl_header: Syntax<'a, T, V>,
481 pub equal: Syntax<'a, T, V>,
482 pub name: Syntax<'a, T, V>,
483 pub semicolon: Syntax<'a, T, V>,
486 #[derive(Debug, Clone)]
487 pub struct ClassishDeclarationChildren<'a, T, V> {
488 pub attribute: Syntax<'a, T, V>,
489 pub modifiers: Syntax<'a, T, V>,
490 pub xhp: Syntax<'a, T, V>,
491 pub keyword: Syntax<'a, T, V>,
492 pub name: Syntax<'a, T, V>,
493 pub type_parameters: Syntax<'a, T, V>,
494 pub extends_keyword: Syntax<'a, T, V>,
495 pub extends_list: Syntax<'a, T, V>,
496 pub implements_keyword: Syntax<'a, T, V>,
497 pub implements_list: Syntax<'a, T, V>,
498 pub where_clause: Syntax<'a, T, V>,
499 pub body: Syntax<'a, T, V>,
502 #[derive(Debug, Clone)]
503 pub struct ClassishBodyChildren<'a, T, V> {
504 pub left_brace: Syntax<'a, T, V>,
505 pub elements: Syntax<'a, T, V>,
506 pub right_brace: Syntax<'a, T, V>,
509 #[derive(Debug, Clone)]
510 pub struct TraitUsePrecedenceItemChildren<'a, T, V> {
511 pub name: Syntax<'a, T, V>,
512 pub keyword: Syntax<'a, T, V>,
513 pub removed_names: Syntax<'a, T, V>,
516 #[derive(Debug, Clone)]
517 pub struct TraitUseAliasItemChildren<'a, T, V> {
518 pub aliasing_name: Syntax<'a, T, V>,
519 pub keyword: Syntax<'a, T, V>,
520 pub modifiers: Syntax<'a, T, V>,
521 pub aliased_name: Syntax<'a, T, V>,
524 #[derive(Debug, Clone)]
525 pub struct TraitUseConflictResolutionChildren<'a, T, V> {
526 pub keyword: Syntax<'a, T, V>,
527 pub names: Syntax<'a, T, V>,
528 pub left_brace: Syntax<'a, T, V>,
529 pub clauses: Syntax<'a, T, V>,
530 pub right_brace: Syntax<'a, T, V>,
533 #[derive(Debug, Clone)]
534 pub struct TraitUseChildren<'a, T, V> {
535 pub keyword: Syntax<'a, T, V>,
536 pub names: Syntax<'a, T, V>,
537 pub semicolon: Syntax<'a, T, V>,
540 #[derive(Debug, Clone)]
541 pub struct RequireClauseChildren<'a, T, V> {
542 pub keyword: Syntax<'a, T, V>,
543 pub kind: Syntax<'a, T, V>,
544 pub name: Syntax<'a, T, V>,
545 pub semicolon: Syntax<'a, T, V>,
548 #[derive(Debug, Clone)]
549 pub struct ConstDeclarationChildren<'a, T, V> {
550 pub modifiers: Syntax<'a, T, V>,
551 pub keyword: Syntax<'a, T, V>,
552 pub type_specifier: Syntax<'a, T, V>,
553 pub declarators: Syntax<'a, T, V>,
554 pub semicolon: Syntax<'a, T, V>,
557 #[derive(Debug, Clone)]
558 pub struct ConstantDeclaratorChildren<'a, T, V> {
559 pub name: Syntax<'a, T, V>,
560 pub initializer: Syntax<'a, T, V>,
563 #[derive(Debug, Clone)]
564 pub struct TypeConstDeclarationChildren<'a, T, V> {
565 pub attribute_spec: Syntax<'a, T, V>,
566 pub modifiers: Syntax<'a, T, V>,
567 pub keyword: Syntax<'a, T, V>,
568 pub type_keyword: Syntax<'a, T, V>,
569 pub name: Syntax<'a, T, V>,
570 pub type_parameters: Syntax<'a, T, V>,
571 pub type_constraint: Syntax<'a, T, V>,
572 pub equal: Syntax<'a, T, V>,
573 pub type_specifier: Syntax<'a, T, V>,
574 pub semicolon: Syntax<'a, T, V>,
577 #[derive(Debug, Clone)]
578 pub struct ContextConstDeclarationChildren<'a, T, V> {
579 pub modifiers: Syntax<'a, T, V>,
580 pub const_keyword: Syntax<'a, T, V>,
581 pub ctx_keyword: Syntax<'a, T, V>,
582 pub name: Syntax<'a, T, V>,
583 pub type_parameters: Syntax<'a, T, V>,
584 pub constraint: Syntax<'a, T, V>,
585 pub equal: Syntax<'a, T, V>,
586 pub ctx_list: Syntax<'a, T, V>,
587 pub semicolon: Syntax<'a, T, V>,
590 #[derive(Debug, Clone)]
591 pub struct DecoratedExpressionChildren<'a, T, V> {
592 pub decorator: Syntax<'a, T, V>,
593 pub expression: Syntax<'a, T, V>,
596 #[derive(Debug, Clone)]
597 pub struct ParameterDeclarationChildren<'a, T, V> {
598 pub attribute: Syntax<'a, T, V>,
599 pub visibility: Syntax<'a, T, V>,
600 pub call_convention: Syntax<'a, T, V>,
601 pub readonly: Syntax<'a, T, V>,
602 pub type_: Syntax<'a, T, V>,
603 pub name: Syntax<'a, T, V>,
604 pub default_value: Syntax<'a, T, V>,
607 #[derive(Debug, Clone)]
608 pub struct VariadicParameterChildren<'a, T, V> {
609 pub call_convention: Syntax<'a, T, V>,
610 pub type_: Syntax<'a, T, V>,
611 pub ellipsis: Syntax<'a, T, V>,
614 #[derive(Debug, Clone)]
615 pub struct OldAttributeSpecificationChildren<'a, T, V> {
616 pub left_double_angle: Syntax<'a, T, V>,
617 pub attributes: Syntax<'a, T, V>,
618 pub right_double_angle: Syntax<'a, T, V>,
621 #[derive(Debug, Clone)]
622 pub struct AttributeSpecificationChildren<'a, T, V> {
623 pub attributes: Syntax<'a, T, V>,
626 #[derive(Debug, Clone)]
627 pub struct AttributeChildren<'a, T, V> {
628 pub at: Syntax<'a, T, V>,
629 pub attribute_name: Syntax<'a, T, V>,
632 #[derive(Debug, Clone)]
633 pub struct InclusionExpressionChildren<'a, T, V> {
634 pub require: Syntax<'a, T, V>,
635 pub filename: Syntax<'a, T, V>,
638 #[derive(Debug, Clone)]
639 pub struct InclusionDirectiveChildren<'a, T, V> {
640 pub expression: Syntax<'a, T, V>,
641 pub semicolon: Syntax<'a, T, V>,
644 #[derive(Debug, Clone)]
645 pub struct CompoundStatementChildren<'a, T, V> {
646 pub left_brace: Syntax<'a, T, V>,
647 pub statements: Syntax<'a, T, V>,
648 pub right_brace: Syntax<'a, T, V>,
651 #[derive(Debug, Clone)]
652 pub struct ExpressionStatementChildren<'a, T, V> {
653 pub expression: Syntax<'a, T, V>,
654 pub semicolon: Syntax<'a, T, V>,
657 #[derive(Debug, Clone)]
658 pub struct MarkupSectionChildren<'a, T, V> {
659 pub hashbang: Syntax<'a, T, V>,
660 pub suffix: Syntax<'a, T, V>,
663 #[derive(Debug, Clone)]
664 pub struct MarkupSuffixChildren<'a, T, V> {
665 pub less_than_question: Syntax<'a, T, V>,
666 pub name: Syntax<'a, T, V>,
669 #[derive(Debug, Clone)]
670 pub struct UnsetStatementChildren<'a, T, V> {
671 pub keyword: Syntax<'a, T, V>,
672 pub left_paren: Syntax<'a, T, V>,
673 pub variables: Syntax<'a, T, V>,
674 pub right_paren: Syntax<'a, T, V>,
675 pub semicolon: Syntax<'a, T, V>,
678 #[derive(Debug, Clone)]
679 pub struct UsingStatementBlockScopedChildren<'a, T, V> {
680 pub await_keyword: Syntax<'a, T, V>,
681 pub using_keyword: Syntax<'a, T, V>,
682 pub left_paren: Syntax<'a, T, V>,
683 pub expressions: Syntax<'a, T, V>,
684 pub right_paren: Syntax<'a, T, V>,
685 pub body: Syntax<'a, T, V>,
688 #[derive(Debug, Clone)]
689 pub struct UsingStatementFunctionScopedChildren<'a, T, V> {
690 pub await_keyword: Syntax<'a, T, V>,
691 pub using_keyword: Syntax<'a, T, V>,
692 pub expression: Syntax<'a, T, V>,
693 pub semicolon: Syntax<'a, T, V>,
696 #[derive(Debug, Clone)]
697 pub struct WhileStatementChildren<'a, T, V> {
698 pub keyword: Syntax<'a, T, V>,
699 pub left_paren: Syntax<'a, T, V>,
700 pub condition: Syntax<'a, T, V>,
701 pub right_paren: Syntax<'a, T, V>,
702 pub body: Syntax<'a, T, V>,
705 #[derive(Debug, Clone)]
706 pub struct IfStatementChildren<'a, T, V> {
707 pub keyword: Syntax<'a, T, V>,
708 pub left_paren: Syntax<'a, T, V>,
709 pub condition: Syntax<'a, T, V>,
710 pub right_paren: Syntax<'a, T, V>,
711 pub statement: Syntax<'a, T, V>,
712 pub elseif_clauses: Syntax<'a, T, V>,
713 pub else_clause: Syntax<'a, T, V>,
716 #[derive(Debug, Clone)]
717 pub struct ElseifClauseChildren<'a, T, V> {
718 pub keyword: Syntax<'a, T, V>,
719 pub left_paren: Syntax<'a, T, V>,
720 pub condition: Syntax<'a, T, V>,
721 pub right_paren: Syntax<'a, T, V>,
722 pub statement: Syntax<'a, T, V>,
725 #[derive(Debug, Clone)]
726 pub struct ElseClauseChildren<'a, T, V> {
727 pub keyword: Syntax<'a, T, V>,
728 pub statement: Syntax<'a, T, V>,
731 #[derive(Debug, Clone)]
732 pub struct TryStatementChildren<'a, T, V> {
733 pub keyword: Syntax<'a, T, V>,
734 pub compound_statement: Syntax<'a, T, V>,
735 pub catch_clauses: Syntax<'a, T, V>,
736 pub finally_clause: Syntax<'a, T, V>,
739 #[derive(Debug, Clone)]
740 pub struct CatchClauseChildren<'a, T, V> {
741 pub keyword: Syntax<'a, T, V>,
742 pub left_paren: Syntax<'a, T, V>,
743 pub type_: Syntax<'a, T, V>,
744 pub variable: Syntax<'a, T, V>,
745 pub right_paren: Syntax<'a, T, V>,
746 pub body: Syntax<'a, T, V>,
749 #[derive(Debug, Clone)]
750 pub struct FinallyClauseChildren<'a, T, V> {
751 pub keyword: Syntax<'a, T, V>,
752 pub body: Syntax<'a, T, V>,
755 #[derive(Debug, Clone)]
756 pub struct DoStatementChildren<'a, T, V> {
757 pub keyword: Syntax<'a, T, V>,
758 pub body: Syntax<'a, T, V>,
759 pub while_keyword: Syntax<'a, T, V>,
760 pub left_paren: Syntax<'a, T, V>,
761 pub condition: Syntax<'a, T, V>,
762 pub right_paren: Syntax<'a, T, V>,
763 pub semicolon: Syntax<'a, T, V>,
766 #[derive(Debug, Clone)]
767 pub struct ForStatementChildren<'a, T, V> {
768 pub keyword: Syntax<'a, T, V>,
769 pub left_paren: Syntax<'a, T, V>,
770 pub initializer: Syntax<'a, T, V>,
771 pub first_semicolon: Syntax<'a, T, V>,
772 pub control: Syntax<'a, T, V>,
773 pub second_semicolon: Syntax<'a, T, V>,
774 pub end_of_loop: Syntax<'a, T, V>,
775 pub right_paren: Syntax<'a, T, V>,
776 pub body: Syntax<'a, T, V>,
779 #[derive(Debug, Clone)]
780 pub struct ForeachStatementChildren<'a, T, V> {
781 pub keyword: Syntax<'a, T, V>,
782 pub left_paren: Syntax<'a, T, V>,
783 pub collection: Syntax<'a, T, V>,
784 pub await_keyword: Syntax<'a, T, V>,
785 pub as_: Syntax<'a, T, V>,
786 pub key: Syntax<'a, T, V>,
787 pub arrow: Syntax<'a, T, V>,
788 pub value: Syntax<'a, T, V>,
789 pub right_paren: Syntax<'a, T, V>,
790 pub body: Syntax<'a, T, V>,
793 #[derive(Debug, Clone)]
794 pub struct SwitchStatementChildren<'a, T, V> {
795 pub keyword: Syntax<'a, T, V>,
796 pub left_paren: Syntax<'a, T, V>,
797 pub expression: Syntax<'a, T, V>,
798 pub right_paren: Syntax<'a, T, V>,
799 pub left_brace: Syntax<'a, T, V>,
800 pub sections: Syntax<'a, T, V>,
801 pub right_brace: Syntax<'a, T, V>,
804 #[derive(Debug, Clone)]
805 pub struct SwitchSectionChildren<'a, T, V> {
806 pub labels: Syntax<'a, T, V>,
807 pub statements: Syntax<'a, T, V>,
808 pub fallthrough: Syntax<'a, T, V>,
811 #[derive(Debug, Clone)]
812 pub struct SwitchFallthroughChildren<'a, T, V> {
813 pub keyword: Syntax<'a, T, V>,
814 pub semicolon: Syntax<'a, T, V>,
817 #[derive(Debug, Clone)]
818 pub struct CaseLabelChildren<'a, T, V> {
819 pub keyword: Syntax<'a, T, V>,
820 pub expression: Syntax<'a, T, V>,
821 pub colon: Syntax<'a, T, V>,
824 #[derive(Debug, Clone)]
825 pub struct DefaultLabelChildren<'a, T, V> {
826 pub keyword: Syntax<'a, T, V>,
827 pub colon: Syntax<'a, T, V>,
830 #[derive(Debug, Clone)]
831 pub struct ReturnStatementChildren<'a, T, V> {
832 pub keyword: Syntax<'a, T, V>,
833 pub expression: Syntax<'a, T, V>,
834 pub semicolon: Syntax<'a, T, V>,
837 #[derive(Debug, Clone)]
838 pub struct YieldBreakStatementChildren<'a, T, V> {
839 pub keyword: Syntax<'a, T, V>,
840 pub break_: Syntax<'a, T, V>,
841 pub semicolon: Syntax<'a, T, V>,
844 #[derive(Debug, Clone)]
845 pub struct ThrowStatementChildren<'a, T, V> {
846 pub keyword: Syntax<'a, T, V>,
847 pub expression: Syntax<'a, T, V>,
848 pub semicolon: Syntax<'a, T, V>,
851 #[derive(Debug, Clone)]
852 pub struct BreakStatementChildren<'a, T, V> {
853 pub keyword: Syntax<'a, T, V>,
854 pub semicolon: Syntax<'a, T, V>,
857 #[derive(Debug, Clone)]
858 pub struct ContinueStatementChildren<'a, T, V> {
859 pub keyword: Syntax<'a, T, V>,
860 pub semicolon: Syntax<'a, T, V>,
863 #[derive(Debug, Clone)]
864 pub struct EchoStatementChildren<'a, T, V> {
865 pub keyword: Syntax<'a, T, V>,
866 pub expressions: Syntax<'a, T, V>,
867 pub semicolon: Syntax<'a, T, V>,
870 #[derive(Debug, Clone)]
871 pub struct ConcurrentStatementChildren<'a, T, V> {
872 pub keyword: Syntax<'a, T, V>,
873 pub statement: Syntax<'a, T, V>,
876 #[derive(Debug, Clone)]
877 pub struct SimpleInitializerChildren<'a, T, V> {
878 pub equal: Syntax<'a, T, V>,
879 pub value: Syntax<'a, T, V>,
882 #[derive(Debug, Clone)]
883 pub struct AnonymousClassChildren<'a, T, V> {
884 pub class_keyword: Syntax<'a, T, V>,
885 pub left_paren: Syntax<'a, T, V>,
886 pub argument_list: Syntax<'a, T, V>,
887 pub right_paren: Syntax<'a, T, V>,
888 pub extends_keyword: Syntax<'a, T, V>,
889 pub extends_list: Syntax<'a, T, V>,
890 pub implements_keyword: Syntax<'a, T, V>,
891 pub implements_list: Syntax<'a, T, V>,
892 pub body: Syntax<'a, T, V>,
895 #[derive(Debug, Clone)]
896 pub struct AnonymousFunctionChildren<'a, T, V> {
897 pub attribute_spec: Syntax<'a, T, V>,
898 pub async_keyword: Syntax<'a, T, V>,
899 pub function_keyword: Syntax<'a, T, V>,
900 pub left_paren: Syntax<'a, T, V>,
901 pub parameters: Syntax<'a, T, V>,
902 pub right_paren: Syntax<'a, T, V>,
903 pub ctx_list: Syntax<'a, T, V>,
904 pub colon: Syntax<'a, T, V>,
905 pub readonly_return: Syntax<'a, T, V>,
906 pub type_: Syntax<'a, T, V>,
907 pub use_: Syntax<'a, T, V>,
908 pub body: Syntax<'a, T, V>,
911 #[derive(Debug, Clone)]
912 pub struct AnonymousFunctionUseClauseChildren<'a, T, V> {
913 pub keyword: Syntax<'a, T, V>,
914 pub left_paren: Syntax<'a, T, V>,
915 pub variables: Syntax<'a, T, V>,
916 pub right_paren: Syntax<'a, T, V>,
919 #[derive(Debug, Clone)]
920 pub struct LambdaExpressionChildren<'a, T, V> {
921 pub attribute_spec: Syntax<'a, T, V>,
922 pub async_: Syntax<'a, T, V>,
923 pub signature: Syntax<'a, T, V>,
924 pub arrow: Syntax<'a, T, V>,
925 pub body: Syntax<'a, T, V>,
928 #[derive(Debug, Clone)]
929 pub struct LambdaSignatureChildren<'a, T, V> {
930 pub left_paren: Syntax<'a, T, V>,
931 pub parameters: Syntax<'a, T, V>,
932 pub right_paren: Syntax<'a, T, V>,
933 pub contexts: Syntax<'a, T, V>,
934 pub colon: Syntax<'a, T, V>,
935 pub readonly_return: Syntax<'a, T, V>,
936 pub type_: Syntax<'a, T, V>,
939 #[derive(Debug, Clone)]
940 pub struct CastExpressionChildren<'a, T, V> {
941 pub left_paren: Syntax<'a, T, V>,
942 pub type_: Syntax<'a, T, V>,
943 pub right_paren: Syntax<'a, T, V>,
944 pub operand: Syntax<'a, T, V>,
947 #[derive(Debug, Clone)]
948 pub struct ScopeResolutionExpressionChildren<'a, T, V> {
949 pub qualifier: Syntax<'a, T, V>,
950 pub operator: Syntax<'a, T, V>,
951 pub name: Syntax<'a, T, V>,
954 #[derive(Debug, Clone)]
955 pub struct MemberSelectionExpressionChildren<'a, T, V> {
956 pub object: Syntax<'a, T, V>,
957 pub operator: Syntax<'a, T, V>,
958 pub name: Syntax<'a, T, V>,
961 #[derive(Debug, Clone)]
962 pub struct SafeMemberSelectionExpressionChildren<'a, T, V> {
963 pub object: Syntax<'a, T, V>,
964 pub operator: Syntax<'a, T, V>,
965 pub name: Syntax<'a, T, V>,
968 #[derive(Debug, Clone)]
969 pub struct EmbeddedMemberSelectionExpressionChildren<'a, T, V> {
970 pub object: Syntax<'a, T, V>,
971 pub operator: Syntax<'a, T, V>,
972 pub name: Syntax<'a, T, V>,
975 #[derive(Debug, Clone)]
976 pub struct YieldExpressionChildren<'a, T, V> {
977 pub keyword: Syntax<'a, T, V>,
978 pub operand: Syntax<'a, T, V>,
981 #[derive(Debug, Clone)]
982 pub struct PrefixUnaryExpressionChildren<'a, T, V> {
983 pub operator: Syntax<'a, T, V>,
984 pub operand: Syntax<'a, T, V>,
987 #[derive(Debug, Clone)]
988 pub struct PostfixUnaryExpressionChildren<'a, T, V> {
989 pub operand: Syntax<'a, T, V>,
990 pub operator: Syntax<'a, T, V>,
993 #[derive(Debug, Clone)]
994 pub struct BinaryExpressionChildren<'a, T, V> {
995 pub left_operand: Syntax<'a, T, V>,
996 pub operator: Syntax<'a, T, V>,
997 pub right_operand: Syntax<'a, T, V>,
1000 #[derive(Debug, Clone)]
1001 pub struct IsExpressionChildren<'a, T, V> {
1002 pub left_operand: Syntax<'a, T, V>,
1003 pub operator: Syntax<'a, T, V>,
1004 pub right_operand: Syntax<'a, T, V>,
1007 #[derive(Debug, Clone)]
1008 pub struct AsExpressionChildren<'a, T, V> {
1009 pub left_operand: Syntax<'a, T, V>,
1010 pub operator: Syntax<'a, T, V>,
1011 pub right_operand: Syntax<'a, T, V>,
1014 #[derive(Debug, Clone)]
1015 pub struct NullableAsExpressionChildren<'a, T, V> {
1016 pub left_operand: Syntax<'a, T, V>,
1017 pub operator: Syntax<'a, T, V>,
1018 pub right_operand: Syntax<'a, T, V>,
1021 #[derive(Debug, Clone)]
1022 pub struct UpcastExpressionChildren<'a, T, V> {
1023 pub left_operand: Syntax<'a, T, V>,
1024 pub operator: Syntax<'a, T, V>,
1025 pub right_operand: Syntax<'a, T, V>,
1028 #[derive(Debug, Clone)]
1029 pub struct ConditionalExpressionChildren<'a, T, V> {
1030 pub test: Syntax<'a, T, V>,
1031 pub question: Syntax<'a, T, V>,
1032 pub consequence: Syntax<'a, T, V>,
1033 pub colon: Syntax<'a, T, V>,
1034 pub alternative: Syntax<'a, T, V>,
1037 #[derive(Debug, Clone)]
1038 pub struct EvalExpressionChildren<'a, T, V> {
1039 pub keyword: Syntax<'a, T, V>,
1040 pub left_paren: Syntax<'a, T, V>,
1041 pub argument: Syntax<'a, T, V>,
1042 pub right_paren: Syntax<'a, T, V>,
1045 #[derive(Debug, Clone)]
1046 pub struct IssetExpressionChildren<'a, T, V> {
1047 pub keyword: Syntax<'a, T, V>,
1048 pub left_paren: Syntax<'a, T, V>,
1049 pub argument_list: Syntax<'a, T, V>,
1050 pub right_paren: Syntax<'a, T, V>,
1053 #[derive(Debug, Clone)]
1054 pub struct FunctionCallExpressionChildren<'a, T, V> {
1055 pub receiver: Syntax<'a, T, V>,
1056 pub type_args: Syntax<'a, T, V>,
1057 pub enum_class_label: Syntax<'a, T, V>,
1058 pub left_paren: Syntax<'a, T, V>,
1059 pub argument_list: Syntax<'a, T, V>,
1060 pub right_paren: Syntax<'a, T, V>,
1063 #[derive(Debug, Clone)]
1064 pub struct FunctionPointerExpressionChildren<'a, T, V> {
1065 pub receiver: Syntax<'a, T, V>,
1066 pub type_args: Syntax<'a, T, V>,
1069 #[derive(Debug, Clone)]
1070 pub struct ParenthesizedExpressionChildren<'a, T, V> {
1071 pub left_paren: Syntax<'a, T, V>,
1072 pub expression: Syntax<'a, T, V>,
1073 pub right_paren: Syntax<'a, T, V>,
1076 #[derive(Debug, Clone)]
1077 pub struct BracedExpressionChildren<'a, T, V> {
1078 pub left_brace: Syntax<'a, T, V>,
1079 pub expression: Syntax<'a, T, V>,
1080 pub right_brace: Syntax<'a, T, V>,
1083 #[derive(Debug, Clone)]
1084 pub struct ETSpliceExpressionChildren<'a, T, V> {
1085 pub dollar: Syntax<'a, T, V>,
1086 pub left_brace: Syntax<'a, T, V>,
1087 pub expression: Syntax<'a, T, V>,
1088 pub right_brace: Syntax<'a, T, V>,
1091 #[derive(Debug, Clone)]
1092 pub struct EmbeddedBracedExpressionChildren<'a, T, V> {
1093 pub left_brace: Syntax<'a, T, V>,
1094 pub expression: Syntax<'a, T, V>,
1095 pub right_brace: Syntax<'a, T, V>,
1098 #[derive(Debug, Clone)]
1099 pub struct ListExpressionChildren<'a, T, V> {
1100 pub keyword: Syntax<'a, T, V>,
1101 pub left_paren: Syntax<'a, T, V>,
1102 pub members: Syntax<'a, T, V>,
1103 pub right_paren: Syntax<'a, T, V>,
1106 #[derive(Debug, Clone)]
1107 pub struct CollectionLiteralExpressionChildren<'a, T, V> {
1108 pub name: Syntax<'a, T, V>,
1109 pub left_brace: Syntax<'a, T, V>,
1110 pub initializers: Syntax<'a, T, V>,
1111 pub right_brace: Syntax<'a, T, V>,
1114 #[derive(Debug, Clone)]
1115 pub struct ObjectCreationExpressionChildren<'a, T, V> {
1116 pub new_keyword: Syntax<'a, T, V>,
1117 pub object: Syntax<'a, T, V>,
1120 #[derive(Debug, Clone)]
1121 pub struct ConstructorCallChildren<'a, T, V> {
1122 pub type_: Syntax<'a, T, V>,
1123 pub left_paren: Syntax<'a, T, V>,
1124 pub argument_list: Syntax<'a, T, V>,
1125 pub right_paren: Syntax<'a, T, V>,
1128 #[derive(Debug, Clone)]
1129 pub struct RecordCreationExpressionChildren<'a, T, V> {
1130 pub type_: Syntax<'a, T, V>,
1131 pub left_bracket: Syntax<'a, T, V>,
1132 pub members: Syntax<'a, T, V>,
1133 pub right_bracket: Syntax<'a, T, V>,
1136 #[derive(Debug, Clone)]
1137 pub struct DarrayIntrinsicExpressionChildren<'a, T, V> {
1138 pub keyword: Syntax<'a, T, V>,
1139 pub explicit_type: Syntax<'a, T, V>,
1140 pub left_bracket: Syntax<'a, T, V>,
1141 pub members: Syntax<'a, T, V>,
1142 pub right_bracket: Syntax<'a, T, V>,
1145 #[derive(Debug, Clone)]
1146 pub struct DictionaryIntrinsicExpressionChildren<'a, T, V> {
1147 pub keyword: Syntax<'a, T, V>,
1148 pub explicit_type: Syntax<'a, T, V>,
1149 pub left_bracket: Syntax<'a, T, V>,
1150 pub members: Syntax<'a, T, V>,
1151 pub right_bracket: Syntax<'a, T, V>,
1154 #[derive(Debug, Clone)]
1155 pub struct KeysetIntrinsicExpressionChildren<'a, T, V> {
1156 pub keyword: Syntax<'a, T, V>,
1157 pub explicit_type: Syntax<'a, T, V>,
1158 pub left_bracket: Syntax<'a, T, V>,
1159 pub members: Syntax<'a, T, V>,
1160 pub right_bracket: Syntax<'a, T, V>,
1163 #[derive(Debug, Clone)]
1164 pub struct VarrayIntrinsicExpressionChildren<'a, T, V> {
1165 pub keyword: Syntax<'a, T, V>,
1166 pub explicit_type: Syntax<'a, T, V>,
1167 pub left_bracket: Syntax<'a, T, V>,
1168 pub members: Syntax<'a, T, V>,
1169 pub right_bracket: Syntax<'a, T, V>,
1172 #[derive(Debug, Clone)]
1173 pub struct VectorIntrinsicExpressionChildren<'a, T, V> {
1174 pub keyword: Syntax<'a, T, V>,
1175 pub explicit_type: Syntax<'a, T, V>,
1176 pub left_bracket: Syntax<'a, T, V>,
1177 pub members: Syntax<'a, T, V>,
1178 pub right_bracket: Syntax<'a, T, V>,
1181 #[derive(Debug, Clone)]
1182 pub struct ElementInitializerChildren<'a, T, V> {
1183 pub key: Syntax<'a, T, V>,
1184 pub arrow: Syntax<'a, T, V>,
1185 pub value: Syntax<'a, T, V>,
1188 #[derive(Debug, Clone)]
1189 pub struct SubscriptExpressionChildren<'a, T, V> {
1190 pub receiver: Syntax<'a, T, V>,
1191 pub left_bracket: Syntax<'a, T, V>,
1192 pub index: Syntax<'a, T, V>,
1193 pub right_bracket: Syntax<'a, T, V>,
1196 #[derive(Debug, Clone)]
1197 pub struct EmbeddedSubscriptExpressionChildren<'a, T, V> {
1198 pub receiver: Syntax<'a, T, V>,
1199 pub left_bracket: Syntax<'a, T, V>,
1200 pub index: Syntax<'a, T, V>,
1201 pub right_bracket: Syntax<'a, T, V>,
1204 #[derive(Debug, Clone)]
1205 pub struct AwaitableCreationExpressionChildren<'a, T, V> {
1206 pub attribute_spec: Syntax<'a, T, V>,
1207 pub async_: Syntax<'a, T, V>,
1208 pub compound_statement: Syntax<'a, T, V>,
1211 #[derive(Debug, Clone)]
1212 pub struct XHPChildrenDeclarationChildren<'a, T, V> {
1213 pub keyword: Syntax<'a, T, V>,
1214 pub expression: Syntax<'a, T, V>,
1215 pub semicolon: Syntax<'a, T, V>,
1218 #[derive(Debug, Clone)]
1219 pub struct XHPChildrenParenthesizedListChildren<'a, T, V> {
1220 pub left_paren: Syntax<'a, T, V>,
1221 pub xhp_children: Syntax<'a, T, V>,
1222 pub right_paren: Syntax<'a, T, V>,
1225 #[derive(Debug, Clone)]
1226 pub struct XHPCategoryDeclarationChildren<'a, T, V> {
1227 pub keyword: Syntax<'a, T, V>,
1228 pub categories: Syntax<'a, T, V>,
1229 pub semicolon: Syntax<'a, T, V>,
1232 #[derive(Debug, Clone)]
1233 pub struct XHPEnumTypeChildren<'a, T, V> {
1234 pub keyword: Syntax<'a, T, V>,
1235 pub left_brace: Syntax<'a, T, V>,
1236 pub values: Syntax<'a, T, V>,
1237 pub right_brace: Syntax<'a, T, V>,
1240 #[derive(Debug, Clone)]
1241 pub struct XHPLateinitChildren<'a, T, V> {
1242 pub at: Syntax<'a, T, V>,
1243 pub keyword: Syntax<'a, T, V>,
1246 #[derive(Debug, Clone)]
1247 pub struct XHPRequiredChildren<'a, T, V> {
1248 pub at: Syntax<'a, T, V>,
1249 pub keyword: Syntax<'a, T, V>,
1252 #[derive(Debug, Clone)]
1253 pub struct XHPClassAttributeDeclarationChildren<'a, T, V> {
1254 pub keyword: Syntax<'a, T, V>,
1255 pub attributes: Syntax<'a, T, V>,
1256 pub semicolon: Syntax<'a, T, V>,
1259 #[derive(Debug, Clone)]
1260 pub struct XHPClassAttributeChildren<'a, T, V> {
1261 pub type_: Syntax<'a, T, V>,
1262 pub name: Syntax<'a, T, V>,
1263 pub initializer: Syntax<'a, T, V>,
1264 pub required: Syntax<'a, T, V>,
1267 #[derive(Debug, Clone)]
1268 pub struct XHPSimpleClassAttributeChildren<'a, T, V> {
1269 pub type_: Syntax<'a, T, V>,
1272 #[derive(Debug, Clone)]
1273 pub struct XHPSimpleAttributeChildren<'a, T, V> {
1274 pub name: Syntax<'a, T, V>,
1275 pub equal: Syntax<'a, T, V>,
1276 pub expression: Syntax<'a, T, V>,
1279 #[derive(Debug, Clone)]
1280 pub struct XHPSpreadAttributeChildren<'a, T, V> {
1281 pub left_brace: Syntax<'a, T, V>,
1282 pub spread_operator: Syntax<'a, T, V>,
1283 pub expression: Syntax<'a, T, V>,
1284 pub right_brace: Syntax<'a, T, V>,
1287 #[derive(Debug, Clone)]
1288 pub struct XHPOpenChildren<'a, T, V> {
1289 pub left_angle: Syntax<'a, T, V>,
1290 pub name: Syntax<'a, T, V>,
1291 pub attributes: Syntax<'a, T, V>,
1292 pub right_angle: Syntax<'a, T, V>,
1295 #[derive(Debug, Clone)]
1296 pub struct XHPExpressionChildren<'a, T, V> {
1297 pub open: Syntax<'a, T, V>,
1298 pub body: Syntax<'a, T, V>,
1299 pub close: Syntax<'a, T, V>,
1302 #[derive(Debug, Clone)]
1303 pub struct XHPCloseChildren<'a, T, V> {
1304 pub left_angle: Syntax<'a, T, V>,
1305 pub name: Syntax<'a, T, V>,
1306 pub right_angle: Syntax<'a, T, V>,
1309 #[derive(Debug, Clone)]
1310 pub struct TypeConstantChildren<'a, T, V> {
1311 pub left_type: Syntax<'a, T, V>,
1312 pub separator: Syntax<'a, T, V>,
1313 pub right_type: Syntax<'a, T, V>,
1316 #[derive(Debug, Clone)]
1317 pub struct VectorTypeSpecifierChildren<'a, T, V> {
1318 pub keyword: Syntax<'a, T, V>,
1319 pub left_angle: Syntax<'a, T, V>,
1320 pub type_: Syntax<'a, T, V>,
1321 pub trailing_comma: Syntax<'a, T, V>,
1322 pub right_angle: Syntax<'a, T, V>,
1325 #[derive(Debug, Clone)]
1326 pub struct KeysetTypeSpecifierChildren<'a, T, V> {
1327 pub keyword: Syntax<'a, T, V>,
1328 pub left_angle: Syntax<'a, T, V>,
1329 pub type_: Syntax<'a, T, V>,
1330 pub trailing_comma: Syntax<'a, T, V>,
1331 pub right_angle: Syntax<'a, T, V>,
1334 #[derive(Debug, Clone)]
1335 pub struct TupleTypeExplicitSpecifierChildren<'a, T, V> {
1336 pub keyword: Syntax<'a, T, V>,
1337 pub left_angle: Syntax<'a, T, V>,
1338 pub types: Syntax<'a, T, V>,
1339 pub right_angle: Syntax<'a, T, V>,
1342 #[derive(Debug, Clone)]
1343 pub struct VarrayTypeSpecifierChildren<'a, T, V> {
1344 pub keyword: Syntax<'a, T, V>,
1345 pub left_angle: Syntax<'a, T, V>,
1346 pub type_: Syntax<'a, T, V>,
1347 pub trailing_comma: Syntax<'a, T, V>,
1348 pub right_angle: Syntax<'a, T, V>,
1351 #[derive(Debug, Clone)]
1352 pub struct FunctionCtxTypeSpecifierChildren<'a, T, V> {
1353 pub keyword: Syntax<'a, T, V>,
1354 pub variable: Syntax<'a, T, V>,
1357 #[derive(Debug, Clone)]
1358 pub struct TypeParameterChildren<'a, T, V> {
1359 pub attribute_spec: Syntax<'a, T, V>,
1360 pub reified: Syntax<'a, T, V>,
1361 pub variance: Syntax<'a, T, V>,
1362 pub name: Syntax<'a, T, V>,
1363 pub param_params: Syntax<'a, T, V>,
1364 pub constraints: Syntax<'a, T, V>,
1367 #[derive(Debug, Clone)]
1368 pub struct TypeConstraintChildren<'a, T, V> {
1369 pub keyword: Syntax<'a, T, V>,
1370 pub type_: Syntax<'a, T, V>,
1373 #[derive(Debug, Clone)]
1374 pub struct ContextConstraintChildren<'a, T, V> {
1375 pub keyword: Syntax<'a, T, V>,
1376 pub ctx_list: Syntax<'a, T, V>,
1379 #[derive(Debug, Clone)]
1380 pub struct DarrayTypeSpecifierChildren<'a, T, V> {
1381 pub keyword: Syntax<'a, T, V>,
1382 pub left_angle: Syntax<'a, T, V>,
1383 pub key: Syntax<'a, T, V>,
1384 pub comma: Syntax<'a, T, V>,
1385 pub value: Syntax<'a, T, V>,
1386 pub trailing_comma: Syntax<'a, T, V>,
1387 pub right_angle: Syntax<'a, T, V>,
1390 #[derive(Debug, Clone)]
1391 pub struct DictionaryTypeSpecifierChildren<'a, T, V> {
1392 pub keyword: Syntax<'a, T, V>,
1393 pub left_angle: Syntax<'a, T, V>,
1394 pub members: Syntax<'a, T, V>,
1395 pub right_angle: Syntax<'a, T, V>,
1398 #[derive(Debug, Clone)]
1399 pub struct ClosureTypeSpecifierChildren<'a, T, V> {
1400 pub outer_left_paren: Syntax<'a, T, V>,
1401 pub readonly_keyword: Syntax<'a, T, V>,
1402 pub function_keyword: Syntax<'a, T, V>,
1403 pub inner_left_paren: Syntax<'a, T, V>,
1404 pub parameter_list: Syntax<'a, T, V>,
1405 pub inner_right_paren: Syntax<'a, T, V>,
1406 pub contexts: Syntax<'a, T, V>,
1407 pub colon: Syntax<'a, T, V>,
1408 pub readonly_return: Syntax<'a, T, V>,
1409 pub return_type: Syntax<'a, T, V>,
1410 pub outer_right_paren: Syntax<'a, T, V>,
1413 #[derive(Debug, Clone)]
1414 pub struct ClosureParameterTypeSpecifierChildren<'a, T, V> {
1415 pub call_convention: Syntax<'a, T, V>,
1416 pub readonly: Syntax<'a, T, V>,
1417 pub type_: Syntax<'a, T, V>,
1420 #[derive(Debug, Clone)]
1421 pub struct ClassnameTypeSpecifierChildren<'a, T, V> {
1422 pub keyword: Syntax<'a, T, V>,
1423 pub left_angle: Syntax<'a, T, V>,
1424 pub type_: Syntax<'a, T, V>,
1425 pub trailing_comma: Syntax<'a, T, V>,
1426 pub right_angle: Syntax<'a, T, V>,
1429 #[derive(Debug, Clone)]
1430 pub struct FieldSpecifierChildren<'a, T, V> {
1431 pub question: Syntax<'a, T, V>,
1432 pub name: Syntax<'a, T, V>,
1433 pub arrow: Syntax<'a, T, V>,
1434 pub type_: Syntax<'a, T, V>,
1437 #[derive(Debug, Clone)]
1438 pub struct FieldInitializerChildren<'a, T, V> {
1439 pub name: Syntax<'a, T, V>,
1440 pub arrow: Syntax<'a, T, V>,
1441 pub value: Syntax<'a, T, V>,
1444 #[derive(Debug, Clone)]
1445 pub struct ShapeTypeSpecifierChildren<'a, T, V> {
1446 pub keyword: Syntax<'a, T, V>,
1447 pub left_paren: Syntax<'a, T, V>,
1448 pub fields: Syntax<'a, T, V>,
1449 pub ellipsis: Syntax<'a, T, V>,
1450 pub right_paren: Syntax<'a, T, V>,
1453 #[derive(Debug, Clone)]
1454 pub struct ShapeExpressionChildren<'a, T, V> {
1455 pub keyword: Syntax<'a, T, V>,
1456 pub left_paren: Syntax<'a, T, V>,
1457 pub fields: Syntax<'a, T, V>,
1458 pub right_paren: Syntax<'a, T, V>,
1461 #[derive(Debug, Clone)]
1462 pub struct TupleExpressionChildren<'a, T, V> {
1463 pub keyword: Syntax<'a, T, V>,
1464 pub left_paren: Syntax<'a, T, V>,
1465 pub items: Syntax<'a, T, V>,
1466 pub right_paren: Syntax<'a, T, V>,
1469 #[derive(Debug, Clone)]
1470 pub struct GenericTypeSpecifierChildren<'a, T, V> {
1471 pub class_type: Syntax<'a, T, V>,
1472 pub argument_list: Syntax<'a, T, V>,
1475 #[derive(Debug, Clone)]
1476 pub struct NullableTypeSpecifierChildren<'a, T, V> {
1477 pub question: Syntax<'a, T, V>,
1478 pub type_: Syntax<'a, T, V>,
1481 #[derive(Debug, Clone)]
1482 pub struct LikeTypeSpecifierChildren<'a, T, V> {
1483 pub tilde: Syntax<'a, T, V>,
1484 pub type_: Syntax<'a, T, V>,
1487 #[derive(Debug, Clone)]
1488 pub struct SoftTypeSpecifierChildren<'a, T, V> {
1489 pub at: Syntax<'a, T, V>,
1490 pub type_: Syntax<'a, T, V>,
1493 #[derive(Debug, Clone)]
1494 pub struct AttributizedSpecifierChildren<'a, T, V> {
1495 pub attribute_spec: Syntax<'a, T, V>,
1496 pub type_: Syntax<'a, T, V>,
1499 #[derive(Debug, Clone)]
1500 pub struct ReifiedTypeArgumentChildren<'a, T, V> {
1501 pub reified: Syntax<'a, T, V>,
1502 pub type_: Syntax<'a, T, V>,
1505 #[derive(Debug, Clone)]
1506 pub struct TypeArgumentsChildren<'a, T, V> {
1507 pub left_angle: Syntax<'a, T, V>,
1508 pub types: Syntax<'a, T, V>,
1509 pub right_angle: Syntax<'a, T, V>,
1512 #[derive(Debug, Clone)]
1513 pub struct TypeParametersChildren<'a, T, V> {
1514 pub left_angle: Syntax<'a, T, V>,
1515 pub parameters: Syntax<'a, T, V>,
1516 pub right_angle: Syntax<'a, T, V>,
1519 #[derive(Debug, Clone)]
1520 pub struct TupleTypeSpecifierChildren<'a, T, V> {
1521 pub left_paren: Syntax<'a, T, V>,
1522 pub types: Syntax<'a, T, V>,
1523 pub right_paren: Syntax<'a, T, V>,
1526 #[derive(Debug, Clone)]
1527 pub struct UnionTypeSpecifierChildren<'a, T, V> {
1528 pub left_paren: Syntax<'a, T, V>,
1529 pub types: Syntax<'a, T, V>,
1530 pub right_paren: Syntax<'a, T, V>,
1533 #[derive(Debug, Clone)]
1534 pub struct IntersectionTypeSpecifierChildren<'a, T, V> {
1535 pub left_paren: Syntax<'a, T, V>,
1536 pub types: Syntax<'a, T, V>,
1537 pub right_paren: Syntax<'a, T, V>,
1540 #[derive(Debug, Clone)]
1541 pub struct ErrorSyntaxChildren<'a, T, V> {
1542 pub error: Syntax<'a, T, V>,
1545 #[derive(Debug, Clone)]
1546 pub struct ListItemChildren<'a, T, V> {
1547 pub item: Syntax<'a, T, V>,
1548 pub separator: Syntax<'a, T, V>,
1551 #[derive(Debug, Clone)]
1552 pub struct EnumClassLabelExpressionChildren<'a, T, V> {
1553 pub qualifier: Syntax<'a, T, V>,
1554 pub hash: Syntax<'a, T, V>,
1555 pub expression: Syntax<'a, T, V>,
1560 impl<'a, T, V> SyntaxVariant<'a, T, V> {
1561 pub fn iter_children(&'a self) -> SyntaxChildrenIterator<'a, T, V> {
1562 SyntaxChildrenIterator {