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
20 use ocamlrep_derive::{FromOcamlRep, ToOcamlRep};
22 use crate::token_kind::TokenKind;
24 #[derive(Debug, Copy, Clone, FromOcamlRep, ToOcamlRep, PartialEq)]
34 PrefixedStringExpression,
35 PrefixedCodeExpression,
37 PipeVariableExpression,
38 FileAttributeSpecification,
49 NamespaceDeclarationHeader,
52 NamespaceUseDeclaration,
53 NamespaceGroupUseDeclaration,
56 FunctionDeclarationHeader,
61 MethodishTraitResolution,
64 TraitUsePrecedenceItem,
66 TraitUseConflictResolution,
75 OldAttributeSpecification,
76 AttributeSpecification,
85 UsingStatementBlockScoped,
86 UsingStatementFunctionScoped,
111 AnonymousFunctionUseClause,
115 ScopeResolutionExpression,
116 MemberSelectionExpression,
117 SafeMemberSelectionExpression,
118 EmbeddedMemberSelectionExpression,
120 PrefixUnaryExpression,
121 PostfixUnaryExpression,
125 NullableAsExpression,
126 ConditionalExpression,
130 FunctionCallExpression,
131 FunctionPointerExpression,
132 ParenthesizedExpression,
134 EmbeddedBracedExpression,
136 CollectionLiteralExpression,
137 ObjectCreationExpression,
139 RecordCreationExpression,
140 DarrayIntrinsicExpression,
141 DictionaryIntrinsicExpression,
142 KeysetIntrinsicExpression,
143 VarrayIntrinsicExpression,
144 VectorIntrinsicExpression,
147 EmbeddedSubscriptExpression,
148 AwaitableCreationExpression,
149 XHPChildrenDeclaration,
150 XHPChildrenParenthesizedList,
151 XHPCategoryDeclaration,
155 XHPClassAttributeDeclaration,
157 XHPSimpleClassAttribute,
166 TupleTypeExplicitSpecifier,
171 DictionaryTypeSpecifier,
172 ClosureTypeSpecifier,
173 ClosureParameterTypeSpecifier,
174 ClassnameTypeSpecifier,
180 GenericTypeSpecifier,
181 NullableTypeSpecifier,
184 AttributizedSpecifier,
190 IntersectionTypeSpecifier,
198 pub fn to_string(&self) -> &str {
200 SyntaxKind::SyntaxList => "list",
201 SyntaxKind::Missing => "missing",
202 SyntaxKind::Token(_) => "token",
203 SyntaxKind::EndOfFile => "end_of_file",
204 SyntaxKind::Script => "script",
205 SyntaxKind::QualifiedName => "qualified_name",
206 SyntaxKind::SimpleTypeSpecifier => "simple_type_specifier",
207 SyntaxKind::LiteralExpression => "literal",
208 SyntaxKind::PrefixedStringExpression => "prefixed_string",
209 SyntaxKind::PrefixedCodeExpression => "prefixed_code",
210 SyntaxKind::VariableExpression => "variable",
211 SyntaxKind::PipeVariableExpression => "pipe_variable",
212 SyntaxKind::FileAttributeSpecification => "file_attribute_specification",
213 SyntaxKind::EnumDeclaration => "enum_declaration",
214 SyntaxKind::Enumerator => "enumerator",
215 SyntaxKind::EnumClassDeclaration => "enum_class_declaration",
216 SyntaxKind::EnumClassEnumerator => "enum_class_enumerator",
217 SyntaxKind::RecordDeclaration => "record_declaration",
218 SyntaxKind::RecordField => "record_field",
219 SyntaxKind::AliasDeclaration => "alias_declaration",
220 SyntaxKind::PropertyDeclaration => "property_declaration",
221 SyntaxKind::PropertyDeclarator => "property_declarator",
222 SyntaxKind::NamespaceDeclaration => "namespace_declaration",
223 SyntaxKind::NamespaceDeclarationHeader => "namespace_declaration_header",
224 SyntaxKind::NamespaceBody => "namespace_body",
225 SyntaxKind::NamespaceEmptyBody => "namespace_empty_body",
226 SyntaxKind::NamespaceUseDeclaration => "namespace_use_declaration",
227 SyntaxKind::NamespaceGroupUseDeclaration => "namespace_group_use_declaration",
228 SyntaxKind::NamespaceUseClause => "namespace_use_clause",
229 SyntaxKind::FunctionDeclaration => "function_declaration",
230 SyntaxKind::FunctionDeclarationHeader => "function_declaration_header",
231 SyntaxKind::Capability => "capability",
232 SyntaxKind::WhereClause => "where_clause",
233 SyntaxKind::WhereConstraint => "where_constraint",
234 SyntaxKind::MethodishDeclaration => "methodish_declaration",
235 SyntaxKind::MethodishTraitResolution => "methodish_trait_resolution",
236 SyntaxKind::ClassishDeclaration => "classish_declaration",
237 SyntaxKind::ClassishBody => "classish_body",
238 SyntaxKind::TraitUsePrecedenceItem => "trait_use_precedence_item",
239 SyntaxKind::TraitUseAliasItem => "trait_use_alias_item",
240 SyntaxKind::TraitUseConflictResolution => "trait_use_conflict_resolution",
241 SyntaxKind::TraitUse => "trait_use",
242 SyntaxKind::RequireClause => "require_clause",
243 SyntaxKind::ConstDeclaration => "const_declaration",
244 SyntaxKind::ConstantDeclarator => "constant_declarator",
245 SyntaxKind::TypeConstDeclaration => "type_const_declaration",
246 SyntaxKind::DecoratedExpression => "decorated_expression",
247 SyntaxKind::ParameterDeclaration => "parameter_declaration",
248 SyntaxKind::VariadicParameter => "variadic_parameter",
249 SyntaxKind::OldAttributeSpecification => "old_attribute_specification",
250 SyntaxKind::AttributeSpecification => "attribute_specification",
251 SyntaxKind::Attribute => "attribute",
252 SyntaxKind::InclusionExpression => "inclusion_expression",
253 SyntaxKind::InclusionDirective => "inclusion_directive",
254 SyntaxKind::CompoundStatement => "compound_statement",
255 SyntaxKind::ExpressionStatement => "expression_statement",
256 SyntaxKind::MarkupSection => "markup_section",
257 SyntaxKind::MarkupSuffix => "markup_suffix",
258 SyntaxKind::UnsetStatement => "unset_statement",
259 SyntaxKind::UsingStatementBlockScoped => "using_statement_block_scoped",
260 SyntaxKind::UsingStatementFunctionScoped => "using_statement_function_scoped",
261 SyntaxKind::WhileStatement => "while_statement",
262 SyntaxKind::IfStatement => "if_statement",
263 SyntaxKind::ElseifClause => "elseif_clause",
264 SyntaxKind::ElseClause => "else_clause",
265 SyntaxKind::TryStatement => "try_statement",
266 SyntaxKind::CatchClause => "catch_clause",
267 SyntaxKind::FinallyClause => "finally_clause",
268 SyntaxKind::DoStatement => "do_statement",
269 SyntaxKind::ForStatement => "for_statement",
270 SyntaxKind::ForeachStatement => "foreach_statement",
271 SyntaxKind::SwitchStatement => "switch_statement",
272 SyntaxKind::SwitchSection => "switch_section",
273 SyntaxKind::SwitchFallthrough => "switch_fallthrough",
274 SyntaxKind::CaseLabel => "case_label",
275 SyntaxKind::DefaultLabel => "default_label",
276 SyntaxKind::ReturnStatement => "return_statement",
277 SyntaxKind::ThrowStatement => "throw_statement",
278 SyntaxKind::BreakStatement => "break_statement",
279 SyntaxKind::ContinueStatement => "continue_statement",
280 SyntaxKind::EchoStatement => "echo_statement",
281 SyntaxKind::ConcurrentStatement => "concurrent_statement",
282 SyntaxKind::SimpleInitializer => "simple_initializer",
283 SyntaxKind::AnonymousClass => "anonymous_class",
284 SyntaxKind::AnonymousFunction => "anonymous_function",
285 SyntaxKind::AnonymousFunctionUseClause => "anonymous_function_use_clause",
286 SyntaxKind::LambdaExpression => "lambda_expression",
287 SyntaxKind::LambdaSignature => "lambda_signature",
288 SyntaxKind::CastExpression => "cast_expression",
289 SyntaxKind::ScopeResolutionExpression => "scope_resolution_expression",
290 SyntaxKind::MemberSelectionExpression => "member_selection_expression",
291 SyntaxKind::SafeMemberSelectionExpression => "safe_member_selection_expression",
292 SyntaxKind::EmbeddedMemberSelectionExpression => "embedded_member_selection_expression",
293 SyntaxKind::YieldExpression => "yield_expression",
294 SyntaxKind::PrefixUnaryExpression => "prefix_unary_expression",
295 SyntaxKind::PostfixUnaryExpression => "postfix_unary_expression",
296 SyntaxKind::BinaryExpression => "binary_expression",
297 SyntaxKind::IsExpression => "is_expression",
298 SyntaxKind::AsExpression => "as_expression",
299 SyntaxKind::NullableAsExpression => "nullable_as_expression",
300 SyntaxKind::ConditionalExpression => "conditional_expression",
301 SyntaxKind::EvalExpression => "eval_expression",
302 SyntaxKind::DefineExpression => "define_expression",
303 SyntaxKind::IssetExpression => "isset_expression",
304 SyntaxKind::FunctionCallExpression => "function_call_expression",
305 SyntaxKind::FunctionPointerExpression => "function_pointer_expression",
306 SyntaxKind::ParenthesizedExpression => "parenthesized_expression",
307 SyntaxKind::BracedExpression => "braced_expression",
308 SyntaxKind::EmbeddedBracedExpression => "embedded_braced_expression",
309 SyntaxKind::ListExpression => "list_expression",
310 SyntaxKind::CollectionLiteralExpression => "collection_literal_expression",
311 SyntaxKind::ObjectCreationExpression => "object_creation_expression",
312 SyntaxKind::ConstructorCall => "constructor_call",
313 SyntaxKind::RecordCreationExpression => "record_creation_expression",
314 SyntaxKind::DarrayIntrinsicExpression => "darray_intrinsic_expression",
315 SyntaxKind::DictionaryIntrinsicExpression => "dictionary_intrinsic_expression",
316 SyntaxKind::KeysetIntrinsicExpression => "keyset_intrinsic_expression",
317 SyntaxKind::VarrayIntrinsicExpression => "varray_intrinsic_expression",
318 SyntaxKind::VectorIntrinsicExpression => "vector_intrinsic_expression",
319 SyntaxKind::ElementInitializer => "element_initializer",
320 SyntaxKind::SubscriptExpression => "subscript_expression",
321 SyntaxKind::EmbeddedSubscriptExpression => "embedded_subscript_expression",
322 SyntaxKind::AwaitableCreationExpression => "awaitable_creation_expression",
323 SyntaxKind::XHPChildrenDeclaration => "xhp_children_declaration",
324 SyntaxKind::XHPChildrenParenthesizedList => "xhp_children_parenthesized_list",
325 SyntaxKind::XHPCategoryDeclaration => "xhp_category_declaration",
326 SyntaxKind::XHPEnumType => "xhp_enum_type",
327 SyntaxKind::XHPLateinit => "xhp_lateinit",
328 SyntaxKind::XHPRequired => "xhp_required",
329 SyntaxKind::XHPClassAttributeDeclaration => "xhp_class_attribute_declaration",
330 SyntaxKind::XHPClassAttribute => "xhp_class_attribute",
331 SyntaxKind::XHPSimpleClassAttribute => "xhp_simple_class_attribute",
332 SyntaxKind::XHPSimpleAttribute => "xhp_simple_attribute",
333 SyntaxKind::XHPSpreadAttribute => "xhp_spread_attribute",
334 SyntaxKind::XHPOpen => "xhp_open",
335 SyntaxKind::XHPExpression => "xhp_expression",
336 SyntaxKind::XHPClose => "xhp_close",
337 SyntaxKind::TypeConstant => "type_constant",
338 SyntaxKind::VectorTypeSpecifier => "vector_type_specifier",
339 SyntaxKind::KeysetTypeSpecifier => "keyset_type_specifier",
340 SyntaxKind::TupleTypeExplicitSpecifier => "tuple_type_explicit_specifier",
341 SyntaxKind::VarrayTypeSpecifier => "varray_type_specifier",
342 SyntaxKind::TypeParameter => "type_parameter",
343 SyntaxKind::TypeConstraint => "type_constraint",
344 SyntaxKind::DarrayTypeSpecifier => "darray_type_specifier",
345 SyntaxKind::DictionaryTypeSpecifier => "dictionary_type_specifier",
346 SyntaxKind::ClosureTypeSpecifier => "closure_type_specifier",
347 SyntaxKind::ClosureParameterTypeSpecifier => "closure_parameter_type_specifier",
348 SyntaxKind::ClassnameTypeSpecifier => "classname_type_specifier",
349 SyntaxKind::FieldSpecifier => "field_specifier",
350 SyntaxKind::FieldInitializer => "field_initializer",
351 SyntaxKind::ShapeTypeSpecifier => "shape_type_specifier",
352 SyntaxKind::ShapeExpression => "shape_expression",
353 SyntaxKind::TupleExpression => "tuple_expression",
354 SyntaxKind::GenericTypeSpecifier => "generic_type_specifier",
355 SyntaxKind::NullableTypeSpecifier => "nullable_type_specifier",
356 SyntaxKind::LikeTypeSpecifier => "like_type_specifier",
357 SyntaxKind::SoftTypeSpecifier => "soft_type_specifier",
358 SyntaxKind::AttributizedSpecifier => "attributized_specifier",
359 SyntaxKind::ReifiedTypeArgument => "reified_type_argument",
360 SyntaxKind::TypeArguments => "type_arguments",
361 SyntaxKind::TypeParameters => "type_parameters",
362 SyntaxKind::TupleTypeSpecifier => "tuple_type_specifier",
363 SyntaxKind::UnionTypeSpecifier => "union_type_specifier",
364 SyntaxKind::IntersectionTypeSpecifier => "intersection_type_specifier",
365 SyntaxKind::ErrorSyntax => "error",
366 SyntaxKind::ListItem => "list_item",
367 SyntaxKind::EnumAtomExpression => "enum_atom",
371 pub fn ocaml_tag(self) -> u8 {
373 SyntaxKind::Missing => 0,
374 SyntaxKind::Token(_) => 0,
375 SyntaxKind::SyntaxList => 1,
376 SyntaxKind::EndOfFile => 2,
377 SyntaxKind::Script => 3,
378 SyntaxKind::QualifiedName => 4,
379 SyntaxKind::SimpleTypeSpecifier => 5,
380 SyntaxKind::LiteralExpression => 6,
381 SyntaxKind::PrefixedStringExpression => 7,
382 SyntaxKind::PrefixedCodeExpression => 8,
383 SyntaxKind::VariableExpression => 9,
384 SyntaxKind::PipeVariableExpression => 10,
385 SyntaxKind::FileAttributeSpecification => 11,
386 SyntaxKind::EnumDeclaration => 12,
387 SyntaxKind::Enumerator => 13,
388 SyntaxKind::EnumClassDeclaration => 14,
389 SyntaxKind::EnumClassEnumerator => 15,
390 SyntaxKind::RecordDeclaration => 16,
391 SyntaxKind::RecordField => 17,
392 SyntaxKind::AliasDeclaration => 18,
393 SyntaxKind::PropertyDeclaration => 19,
394 SyntaxKind::PropertyDeclarator => 20,
395 SyntaxKind::NamespaceDeclaration => 21,
396 SyntaxKind::NamespaceDeclarationHeader => 22,
397 SyntaxKind::NamespaceBody => 23,
398 SyntaxKind::NamespaceEmptyBody => 24,
399 SyntaxKind::NamespaceUseDeclaration => 25,
400 SyntaxKind::NamespaceGroupUseDeclaration => 26,
401 SyntaxKind::NamespaceUseClause => 27,
402 SyntaxKind::FunctionDeclaration => 28,
403 SyntaxKind::FunctionDeclarationHeader => 29,
404 SyntaxKind::Capability => 30,
405 SyntaxKind::WhereClause => 31,
406 SyntaxKind::WhereConstraint => 32,
407 SyntaxKind::MethodishDeclaration => 33,
408 SyntaxKind::MethodishTraitResolution => 34,
409 SyntaxKind::ClassishDeclaration => 35,
410 SyntaxKind::ClassishBody => 36,
411 SyntaxKind::TraitUsePrecedenceItem => 37,
412 SyntaxKind::TraitUseAliasItem => 38,
413 SyntaxKind::TraitUseConflictResolution => 39,
414 SyntaxKind::TraitUse => 40,
415 SyntaxKind::RequireClause => 41,
416 SyntaxKind::ConstDeclaration => 42,
417 SyntaxKind::ConstantDeclarator => 43,
418 SyntaxKind::TypeConstDeclaration => 44,
419 SyntaxKind::DecoratedExpression => 45,
420 SyntaxKind::ParameterDeclaration => 46,
421 SyntaxKind::VariadicParameter => 47,
422 SyntaxKind::OldAttributeSpecification => 48,
423 SyntaxKind::AttributeSpecification => 49,
424 SyntaxKind::Attribute => 50,
425 SyntaxKind::InclusionExpression => 51,
426 SyntaxKind::InclusionDirective => 52,
427 SyntaxKind::CompoundStatement => 53,
428 SyntaxKind::ExpressionStatement => 54,
429 SyntaxKind::MarkupSection => 55,
430 SyntaxKind::MarkupSuffix => 56,
431 SyntaxKind::UnsetStatement => 57,
432 SyntaxKind::UsingStatementBlockScoped => 58,
433 SyntaxKind::UsingStatementFunctionScoped => 59,
434 SyntaxKind::WhileStatement => 60,
435 SyntaxKind::IfStatement => 61,
436 SyntaxKind::ElseifClause => 62,
437 SyntaxKind::ElseClause => 63,
438 SyntaxKind::TryStatement => 64,
439 SyntaxKind::CatchClause => 65,
440 SyntaxKind::FinallyClause => 66,
441 SyntaxKind::DoStatement => 67,
442 SyntaxKind::ForStatement => 68,
443 SyntaxKind::ForeachStatement => 69,
444 SyntaxKind::SwitchStatement => 70,
445 SyntaxKind::SwitchSection => 71,
446 SyntaxKind::SwitchFallthrough => 72,
447 SyntaxKind::CaseLabel => 73,
448 SyntaxKind::DefaultLabel => 74,
449 SyntaxKind::ReturnStatement => 75,
450 SyntaxKind::ThrowStatement => 76,
451 SyntaxKind::BreakStatement => 77,
452 SyntaxKind::ContinueStatement => 78,
453 SyntaxKind::EchoStatement => 79,
454 SyntaxKind::ConcurrentStatement => 80,
455 SyntaxKind::SimpleInitializer => 81,
456 SyntaxKind::AnonymousClass => 82,
457 SyntaxKind::AnonymousFunction => 83,
458 SyntaxKind::AnonymousFunctionUseClause => 84,
459 SyntaxKind::LambdaExpression => 85,
460 SyntaxKind::LambdaSignature => 86,
461 SyntaxKind::CastExpression => 87,
462 SyntaxKind::ScopeResolutionExpression => 88,
463 SyntaxKind::MemberSelectionExpression => 89,
464 SyntaxKind::SafeMemberSelectionExpression => 90,
465 SyntaxKind::EmbeddedMemberSelectionExpression => 91,
466 SyntaxKind::YieldExpression => 92,
467 SyntaxKind::PrefixUnaryExpression => 93,
468 SyntaxKind::PostfixUnaryExpression => 94,
469 SyntaxKind::BinaryExpression => 95,
470 SyntaxKind::IsExpression => 96,
471 SyntaxKind::AsExpression => 97,
472 SyntaxKind::NullableAsExpression => 98,
473 SyntaxKind::ConditionalExpression => 99,
474 SyntaxKind::EvalExpression => 100,
475 SyntaxKind::DefineExpression => 101,
476 SyntaxKind::IssetExpression => 102,
477 SyntaxKind::FunctionCallExpression => 103,
478 SyntaxKind::FunctionPointerExpression => 104,
479 SyntaxKind::ParenthesizedExpression => 105,
480 SyntaxKind::BracedExpression => 106,
481 SyntaxKind::EmbeddedBracedExpression => 107,
482 SyntaxKind::ListExpression => 108,
483 SyntaxKind::CollectionLiteralExpression => 109,
484 SyntaxKind::ObjectCreationExpression => 110,
485 SyntaxKind::ConstructorCall => 111,
486 SyntaxKind::RecordCreationExpression => 112,
487 SyntaxKind::DarrayIntrinsicExpression => 113,
488 SyntaxKind::DictionaryIntrinsicExpression => 114,
489 SyntaxKind::KeysetIntrinsicExpression => 115,
490 SyntaxKind::VarrayIntrinsicExpression => 116,
491 SyntaxKind::VectorIntrinsicExpression => 117,
492 SyntaxKind::ElementInitializer => 118,
493 SyntaxKind::SubscriptExpression => 119,
494 SyntaxKind::EmbeddedSubscriptExpression => 120,
495 SyntaxKind::AwaitableCreationExpression => 121,
496 SyntaxKind::XHPChildrenDeclaration => 122,
497 SyntaxKind::XHPChildrenParenthesizedList => 123,
498 SyntaxKind::XHPCategoryDeclaration => 124,
499 SyntaxKind::XHPEnumType => 125,
500 SyntaxKind::XHPLateinit => 126,
501 SyntaxKind::XHPRequired => 127,
502 SyntaxKind::XHPClassAttributeDeclaration => 128,
503 SyntaxKind::XHPClassAttribute => 129,
504 SyntaxKind::XHPSimpleClassAttribute => 130,
505 SyntaxKind::XHPSimpleAttribute => 131,
506 SyntaxKind::XHPSpreadAttribute => 132,
507 SyntaxKind::XHPOpen => 133,
508 SyntaxKind::XHPExpression => 134,
509 SyntaxKind::XHPClose => 135,
510 SyntaxKind::TypeConstant => 136,
511 SyntaxKind::VectorTypeSpecifier => 137,
512 SyntaxKind::KeysetTypeSpecifier => 138,
513 SyntaxKind::TupleTypeExplicitSpecifier => 139,
514 SyntaxKind::VarrayTypeSpecifier => 140,
515 SyntaxKind::TypeParameter => 141,
516 SyntaxKind::TypeConstraint => 142,
517 SyntaxKind::DarrayTypeSpecifier => 143,
518 SyntaxKind::DictionaryTypeSpecifier => 144,
519 SyntaxKind::ClosureTypeSpecifier => 145,
520 SyntaxKind::ClosureParameterTypeSpecifier => 146,
521 SyntaxKind::ClassnameTypeSpecifier => 147,
522 SyntaxKind::FieldSpecifier => 148,
523 SyntaxKind::FieldInitializer => 149,
524 SyntaxKind::ShapeTypeSpecifier => 150,
525 SyntaxKind::ShapeExpression => 151,
526 SyntaxKind::TupleExpression => 152,
527 SyntaxKind::GenericTypeSpecifier => 153,
528 SyntaxKind::NullableTypeSpecifier => 154,
529 SyntaxKind::LikeTypeSpecifier => 155,
530 SyntaxKind::SoftTypeSpecifier => 156,
531 SyntaxKind::AttributizedSpecifier => 157,
532 SyntaxKind::ReifiedTypeArgument => 158,
533 SyntaxKind::TypeArguments => 159,
534 SyntaxKind::TypeParameters => 160,
535 SyntaxKind::TupleTypeSpecifier => 161,
536 SyntaxKind::UnionTypeSpecifier => 162,
537 SyntaxKind::IntersectionTypeSpecifier => 163,
538 SyntaxKind::ErrorSyntax => 164,
539 SyntaxKind::ListItem => 165,
540 SyntaxKind::EnumAtomExpression => 166,