1#![allow(non_camel_case_types)] #![allow(clippy::too_many_arguments)] #![allow(clippy::large_enum_variant)] use std::cell::Cell;
15use crate::node_child::{NodeChild, NodeLabel, NodeList, NodeMetadata, NodeString, Strictness, INVALID_LABEL};
16use crate::visitor::{Path, TransformResult, Visitor, VisitorMut};
17use crate::NodeId;
18use crate::SemaId;
19
20#[repr(u32)]
26#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
27pub enum NodeKind {
28 Empty,
30 Metadata,
32 _FunctionLike_First,
34 Program,
36 FunctionExpression,
38 ArrowFunctionExpression,
40 FunctionDeclaration,
42 ComponentDeclaration,
44 HookDeclaration,
46 _FunctionLike_Last,
48 _Statement_First,
50 MatchStatement,
52 _LoopStatement_First,
54 WhileStatement,
56 DoWhileStatement,
58 ForInStatement,
60 ForOfStatement,
62 ForStatement,
64 _LoopStatement_Last,
66 DebuggerStatement,
68 EmptyStatement,
70 BlockStatement,
72 StaticBlock,
74 BreakStatement,
76 ContinueStatement,
78 ThrowStatement,
80 ReturnStatement,
82 WithStatement,
84 SwitchStatement,
86 LabeledStatement,
88 ExpressionStatement,
90 TryStatement,
92 IfStatement,
94 _Statement_Last,
96 NullLiteral,
98 BooleanLiteral,
100 StringLiteral,
102 NumericLiteral,
104 RegExpLiteral,
106 BigIntLiteral,
108 ThisExpression,
110 Super,
112 SequenceExpression,
114 ObjectExpression,
116 ArrayExpression,
118 SpreadElement,
120 NewExpression,
122 YieldExpression,
124 AwaitExpression,
126 ImportExpression,
128 _CallExpressionLike_First,
130 CallExpression,
132 OptionalCallExpression,
134 _CallExpressionLike_Last,
136 AssignmentExpression,
138 UnaryExpression,
140 UpdateExpression,
142 _MemberExpressionLike_First,
144 MemberExpression,
146 OptionalMemberExpression,
148 _MemberExpressionLike_Last,
150 LogicalExpression,
152 ConditionalExpression,
154 BinaryExpression,
156 Directive,
158 DirectiveLiteral,
160 Identifier,
162 PrivateName,
164 MetaProperty,
166 SwitchCase,
168 CatchClause,
170 VariableDeclarator,
172 VariableDeclaration,
174 TemplateLiteral,
176 TaggedTemplateExpression,
178 TemplateElement,
180 Property,
182 Decorator,
184 _ClassLike_First,
186 ClassDeclaration,
188 ClassExpression,
190 _ClassLike_Last,
192 ClassBody,
194 ClassProperty,
196 ClassPrivateProperty,
198 MethodDefinition,
200 ImportDeclaration,
202 ImportSpecifier,
204 ImportDefaultSpecifier,
206 ImportNamespaceSpecifier,
208 ImportAttribute,
210 ExportNamedDeclaration,
212 ExportSpecifier,
214 ExportNamespaceSpecifier,
216 ExportDefaultDeclaration,
218 ExportAllDeclaration,
220 _Pattern_First,
222 ObjectPattern,
224 ArrayPattern,
226 RestElement,
228 AssignmentPattern,
230 _Pattern_Last,
232 MatchStatementCase,
234 MatchExpression,
236 MatchExpressionCase,
238 _MatchPattern_First,
240 MatchWildcardPattern,
242 MatchLiteralPattern,
244 MatchUnaryPattern,
246 MatchIdentifierPattern,
248 MatchBindingPattern,
250 MatchObjectPattern,
252 MatchArrayPattern,
254 MatchOrPattern,
256 MatchAsPattern,
258 MatchMemberPattern,
260 MatchInstancePattern,
262 _MatchPattern_Last,
264 MatchObjectPatternProperty,
266 MatchInstanceObjectPattern,
268 MatchRestPattern,
270 _JSX_First,
272 JSXIdentifier,
274 JSXMemberExpression,
276 JSXNamespacedName,
278 JSXEmptyExpression,
280 JSXExpressionContainer,
282 JSXSpreadChild,
284 JSXOpeningElement,
286 JSXClosingElement,
288 JSXAttribute,
290 JSXSpreadAttribute,
292 JSXStringLiteral,
294 JSXText,
296 JSXElement,
298 JSXFragment,
300 JSXOpeningFragment,
302 JSXClosingFragment,
304 _JSX_Last,
306 _Flow_First,
308 ExistsTypeAnnotation,
310 EmptyTypeAnnotation,
312 StringTypeAnnotation,
314 NumberTypeAnnotation,
316 StringLiteralTypeAnnotation,
318 NumberLiteralTypeAnnotation,
320 BigIntLiteralTypeAnnotation,
322 BooleanTypeAnnotation,
324 BooleanLiteralTypeAnnotation,
326 NullLiteralTypeAnnotation,
328 SymbolTypeAnnotation,
330 AnyTypeAnnotation,
332 MixedTypeAnnotation,
334 BigIntTypeAnnotation,
336 VoidTypeAnnotation,
338 NeverTypeAnnotation,
340 UnknownTypeAnnotation,
342 UndefinedTypeAnnotation,
344 FunctionTypeAnnotation,
346 HookTypeAnnotation,
348 FunctionTypeParam,
350 ComponentTypeAnnotation,
352 ComponentTypeParameter,
354 NullableTypeAnnotation,
356 QualifiedTypeIdentifier,
358 TypeofTypeAnnotation,
360 KeyofTypeAnnotation,
362 TypeOperator,
364 QualifiedTypeofIdentifier,
366 TupleTypeAnnotation,
368 TupleTypeSpreadElement,
370 TupleTypeLabeledElement,
372 ArrayTypeAnnotation,
374 InferTypeAnnotation,
376 UnionTypeAnnotation,
378 IntersectionTypeAnnotation,
380 GenericTypeAnnotation,
382 IndexedAccessType,
384 OptionalIndexedAccessType,
386 ConditionalTypeAnnotation,
388 TypePredicate,
390 InterfaceTypeAnnotation,
392 TypeAlias,
394 OpaqueType,
396 InterfaceDeclaration,
398 DeclareTypeAlias,
400 DeclareOpaqueType,
402 DeclareInterface,
404 DeclareClass,
406 DeclareFunction,
408 DeclareHook,
410 DeclareComponent,
412 DeclareVariable,
414 DeclareEnum,
416 DeclareExportDeclaration,
418 DeclareExportAllDeclaration,
420 DeclareModule,
422 DeclareNamespace,
424 DeclareModuleExports,
426 InterfaceExtends,
428 ClassImplements,
430 TypeAnnotation,
432 ObjectTypeAnnotation,
434 ObjectTypeProperty,
436 ObjectTypeSpreadProperty,
438 ObjectTypeInternalSlot,
440 ObjectTypeCallProperty,
442 ObjectTypeIndexer,
444 ObjectTypeMappedTypeProperty,
446 Variance,
448 TypeParameterDeclaration,
450 TypeParameter,
452 TypeParameterInstantiation,
454 TypeCastExpression,
456 AsExpression,
458 AsConstExpression,
460 InferredPredicate,
462 DeclaredPredicate,
464 EnumDeclaration,
466 EnumStringBody,
468 EnumNumberBody,
470 EnumBigIntBody,
472 EnumBooleanBody,
474 EnumSymbolBody,
476 EnumDefaultedMember,
478 EnumStringMember,
480 EnumNumberMember,
482 EnumBigIntMember,
484 EnumBooleanMember,
486 ComponentParameter,
488 RecordDeclaration,
490 RecordDeclarationImplements,
492 RecordDeclarationBody,
494 RecordDeclarationProperty,
496 RecordDeclarationStaticProperty,
498 RecordExpression,
500 RecordExpressionProperties,
502 _Flow_Last,
504 _TS_First,
506 TSTypeAnnotation,
508 TSAnyKeyword,
510 TSNumberKeyword,
512 TSBooleanKeyword,
514 TSStringKeyword,
516 TSSymbolKeyword,
518 TSVoidKeyword,
520 TSUndefinedKeyword,
522 TSUnknownKeyword,
524 TSNeverKeyword,
526 TSBigIntKeyword,
528 TSThisType,
530 TSLiteralType,
532 TSIndexedAccessType,
534 TSArrayType,
536 TSTypeReference,
538 TSQualifiedName,
540 TSFunctionType,
542 TSConstructorType,
544 TSTypePredicate,
546 TSTupleType,
548 TSTypeAssertion,
550 TSAsExpression,
552 TSParameterProperty,
554 TSTypeAliasDeclaration,
556 TSInterfaceDeclaration,
558 TSInterfaceHeritage,
560 TSInterfaceBody,
562 TSEnumDeclaration,
564 TSEnumMember,
566 TSModuleDeclaration,
568 TSModuleBlock,
570 TSModuleMember,
572 TSTypeParameterDeclaration,
574 TSTypeParameter,
576 TSTypeParameterInstantiation,
578 TSUnionType,
580 TSIntersectionType,
582 TSTypeQuery,
584 TSConditionalType,
586 TSTypeLiteral,
588 TSPropertySignature,
590 TSMethodSignature,
592 TSIndexSignature,
594 TSCallSignatureDeclaration,
596 TSModifiers,
598 _TS_Last,
600 _Cover_First,
602 CoverEmptyArgs,
604 CoverTrailingComma,
606 CoverInitializer,
608 CoverRestElement,
610 CoverTypedIdentifier,
612 _Cover_Last,
614 SHBuiltin,
616 ImplicitCheckedCast,
618}
619
620#[derive(Debug, Copy, Clone, PartialEq, Eq)]
622#[allow(non_camel_case_types)]
623pub enum NodeField {
624 alternate,
626 argument,
628 arguments,
630 attributes,
632 base,
634 block,
636 body,
638 bound,
640 call_properties,
642 callee,
644 cases,
646 check_type,
648 children,
650 closing_element,
652 closing_fragment,
654 consequent,
656 constraint,
658 declaration,
660 declarations,
662 decorators,
664 default,
666 default_value,
668 discriminant,
670 element_type,
672 element_types,
674 elements,
676 exported,
678 expr_name,
680 expression,
682 expressions,
684 extends,
686 extends_type,
688 false_type,
690 finalizer,
692 guard,
694 handler,
696 id,
698 implements,
700 impltype,
702 imported,
704 index_type,
706 indexers,
708 init,
710 initializer,
712 internal_slots,
714 key,
716 key_tparam,
718 label,
720 left,
722 literal,
724 local,
726 lower_bound,
728 members,
730 meta,
732 mixins,
734 name,
736 namespace,
738 object,
740 object_type,
742 opening_element,
744 opening_fragment,
746 options,
748 param,
750 parameter,
752 parameter_name,
754 parameters,
756 params,
758 pattern,
760 patterns,
762 predicate,
764 prop_type,
766 properties,
768 property,
770 qualification,
772 quasi,
774 quasis,
776 record_constructor,
778 renders_type,
780 rest,
782 return_type,
784 right,
786 source,
788 source_type,
790 specifiers,
792 super_class,
794 super_type_arguments,
796 supertype,
798 tag,
800 target,
802 target_constructor,
804 test,
806 this,
808 true_type,
810 ts_modifiers,
812 type_annotation,
814 type_arguments,
816 type_name,
818 type_parameter,
820 type_parameters,
822 types,
824 update,
826 upper_bound,
828 value,
830 variance,
832}
833
834#[derive(Debug)]
836#[repr(C)]
837pub struct Empty<'gc> {
838 pub metadata: NodeMetadata<'gc>,
840}
841impl<'gc> Empty<'gc> {
842 pub fn new(
844 metadata: NodeMetadata<'gc>,
845 ) -> Self {
846 Empty {
847 metadata,
848 }
849 }
850}
851
852#[derive(Debug)]
854#[repr(C)]
855pub struct Metadata<'gc> {
856 pub metadata: NodeMetadata<'gc>,
858}
859impl<'gc> Metadata<'gc> {
860 pub fn new(
862 metadata: NodeMetadata<'gc>,
863 ) -> Self {
864 Metadata {
865 metadata,
866 }
867 }
868}
869
870#[derive(Debug)]
872#[repr(C)]
873pub struct Program<'gc> {
874 pub metadata: NodeMetadata<'gc>,
876 pub body: NodeList<'gc>,
878 pub scope: Cell<Option<SemaId>>,
880 pub sem_info: Cell<Option<SemaId>>,
882 pub strictness: Cell<Strictness>,
884 pub is_method_definition: Cell<bool>,
887 pub decorations: Cell<NodeList<'gc>>,
890 pub dummy_param_list: Cell<NodeList<'gc>>,
892}
893impl<'gc> Program<'gc> {
894 pub fn new(
897 metadata: NodeMetadata<'gc>,
898 body: NodeList<'gc>,
899 ) -> Self {
900 Program {
901 metadata,
902 body,
903 scope: Cell::new(None),
904 sem_info: Cell::new(None),
905 strictness: Cell::new(Strictness::NotSet),
906 is_method_definition: Cell::new(false),
907 decorations: Cell::new(NodeList::empty()),
908 dummy_param_list: Cell::new(NodeList::empty()),
909 }
910 }
911}
912
913#[derive(Debug)]
915#[repr(C)]
916pub struct FunctionExpression<'gc> {
917 pub metadata: NodeMetadata<'gc>,
919 pub id: Option<&'gc Node<'gc>>,
921 pub params: NodeList<'gc>,
923 pub body: &'gc Node<'gc>,
925 pub type_parameters: Option<&'gc Node<'gc>>,
927 pub return_type: Option<&'gc Node<'gc>>,
929 pub predicate: Option<&'gc Node<'gc>>,
931 pub generator: Cell<bool>,
933 pub r#async: Cell<bool>,
935 pub scope: Cell<Option<SemaId>>,
937 pub sem_info: Cell<Option<SemaId>>,
939 pub strictness: Cell<Strictness>,
941 pub is_method_definition: Cell<bool>,
944 pub decorations: Cell<NodeList<'gc>>,
947}
948impl<'gc> FunctionExpression<'gc> {
949 pub fn new(
952 metadata: NodeMetadata<'gc>,
953 id: Option<&'gc Node<'gc>>,
954 params: NodeList<'gc>,
955 body: &'gc Node<'gc>,
956 type_parameters: Option<&'gc Node<'gc>>,
957 return_type: Option<&'gc Node<'gc>>,
958 predicate: Option<&'gc Node<'gc>>,
959 generator: bool,
960 r#async: bool,
961 ) -> Self {
962 FunctionExpression {
963 metadata,
964 id,
965 params,
966 body,
967 type_parameters,
968 return_type,
969 predicate,
970 generator: Cell::new(generator),
971 r#async: Cell::new(r#async),
972 scope: Cell::new(None),
973 sem_info: Cell::new(None),
974 strictness: Cell::new(Strictness::NotSet),
975 is_method_definition: Cell::new(false),
976 decorations: Cell::new(NodeList::empty()),
977 }
978 }
979}
980
981#[derive(Debug)]
983#[repr(C)]
984pub struct ArrowFunctionExpression<'gc> {
985 pub metadata: NodeMetadata<'gc>,
987 pub params: NodeList<'gc>,
989 pub body: &'gc Node<'gc>,
991 pub type_parameters: Option<&'gc Node<'gc>>,
993 pub return_type: Option<&'gc Node<'gc>>,
995 pub predicate: Option<&'gc Node<'gc>>,
997 pub expression: Cell<bool>,
999 pub r#async: Cell<bool>,
1001 pub scope: Cell<Option<SemaId>>,
1003 pub sem_info: Cell<Option<SemaId>>,
1005 pub strictness: Cell<Strictness>,
1007 pub is_method_definition: Cell<bool>,
1010 pub decorations: Cell<NodeList<'gc>>,
1013}
1014impl<'gc> ArrowFunctionExpression<'gc> {
1015 pub fn new(
1019 metadata: NodeMetadata<'gc>,
1020 params: NodeList<'gc>,
1021 body: &'gc Node<'gc>,
1022 type_parameters: Option<&'gc Node<'gc>>,
1023 return_type: Option<&'gc Node<'gc>>,
1024 predicate: Option<&'gc Node<'gc>>,
1025 expression: bool,
1026 r#async: bool,
1027 ) -> Self {
1028 ArrowFunctionExpression {
1029 metadata,
1030 params,
1031 body,
1032 type_parameters,
1033 return_type,
1034 predicate,
1035 expression: Cell::new(expression),
1036 r#async: Cell::new(r#async),
1037 scope: Cell::new(None),
1038 sem_info: Cell::new(None),
1039 strictness: Cell::new(Strictness::NotSet),
1040 is_method_definition: Cell::new(false),
1041 decorations: Cell::new(NodeList::empty()),
1042 }
1043 }
1044}
1045
1046#[derive(Debug)]
1048#[repr(C)]
1049pub struct FunctionDeclaration<'gc> {
1050 pub metadata: NodeMetadata<'gc>,
1052 pub id: Option<&'gc Node<'gc>>,
1054 pub params: NodeList<'gc>,
1056 pub body: &'gc Node<'gc>,
1058 pub type_parameters: Option<&'gc Node<'gc>>,
1060 pub return_type: Option<&'gc Node<'gc>>,
1062 pub predicate: Option<&'gc Node<'gc>>,
1064 pub generator: Cell<bool>,
1066 pub r#async: Cell<bool>,
1068 pub scope: Cell<Option<SemaId>>,
1070 pub sem_info: Cell<Option<SemaId>>,
1072 pub strictness: Cell<Strictness>,
1074 pub is_method_definition: Cell<bool>,
1077 pub decorations: Cell<NodeList<'gc>>,
1080}
1081impl<'gc> FunctionDeclaration<'gc> {
1082 pub fn new(
1085 metadata: NodeMetadata<'gc>,
1086 id: Option<&'gc Node<'gc>>,
1087 params: NodeList<'gc>,
1088 body: &'gc Node<'gc>,
1089 type_parameters: Option<&'gc Node<'gc>>,
1090 return_type: Option<&'gc Node<'gc>>,
1091 predicate: Option<&'gc Node<'gc>>,
1092 generator: bool,
1093 r#async: bool,
1094 ) -> Self {
1095 FunctionDeclaration {
1096 metadata,
1097 id,
1098 params,
1099 body,
1100 type_parameters,
1101 return_type,
1102 predicate,
1103 generator: Cell::new(generator),
1104 r#async: Cell::new(r#async),
1105 scope: Cell::new(None),
1106 sem_info: Cell::new(None),
1107 strictness: Cell::new(Strictness::NotSet),
1108 is_method_definition: Cell::new(false),
1109 decorations: Cell::new(NodeList::empty()),
1110 }
1111 }
1112}
1113
1114#[derive(Debug)]
1116#[repr(C)]
1117pub struct ComponentDeclaration<'gc> {
1118 pub metadata: NodeMetadata<'gc>,
1120 pub id: &'gc Node<'gc>,
1122 pub params: NodeList<'gc>,
1124 pub body: &'gc Node<'gc>,
1126 pub type_parameters: Option<&'gc Node<'gc>>,
1128 pub renders_type: Option<&'gc Node<'gc>>,
1130 pub r#async: Cell<bool>,
1132 pub scope: Cell<Option<SemaId>>,
1134 pub sem_info: Cell<Option<SemaId>>,
1136 pub strictness: Cell<Strictness>,
1138 pub is_method_definition: Cell<bool>,
1141 pub decorations: Cell<NodeList<'gc>>,
1144}
1145impl<'gc> ComponentDeclaration<'gc> {
1146 pub fn new(
1149 metadata: NodeMetadata<'gc>,
1150 id: &'gc Node<'gc>,
1151 params: NodeList<'gc>,
1152 body: &'gc Node<'gc>,
1153 type_parameters: Option<&'gc Node<'gc>>,
1154 renders_type: Option<&'gc Node<'gc>>,
1155 r#async: bool,
1156 ) -> Self {
1157 ComponentDeclaration {
1158 metadata,
1159 id,
1160 params,
1161 body,
1162 type_parameters,
1163 renders_type,
1164 r#async: Cell::new(r#async),
1165 scope: Cell::new(None),
1166 sem_info: Cell::new(None),
1167 strictness: Cell::new(Strictness::NotSet),
1168 is_method_definition: Cell::new(false),
1169 decorations: Cell::new(NodeList::empty()),
1170 }
1171 }
1172}
1173
1174#[derive(Debug)]
1176#[repr(C)]
1177pub struct HookDeclaration<'gc> {
1178 pub metadata: NodeMetadata<'gc>,
1180 pub id: &'gc Node<'gc>,
1182 pub params: NodeList<'gc>,
1184 pub body: &'gc Node<'gc>,
1186 pub type_parameters: Option<&'gc Node<'gc>>,
1188 pub return_type: Option<&'gc Node<'gc>>,
1190 pub r#async: Cell<bool>,
1192 pub scope: Cell<Option<SemaId>>,
1194 pub sem_info: Cell<Option<SemaId>>,
1196 pub strictness: Cell<Strictness>,
1198 pub is_method_definition: Cell<bool>,
1201 pub decorations: Cell<NodeList<'gc>>,
1204}
1205impl<'gc> HookDeclaration<'gc> {
1206 pub fn new(
1209 metadata: NodeMetadata<'gc>,
1210 id: &'gc Node<'gc>,
1211 params: NodeList<'gc>,
1212 body: &'gc Node<'gc>,
1213 type_parameters: Option<&'gc Node<'gc>>,
1214 return_type: Option<&'gc Node<'gc>>,
1215 r#async: bool,
1216 ) -> Self {
1217 HookDeclaration {
1218 metadata,
1219 id,
1220 params,
1221 body,
1222 type_parameters,
1223 return_type,
1224 r#async: Cell::new(r#async),
1225 scope: Cell::new(None),
1226 sem_info: Cell::new(None),
1227 strictness: Cell::new(Strictness::NotSet),
1228 is_method_definition: Cell::new(false),
1229 decorations: Cell::new(NodeList::empty()),
1230 }
1231 }
1232}
1233
1234#[derive(Debug)]
1236#[repr(C)]
1237pub struct MatchStatement<'gc> {
1238 pub metadata: NodeMetadata<'gc>,
1240 pub argument: &'gc Node<'gc>,
1242 pub cases: NodeList<'gc>,
1244}
1245impl<'gc> MatchStatement<'gc> {
1246 pub fn new(
1248 metadata: NodeMetadata<'gc>,
1249 argument: &'gc Node<'gc>,
1250 cases: NodeList<'gc>,
1251 ) -> Self {
1252 MatchStatement {
1253 metadata,
1254 argument,
1255 cases,
1256 }
1257 }
1258}
1259
1260#[derive(Debug)]
1262#[repr(C)]
1263pub struct WhileStatement<'gc> {
1264 pub metadata: NodeMetadata<'gc>,
1266 pub body: &'gc Node<'gc>,
1268 pub test: &'gc Node<'gc>,
1270 pub label_index: Cell<u32>,
1272}
1273impl<'gc> WhileStatement<'gc> {
1274 pub fn new(
1277 metadata: NodeMetadata<'gc>,
1278 body: &'gc Node<'gc>,
1279 test: &'gc Node<'gc>,
1280 ) -> Self {
1281 WhileStatement {
1282 metadata,
1283 body,
1284 test,
1285 label_index: Cell::new(INVALID_LABEL),
1286 }
1287 }
1288}
1289
1290#[derive(Debug)]
1292#[repr(C)]
1293pub struct DoWhileStatement<'gc> {
1294 pub metadata: NodeMetadata<'gc>,
1296 pub body: &'gc Node<'gc>,
1298 pub test: &'gc Node<'gc>,
1300 pub label_index: Cell<u32>,
1302}
1303impl<'gc> DoWhileStatement<'gc> {
1304 pub fn new(
1307 metadata: NodeMetadata<'gc>,
1308 body: &'gc Node<'gc>,
1309 test: &'gc Node<'gc>,
1310 ) -> Self {
1311 DoWhileStatement {
1312 metadata,
1313 body,
1314 test,
1315 label_index: Cell::new(INVALID_LABEL),
1316 }
1317 }
1318}
1319
1320#[derive(Debug)]
1322#[repr(C)]
1323pub struct ForInStatement<'gc> {
1324 pub metadata: NodeMetadata<'gc>,
1326 pub left: &'gc Node<'gc>,
1328 pub right: &'gc Node<'gc>,
1330 pub body: &'gc Node<'gc>,
1332 pub label_index: Cell<u32>,
1334 pub scope: Cell<Option<SemaId>>,
1336}
1337impl<'gc> ForInStatement<'gc> {
1338 pub fn new(
1341 metadata: NodeMetadata<'gc>,
1342 left: &'gc Node<'gc>,
1343 right: &'gc Node<'gc>,
1344 body: &'gc Node<'gc>,
1345 ) -> Self {
1346 ForInStatement {
1347 metadata,
1348 left,
1349 right,
1350 body,
1351 label_index: Cell::new(INVALID_LABEL),
1352 scope: Cell::new(None),
1353 }
1354 }
1355}
1356
1357#[derive(Debug)]
1359#[repr(C)]
1360pub struct ForOfStatement<'gc> {
1361 pub metadata: NodeMetadata<'gc>,
1363 pub left: &'gc Node<'gc>,
1365 pub right: &'gc Node<'gc>,
1367 pub body: &'gc Node<'gc>,
1369 pub r#await: Cell<bool>,
1371 pub label_index: Cell<u32>,
1373 pub scope: Cell<Option<SemaId>>,
1375}
1376impl<'gc> ForOfStatement<'gc> {
1377 pub fn new(
1380 metadata: NodeMetadata<'gc>,
1381 left: &'gc Node<'gc>,
1382 right: &'gc Node<'gc>,
1383 body: &'gc Node<'gc>,
1384 r#await: bool,
1385 ) -> Self {
1386 ForOfStatement {
1387 metadata,
1388 left,
1389 right,
1390 body,
1391 r#await: Cell::new(r#await),
1392 label_index: Cell::new(INVALID_LABEL),
1393 scope: Cell::new(None),
1394 }
1395 }
1396}
1397
1398#[derive(Debug)]
1400#[repr(C)]
1401pub struct ForStatement<'gc> {
1402 pub metadata: NodeMetadata<'gc>,
1404 pub init: Option<&'gc Node<'gc>>,
1406 pub test: Option<&'gc Node<'gc>>,
1408 pub update: Option<&'gc Node<'gc>>,
1410 pub body: &'gc Node<'gc>,
1412 pub label_index: Cell<u32>,
1414 pub scope: Cell<Option<SemaId>>,
1416}
1417impl<'gc> ForStatement<'gc> {
1418 pub fn new(
1421 metadata: NodeMetadata<'gc>,
1422 init: Option<&'gc Node<'gc>>,
1423 test: Option<&'gc Node<'gc>>,
1424 update: Option<&'gc Node<'gc>>,
1425 body: &'gc Node<'gc>,
1426 ) -> Self {
1427 ForStatement {
1428 metadata,
1429 init,
1430 test,
1431 update,
1432 body,
1433 label_index: Cell::new(INVALID_LABEL),
1434 scope: Cell::new(None),
1435 }
1436 }
1437}
1438
1439#[derive(Debug)]
1441#[repr(C)]
1442pub struct DebuggerStatement<'gc> {
1443 pub metadata: NodeMetadata<'gc>,
1445}
1446impl<'gc> DebuggerStatement<'gc> {
1447 pub fn new(
1449 metadata: NodeMetadata<'gc>,
1450 ) -> Self {
1451 DebuggerStatement {
1452 metadata,
1453 }
1454 }
1455}
1456
1457#[derive(Debug)]
1459#[repr(C)]
1460pub struct EmptyStatement<'gc> {
1461 pub metadata: NodeMetadata<'gc>,
1463}
1464impl<'gc> EmptyStatement<'gc> {
1465 pub fn new(
1467 metadata: NodeMetadata<'gc>,
1468 ) -> Self {
1469 EmptyStatement {
1470 metadata,
1471 }
1472 }
1473}
1474
1475#[derive(Debug)]
1477#[repr(C)]
1478pub struct BlockStatement<'gc> {
1479 pub metadata: NodeMetadata<'gc>,
1481 pub body: NodeList<'gc>,
1483 pub implicit: Cell<bool>,
1485 pub scope: Cell<Option<SemaId>>,
1487 pub buffer_id: Cell<u32>,
1489 pub is_lazy_function_body: Cell<bool>,
1491 pub param_yield: Cell<bool>,
1493 pub param_await: Cell<bool>,
1495 pub contains_arrow_functions: Cell<bool>,
1498 pub may_contain_arrow_functions_using_arguments: Cell<bool>,
1501}
1502impl<'gc> BlockStatement<'gc> {
1503 pub fn new(
1506 metadata: NodeMetadata<'gc>,
1507 body: NodeList<'gc>,
1508 implicit: bool,
1509 ) -> Self {
1510 BlockStatement {
1511 metadata,
1512 body,
1513 implicit: Cell::new(implicit),
1514 scope: Cell::new(None),
1515 buffer_id: Cell::new(0),
1516 is_lazy_function_body: Cell::new(false),
1517 param_yield: Cell::new(false),
1518 param_await: Cell::new(false),
1519 contains_arrow_functions: Cell::new(false),
1520 may_contain_arrow_functions_using_arguments: Cell::new(false),
1521 }
1522 }
1523}
1524
1525#[derive(Debug)]
1527#[repr(C)]
1528pub struct StaticBlock<'gc> {
1529 pub metadata: NodeMetadata<'gc>,
1531 pub body: NodeList<'gc>,
1533 pub scope: Cell<Option<SemaId>>,
1535 pub function_info: Cell<Option<SemaId>>,
1537}
1538impl<'gc> StaticBlock<'gc> {
1539 pub fn new(
1542 metadata: NodeMetadata<'gc>,
1543 body: NodeList<'gc>,
1544 ) -> Self {
1545 StaticBlock {
1546 metadata,
1547 body,
1548 scope: Cell::new(None),
1549 function_info: Cell::new(None),
1550 }
1551 }
1552}
1553
1554#[derive(Debug)]
1556#[repr(C)]
1557pub struct BreakStatement<'gc> {
1558 pub metadata: NodeMetadata<'gc>,
1560 pub label: Option<&'gc Node<'gc>>,
1562 pub label_index: Cell<u32>,
1564}
1565impl<'gc> BreakStatement<'gc> {
1566 pub fn new(
1569 metadata: NodeMetadata<'gc>,
1570 label: Option<&'gc Node<'gc>>,
1571 ) -> Self {
1572 BreakStatement {
1573 metadata,
1574 label,
1575 label_index: Cell::new(INVALID_LABEL),
1576 }
1577 }
1578}
1579
1580#[derive(Debug)]
1582#[repr(C)]
1583pub struct ContinueStatement<'gc> {
1584 pub metadata: NodeMetadata<'gc>,
1586 pub label: Option<&'gc Node<'gc>>,
1588 pub label_index: Cell<u32>,
1590}
1591impl<'gc> ContinueStatement<'gc> {
1592 pub fn new(
1595 metadata: NodeMetadata<'gc>,
1596 label: Option<&'gc Node<'gc>>,
1597 ) -> Self {
1598 ContinueStatement {
1599 metadata,
1600 label,
1601 label_index: Cell::new(INVALID_LABEL),
1602 }
1603 }
1604}
1605
1606#[derive(Debug)]
1608#[repr(C)]
1609pub struct ThrowStatement<'gc> {
1610 pub metadata: NodeMetadata<'gc>,
1612 pub argument: &'gc Node<'gc>,
1614}
1615impl<'gc> ThrowStatement<'gc> {
1616 pub fn new(
1618 metadata: NodeMetadata<'gc>,
1619 argument: &'gc Node<'gc>,
1620 ) -> Self {
1621 ThrowStatement {
1622 metadata,
1623 argument,
1624 }
1625 }
1626}
1627
1628#[derive(Debug)]
1630#[repr(C)]
1631pub struct ReturnStatement<'gc> {
1632 pub metadata: NodeMetadata<'gc>,
1634 pub argument: Option<&'gc Node<'gc>>,
1636}
1637impl<'gc> ReturnStatement<'gc> {
1638 pub fn new(
1640 metadata: NodeMetadata<'gc>,
1641 argument: Option<&'gc Node<'gc>>,
1642 ) -> Self {
1643 ReturnStatement {
1644 metadata,
1645 argument,
1646 }
1647 }
1648}
1649
1650#[derive(Debug)]
1652#[repr(C)]
1653pub struct WithStatement<'gc> {
1654 pub metadata: NodeMetadata<'gc>,
1656 pub object: &'gc Node<'gc>,
1658 pub body: &'gc Node<'gc>,
1660}
1661impl<'gc> WithStatement<'gc> {
1662 pub fn new(
1664 metadata: NodeMetadata<'gc>,
1665 object: &'gc Node<'gc>,
1666 body: &'gc Node<'gc>,
1667 ) -> Self {
1668 WithStatement {
1669 metadata,
1670 object,
1671 body,
1672 }
1673 }
1674}
1675
1676#[derive(Debug)]
1678#[repr(C)]
1679pub struct SwitchStatement<'gc> {
1680 pub metadata: NodeMetadata<'gc>,
1682 pub discriminant: &'gc Node<'gc>,
1684 pub cases: NodeList<'gc>,
1686 pub label_index: Cell<u32>,
1688 pub scope: Cell<Option<SemaId>>,
1690}
1691impl<'gc> SwitchStatement<'gc> {
1692 pub fn new(
1695 metadata: NodeMetadata<'gc>,
1696 discriminant: &'gc Node<'gc>,
1697 cases: NodeList<'gc>,
1698 ) -> Self {
1699 SwitchStatement {
1700 metadata,
1701 discriminant,
1702 cases,
1703 label_index: Cell::new(INVALID_LABEL),
1704 scope: Cell::new(None),
1705 }
1706 }
1707}
1708
1709#[derive(Debug)]
1711#[repr(C)]
1712pub struct LabeledStatement<'gc> {
1713 pub metadata: NodeMetadata<'gc>,
1715 pub label: &'gc Node<'gc>,
1717 pub body: &'gc Node<'gc>,
1719 pub label_index: Cell<u32>,
1721}
1722impl<'gc> LabeledStatement<'gc> {
1723 pub fn new(
1726 metadata: NodeMetadata<'gc>,
1727 label: &'gc Node<'gc>,
1728 body: &'gc Node<'gc>,
1729 ) -> Self {
1730 LabeledStatement {
1731 metadata,
1732 label,
1733 body,
1734 label_index: Cell::new(INVALID_LABEL),
1735 }
1736 }
1737}
1738
1739#[derive(Debug)]
1741#[repr(C)]
1742pub struct ExpressionStatement<'gc> {
1743 pub metadata: NodeMetadata<'gc>,
1745 pub expression: &'gc Node<'gc>,
1747 pub directive: Cell<NodeString>,
1749}
1750impl<'gc> ExpressionStatement<'gc> {
1751 pub fn new(
1753 metadata: NodeMetadata<'gc>,
1754 expression: &'gc Node<'gc>,
1755 directive: NodeString,
1756 ) -> Self {
1757 ExpressionStatement {
1758 metadata,
1759 expression,
1760 directive: Cell::new(directive),
1761 }
1762 }
1763}
1764
1765#[derive(Debug)]
1767#[repr(C)]
1768pub struct TryStatement<'gc> {
1769 pub metadata: NodeMetadata<'gc>,
1771 pub block: &'gc Node<'gc>,
1773 pub handler: Option<&'gc Node<'gc>>,
1775 pub finalizer: Option<&'gc Node<'gc>>,
1777}
1778impl<'gc> TryStatement<'gc> {
1779 pub fn new(
1781 metadata: NodeMetadata<'gc>,
1782 block: &'gc Node<'gc>,
1783 handler: Option<&'gc Node<'gc>>,
1784 finalizer: Option<&'gc Node<'gc>>,
1785 ) -> Self {
1786 TryStatement {
1787 metadata,
1788 block,
1789 handler,
1790 finalizer,
1791 }
1792 }
1793}
1794
1795#[derive(Debug)]
1797#[repr(C)]
1798pub struct IfStatement<'gc> {
1799 pub metadata: NodeMetadata<'gc>,
1801 pub test: &'gc Node<'gc>,
1803 pub consequent: &'gc Node<'gc>,
1805 pub alternate: Option<&'gc Node<'gc>>,
1807}
1808impl<'gc> IfStatement<'gc> {
1809 pub fn new(
1811 metadata: NodeMetadata<'gc>,
1812 test: &'gc Node<'gc>,
1813 consequent: &'gc Node<'gc>,
1814 alternate: Option<&'gc Node<'gc>>,
1815 ) -> Self {
1816 IfStatement {
1817 metadata,
1818 test,
1819 consequent,
1820 alternate,
1821 }
1822 }
1823}
1824
1825#[derive(Debug)]
1827#[repr(C)]
1828pub struct NullLiteral<'gc> {
1829 pub metadata: NodeMetadata<'gc>,
1831}
1832impl<'gc> NullLiteral<'gc> {
1833 pub fn new(
1835 metadata: NodeMetadata<'gc>,
1836 ) -> Self {
1837 NullLiteral {
1838 metadata,
1839 }
1840 }
1841}
1842
1843#[derive(Debug)]
1845#[repr(C)]
1846pub struct BooleanLiteral<'gc> {
1847 pub metadata: NodeMetadata<'gc>,
1849 pub value: Cell<bool>,
1851}
1852impl<'gc> BooleanLiteral<'gc> {
1853 pub fn new(
1855 metadata: NodeMetadata<'gc>,
1856 value: bool,
1857 ) -> Self {
1858 BooleanLiteral {
1859 metadata,
1860 value: Cell::new(value),
1861 }
1862 }
1863}
1864
1865#[derive(Debug)]
1867#[repr(C)]
1868pub struct StringLiteral<'gc> {
1869 pub metadata: NodeMetadata<'gc>,
1871 pub value: Cell<NodeString>,
1873}
1874impl<'gc> StringLiteral<'gc> {
1875 pub fn new(
1877 metadata: NodeMetadata<'gc>,
1878 value: NodeString,
1879 ) -> Self {
1880 StringLiteral {
1881 metadata,
1882 value: Cell::new(value),
1883 }
1884 }
1885}
1886
1887#[derive(Debug)]
1889#[repr(C)]
1890pub struct NumericLiteral<'gc> {
1891 pub metadata: NodeMetadata<'gc>,
1893 pub value: Cell<f64>,
1895}
1896impl<'gc> NumericLiteral<'gc> {
1897 pub fn new(
1899 metadata: NodeMetadata<'gc>,
1900 value: f64,
1901 ) -> Self {
1902 NumericLiteral {
1903 metadata,
1904 value: Cell::new(value),
1905 }
1906 }
1907}
1908
1909#[derive(Debug)]
1911#[repr(C)]
1912pub struct RegExpLiteral<'gc> {
1913 pub metadata: NodeMetadata<'gc>,
1915 pub pattern: Cell<NodeLabel>,
1917 pub flags: Cell<NodeLabel>,
1919}
1920impl<'gc> RegExpLiteral<'gc> {
1921 pub fn new(
1923 metadata: NodeMetadata<'gc>,
1924 pattern: NodeLabel,
1925 flags: NodeLabel,
1926 ) -> Self {
1927 RegExpLiteral {
1928 metadata,
1929 pattern: Cell::new(pattern),
1930 flags: Cell::new(flags),
1931 }
1932 }
1933}
1934
1935#[derive(Debug)]
1937#[repr(C)]
1938pub struct BigIntLiteral<'gc> {
1939 pub metadata: NodeMetadata<'gc>,
1941 pub bigint: Cell<NodeLabel>,
1943}
1944impl<'gc> BigIntLiteral<'gc> {
1945 pub fn new(
1947 metadata: NodeMetadata<'gc>,
1948 bigint: NodeLabel,
1949 ) -> Self {
1950 BigIntLiteral {
1951 metadata,
1952 bigint: Cell::new(bigint),
1953 }
1954 }
1955}
1956
1957#[derive(Debug)]
1959#[repr(C)]
1960pub struct ThisExpression<'gc> {
1961 pub metadata: NodeMetadata<'gc>,
1963}
1964impl<'gc> ThisExpression<'gc> {
1965 pub fn new(
1967 metadata: NodeMetadata<'gc>,
1968 ) -> Self {
1969 ThisExpression {
1970 metadata,
1971 }
1972 }
1973}
1974
1975#[derive(Debug)]
1977#[repr(C)]
1978pub struct Super<'gc> {
1979 pub metadata: NodeMetadata<'gc>,
1981}
1982impl<'gc> Super<'gc> {
1983 pub fn new(
1985 metadata: NodeMetadata<'gc>,
1986 ) -> Self {
1987 Super {
1988 metadata,
1989 }
1990 }
1991}
1992
1993#[derive(Debug)]
1995#[repr(C)]
1996pub struct SequenceExpression<'gc> {
1997 pub metadata: NodeMetadata<'gc>,
1999 pub expressions: NodeList<'gc>,
2001}
2002impl<'gc> SequenceExpression<'gc> {
2003 pub fn new(
2005 metadata: NodeMetadata<'gc>,
2006 expressions: NodeList<'gc>,
2007 ) -> Self {
2008 SequenceExpression {
2009 metadata,
2010 expressions,
2011 }
2012 }
2013}
2014
2015#[derive(Debug)]
2017#[repr(C)]
2018pub struct ObjectExpression<'gc> {
2019 pub metadata: NodeMetadata<'gc>,
2021 pub properties: NodeList<'gc>,
2023}
2024impl<'gc> ObjectExpression<'gc> {
2025 pub fn new(
2027 metadata: NodeMetadata<'gc>,
2028 properties: NodeList<'gc>,
2029 ) -> Self {
2030 ObjectExpression {
2031 metadata,
2032 properties,
2033 }
2034 }
2035}
2036
2037#[derive(Debug)]
2039#[repr(C)]
2040pub struct ArrayExpression<'gc> {
2041 pub metadata: NodeMetadata<'gc>,
2043 pub elements: NodeList<'gc>,
2045 pub trailing_comma: Cell<bool>,
2047}
2048impl<'gc> ArrayExpression<'gc> {
2049 pub fn new(
2051 metadata: NodeMetadata<'gc>,
2052 elements: NodeList<'gc>,
2053 trailing_comma: bool,
2054 ) -> Self {
2055 ArrayExpression {
2056 metadata,
2057 elements,
2058 trailing_comma: Cell::new(trailing_comma),
2059 }
2060 }
2061}
2062
2063#[derive(Debug)]
2065#[repr(C)]
2066pub struct SpreadElement<'gc> {
2067 pub metadata: NodeMetadata<'gc>,
2069 pub argument: &'gc Node<'gc>,
2071}
2072impl<'gc> SpreadElement<'gc> {
2073 pub fn new(
2075 metadata: NodeMetadata<'gc>,
2076 argument: &'gc Node<'gc>,
2077 ) -> Self {
2078 SpreadElement {
2079 metadata,
2080 argument,
2081 }
2082 }
2083}
2084
2085#[derive(Debug)]
2087#[repr(C)]
2088pub struct NewExpression<'gc> {
2089 pub metadata: NodeMetadata<'gc>,
2091 pub callee: &'gc Node<'gc>,
2093 pub type_arguments: Option<&'gc Node<'gc>>,
2095 pub arguments: NodeList<'gc>,
2097}
2098impl<'gc> NewExpression<'gc> {
2099 pub fn new(
2101 metadata: NodeMetadata<'gc>,
2102 callee: &'gc Node<'gc>,
2103 type_arguments: Option<&'gc Node<'gc>>,
2104 arguments: NodeList<'gc>,
2105 ) -> Self {
2106 NewExpression {
2107 metadata,
2108 callee,
2109 type_arguments,
2110 arguments,
2111 }
2112 }
2113}
2114
2115#[derive(Debug)]
2117#[repr(C)]
2118pub struct YieldExpression<'gc> {
2119 pub metadata: NodeMetadata<'gc>,
2121 pub argument: Option<&'gc Node<'gc>>,
2123 pub delegate: Cell<bool>,
2125}
2126impl<'gc> YieldExpression<'gc> {
2127 pub fn new(
2129 metadata: NodeMetadata<'gc>,
2130 argument: Option<&'gc Node<'gc>>,
2131 delegate: bool,
2132 ) -> Self {
2133 YieldExpression {
2134 metadata,
2135 argument,
2136 delegate: Cell::new(delegate),
2137 }
2138 }
2139}
2140
2141#[derive(Debug)]
2143#[repr(C)]
2144pub struct AwaitExpression<'gc> {
2145 pub metadata: NodeMetadata<'gc>,
2147 pub argument: &'gc Node<'gc>,
2149}
2150impl<'gc> AwaitExpression<'gc> {
2151 pub fn new(
2153 metadata: NodeMetadata<'gc>,
2154 argument: &'gc Node<'gc>,
2155 ) -> Self {
2156 AwaitExpression {
2157 metadata,
2158 argument,
2159 }
2160 }
2161}
2162
2163#[derive(Debug)]
2165#[repr(C)]
2166pub struct ImportExpression<'gc> {
2167 pub metadata: NodeMetadata<'gc>,
2169 pub source: &'gc Node<'gc>,
2171 pub options: Option<&'gc Node<'gc>>,
2173}
2174impl<'gc> ImportExpression<'gc> {
2175 pub fn new(
2177 metadata: NodeMetadata<'gc>,
2178 source: &'gc Node<'gc>,
2179 options: Option<&'gc Node<'gc>>,
2180 ) -> Self {
2181 ImportExpression {
2182 metadata,
2183 source,
2184 options,
2185 }
2186 }
2187}
2188
2189#[derive(Debug)]
2191#[repr(C)]
2192pub struct CallExpression<'gc> {
2193 pub metadata: NodeMetadata<'gc>,
2195 pub callee: &'gc Node<'gc>,
2197 pub type_arguments: Option<&'gc Node<'gc>>,
2199 pub arguments: NodeList<'gc>,
2201}
2202impl<'gc> CallExpression<'gc> {
2203 pub fn new(
2205 metadata: NodeMetadata<'gc>,
2206 callee: &'gc Node<'gc>,
2207 type_arguments: Option<&'gc Node<'gc>>,
2208 arguments: NodeList<'gc>,
2209 ) -> Self {
2210 CallExpression {
2211 metadata,
2212 callee,
2213 type_arguments,
2214 arguments,
2215 }
2216 }
2217}
2218
2219#[derive(Debug)]
2221#[repr(C)]
2222pub struct OptionalCallExpression<'gc> {
2223 pub metadata: NodeMetadata<'gc>,
2225 pub callee: &'gc Node<'gc>,
2227 pub type_arguments: Option<&'gc Node<'gc>>,
2229 pub arguments: NodeList<'gc>,
2231 pub optional: Cell<bool>,
2233}
2234impl<'gc> OptionalCallExpression<'gc> {
2235 pub fn new(
2238 metadata: NodeMetadata<'gc>,
2239 callee: &'gc Node<'gc>,
2240 type_arguments: Option<&'gc Node<'gc>>,
2241 arguments: NodeList<'gc>,
2242 optional: bool,
2243 ) -> Self {
2244 OptionalCallExpression {
2245 metadata,
2246 callee,
2247 type_arguments,
2248 arguments,
2249 optional: Cell::new(optional),
2250 }
2251 }
2252}
2253
2254#[derive(Debug)]
2256#[repr(C)]
2257pub struct AssignmentExpression<'gc> {
2258 pub metadata: NodeMetadata<'gc>,
2260 pub operator: Cell<NodeLabel>,
2262 pub left: &'gc Node<'gc>,
2264 pub right: &'gc Node<'gc>,
2266}
2267impl<'gc> AssignmentExpression<'gc> {
2268 pub fn new(
2270 metadata: NodeMetadata<'gc>,
2271 operator: NodeLabel,
2272 left: &'gc Node<'gc>,
2273 right: &'gc Node<'gc>,
2274 ) -> Self {
2275 AssignmentExpression {
2276 metadata,
2277 operator: Cell::new(operator),
2278 left,
2279 right,
2280 }
2281 }
2282}
2283
2284#[derive(Debug)]
2286#[repr(C)]
2287pub struct UnaryExpression<'gc> {
2288 pub metadata: NodeMetadata<'gc>,
2290 pub operator: Cell<NodeLabel>,
2292 pub argument: &'gc Node<'gc>,
2294 pub prefix: Cell<bool>,
2296}
2297impl<'gc> UnaryExpression<'gc> {
2298 pub fn new(
2300 metadata: NodeMetadata<'gc>,
2301 operator: NodeLabel,
2302 argument: &'gc Node<'gc>,
2303 prefix: bool,
2304 ) -> Self {
2305 UnaryExpression {
2306 metadata,
2307 operator: Cell::new(operator),
2308 argument,
2309 prefix: Cell::new(prefix),
2310 }
2311 }
2312}
2313
2314#[derive(Debug)]
2316#[repr(C)]
2317pub struct UpdateExpression<'gc> {
2318 pub metadata: NodeMetadata<'gc>,
2320 pub operator: Cell<NodeLabel>,
2322 pub argument: &'gc Node<'gc>,
2324 pub prefix: Cell<bool>,
2326}
2327impl<'gc> UpdateExpression<'gc> {
2328 pub fn new(
2330 metadata: NodeMetadata<'gc>,
2331 operator: NodeLabel,
2332 argument: &'gc Node<'gc>,
2333 prefix: bool,
2334 ) -> Self {
2335 UpdateExpression {
2336 metadata,
2337 operator: Cell::new(operator),
2338 argument,
2339 prefix: Cell::new(prefix),
2340 }
2341 }
2342}
2343
2344#[derive(Debug)]
2346#[repr(C)]
2347pub struct MemberExpression<'gc> {
2348 pub metadata: NodeMetadata<'gc>,
2350 pub object: &'gc Node<'gc>,
2352 pub property: &'gc Node<'gc>,
2354 pub computed: Cell<bool>,
2356}
2357impl<'gc> MemberExpression<'gc> {
2358 pub fn new(
2360 metadata: NodeMetadata<'gc>,
2361 object: &'gc Node<'gc>,
2362 property: &'gc Node<'gc>,
2363 computed: bool,
2364 ) -> Self {
2365 MemberExpression {
2366 metadata,
2367 object,
2368 property,
2369 computed: Cell::new(computed),
2370 }
2371 }
2372}
2373
2374#[derive(Debug)]
2376#[repr(C)]
2377pub struct OptionalMemberExpression<'gc> {
2378 pub metadata: NodeMetadata<'gc>,
2380 pub object: &'gc Node<'gc>,
2382 pub property: &'gc Node<'gc>,
2384 pub computed: Cell<bool>,
2386 pub optional: Cell<bool>,
2388}
2389impl<'gc> OptionalMemberExpression<'gc> {
2390 pub fn new(
2393 metadata: NodeMetadata<'gc>,
2394 object: &'gc Node<'gc>,
2395 property: &'gc Node<'gc>,
2396 computed: bool,
2397 optional: bool,
2398 ) -> Self {
2399 OptionalMemberExpression {
2400 metadata,
2401 object,
2402 property,
2403 computed: Cell::new(computed),
2404 optional: Cell::new(optional),
2405 }
2406 }
2407}
2408
2409#[derive(Debug)]
2411#[repr(C)]
2412pub struct LogicalExpression<'gc> {
2413 pub metadata: NodeMetadata<'gc>,
2415 pub left: &'gc Node<'gc>,
2417 pub right: &'gc Node<'gc>,
2419 pub operator: Cell<NodeLabel>,
2421}
2422impl<'gc> LogicalExpression<'gc> {
2423 pub fn new(
2425 metadata: NodeMetadata<'gc>,
2426 left: &'gc Node<'gc>,
2427 right: &'gc Node<'gc>,
2428 operator: NodeLabel,
2429 ) -> Self {
2430 LogicalExpression {
2431 metadata,
2432 left,
2433 right,
2434 operator: Cell::new(operator),
2435 }
2436 }
2437}
2438
2439#[derive(Debug)]
2441#[repr(C)]
2442pub struct ConditionalExpression<'gc> {
2443 pub metadata: NodeMetadata<'gc>,
2445 pub test: &'gc Node<'gc>,
2447 pub alternate: &'gc Node<'gc>,
2449 pub consequent: &'gc Node<'gc>,
2451}
2452impl<'gc> ConditionalExpression<'gc> {
2453 pub fn new(
2455 metadata: NodeMetadata<'gc>,
2456 test: &'gc Node<'gc>,
2457 alternate: &'gc Node<'gc>,
2458 consequent: &'gc Node<'gc>,
2459 ) -> Self {
2460 ConditionalExpression {
2461 metadata,
2462 test,
2463 alternate,
2464 consequent,
2465 }
2466 }
2467}
2468
2469#[derive(Debug)]
2471#[repr(C)]
2472pub struct BinaryExpression<'gc> {
2473 pub metadata: NodeMetadata<'gc>,
2475 pub left: &'gc Node<'gc>,
2477 pub right: &'gc Node<'gc>,
2479 pub operator: Cell<NodeLabel>,
2481}
2482impl<'gc> BinaryExpression<'gc> {
2483 pub fn new(
2485 metadata: NodeMetadata<'gc>,
2486 left: &'gc Node<'gc>,
2487 right: &'gc Node<'gc>,
2488 operator: NodeLabel,
2489 ) -> Self {
2490 BinaryExpression {
2491 metadata,
2492 left,
2493 right,
2494 operator: Cell::new(operator),
2495 }
2496 }
2497}
2498
2499#[derive(Debug)]
2501#[repr(C)]
2502pub struct Directive<'gc> {
2503 pub metadata: NodeMetadata<'gc>,
2505 pub value: &'gc Node<'gc>,
2507}
2508impl<'gc> Directive<'gc> {
2509 pub fn new(
2511 metadata: NodeMetadata<'gc>,
2512 value: &'gc Node<'gc>,
2513 ) -> Self {
2514 Directive {
2515 metadata,
2516 value,
2517 }
2518 }
2519}
2520
2521#[derive(Debug)]
2523#[repr(C)]
2524pub struct DirectiveLiteral<'gc> {
2525 pub metadata: NodeMetadata<'gc>,
2527 pub value: Cell<NodeString>,
2529}
2530impl<'gc> DirectiveLiteral<'gc> {
2531 pub fn new(
2533 metadata: NodeMetadata<'gc>,
2534 value: NodeString,
2535 ) -> Self {
2536 DirectiveLiteral {
2537 metadata,
2538 value: Cell::new(value),
2539 }
2540 }
2541}
2542
2543#[derive(Debug)]
2545#[repr(C)]
2546pub struct Identifier<'gc> {
2547 pub metadata: NodeMetadata<'gc>,
2549 pub name: Cell<NodeLabel>,
2551 pub type_annotation: Option<&'gc Node<'gc>>,
2553 pub optional: Cell<bool>,
2555 pub unresolvable: Cell<bool>,
2557 pub decl_state: Cell<u8>,
2560 pub decl: Cell<Option<SemaId>>,
2563}
2564impl<'gc> Identifier<'gc> {
2565 pub fn new(
2568 metadata: NodeMetadata<'gc>,
2569 name: NodeLabel,
2570 type_annotation: Option<&'gc Node<'gc>>,
2571 optional: bool,
2572 ) -> Self {
2573 Identifier {
2574 metadata,
2575 name: Cell::new(name),
2576 type_annotation,
2577 optional: Cell::new(optional),
2578 unresolvable: Cell::new(false),
2579 decl_state: Cell::new(0),
2580 decl: Cell::new(None),
2581 }
2582 }
2583}
2584
2585#[derive(Debug)]
2587#[repr(C)]
2588pub struct PrivateName<'gc> {
2589 pub metadata: NodeMetadata<'gc>,
2591 pub id: &'gc Node<'gc>,
2593}
2594impl<'gc> PrivateName<'gc> {
2595 pub fn new(
2597 metadata: NodeMetadata<'gc>,
2598 id: &'gc Node<'gc>,
2599 ) -> Self {
2600 PrivateName {
2601 metadata,
2602 id,
2603 }
2604 }
2605}
2606
2607#[derive(Debug)]
2609#[repr(C)]
2610pub struct MetaProperty<'gc> {
2611 pub metadata: NodeMetadata<'gc>,
2613 pub meta: &'gc Node<'gc>,
2615 pub property: &'gc Node<'gc>,
2617}
2618impl<'gc> MetaProperty<'gc> {
2619 pub fn new(
2621 metadata: NodeMetadata<'gc>,
2622 meta: &'gc Node<'gc>,
2623 property: &'gc Node<'gc>,
2624 ) -> Self {
2625 MetaProperty {
2626 metadata,
2627 meta,
2628 property,
2629 }
2630 }
2631}
2632
2633#[derive(Debug)]
2635#[repr(C)]
2636pub struct SwitchCase<'gc> {
2637 pub metadata: NodeMetadata<'gc>,
2639 pub test: Option<&'gc Node<'gc>>,
2641 pub consequent: NodeList<'gc>,
2643}
2644impl<'gc> SwitchCase<'gc> {
2645 pub fn new(
2647 metadata: NodeMetadata<'gc>,
2648 test: Option<&'gc Node<'gc>>,
2649 consequent: NodeList<'gc>,
2650 ) -> Self {
2651 SwitchCase {
2652 metadata,
2653 test,
2654 consequent,
2655 }
2656 }
2657}
2658
2659#[derive(Debug)]
2661#[repr(C)]
2662pub struct CatchClause<'gc> {
2663 pub metadata: NodeMetadata<'gc>,
2665 pub param: Option<&'gc Node<'gc>>,
2667 pub body: &'gc Node<'gc>,
2669 pub scope: Cell<Option<SemaId>>,
2671}
2672impl<'gc> CatchClause<'gc> {
2673 pub fn new(
2676 metadata: NodeMetadata<'gc>,
2677 param: Option<&'gc Node<'gc>>,
2678 body: &'gc Node<'gc>,
2679 ) -> Self {
2680 CatchClause {
2681 metadata,
2682 param,
2683 body,
2684 scope: Cell::new(None),
2685 }
2686 }
2687}
2688
2689#[derive(Debug)]
2691#[repr(C)]
2692pub struct VariableDeclarator<'gc> {
2693 pub metadata: NodeMetadata<'gc>,
2695 pub init: Option<&'gc Node<'gc>>,
2697 pub id: &'gc Node<'gc>,
2699}
2700impl<'gc> VariableDeclarator<'gc> {
2701 pub fn new(
2703 metadata: NodeMetadata<'gc>,
2704 init: Option<&'gc Node<'gc>>,
2705 id: &'gc Node<'gc>,
2706 ) -> Self {
2707 VariableDeclarator {
2708 metadata,
2709 init,
2710 id,
2711 }
2712 }
2713}
2714
2715#[derive(Debug)]
2717#[repr(C)]
2718pub struct VariableDeclaration<'gc> {
2719 pub metadata: NodeMetadata<'gc>,
2721 pub kind: Cell<NodeLabel>,
2723 pub declarations: NodeList<'gc>,
2725}
2726impl<'gc> VariableDeclaration<'gc> {
2727 pub fn new(
2729 metadata: NodeMetadata<'gc>,
2730 kind: NodeLabel,
2731 declarations: NodeList<'gc>,
2732 ) -> Self {
2733 VariableDeclaration {
2734 metadata,
2735 kind: Cell::new(kind),
2736 declarations,
2737 }
2738 }
2739}
2740
2741#[derive(Debug)]
2743#[repr(C)]
2744pub struct TemplateLiteral<'gc> {
2745 pub metadata: NodeMetadata<'gc>,
2747 pub quasis: NodeList<'gc>,
2749 pub expressions: NodeList<'gc>,
2751}
2752impl<'gc> TemplateLiteral<'gc> {
2753 pub fn new(
2755 metadata: NodeMetadata<'gc>,
2756 quasis: NodeList<'gc>,
2757 expressions: NodeList<'gc>,
2758 ) -> Self {
2759 TemplateLiteral {
2760 metadata,
2761 quasis,
2762 expressions,
2763 }
2764 }
2765}
2766
2767#[derive(Debug)]
2769#[repr(C)]
2770pub struct TaggedTemplateExpression<'gc> {
2771 pub metadata: NodeMetadata<'gc>,
2773 pub tag: &'gc Node<'gc>,
2775 pub quasi: &'gc Node<'gc>,
2777}
2778impl<'gc> TaggedTemplateExpression<'gc> {
2779 pub fn new(
2782 metadata: NodeMetadata<'gc>,
2783 tag: &'gc Node<'gc>,
2784 quasi: &'gc Node<'gc>,
2785 ) -> Self {
2786 TaggedTemplateExpression {
2787 metadata,
2788 tag,
2789 quasi,
2790 }
2791 }
2792}
2793
2794#[derive(Debug)]
2796#[repr(C)]
2797pub struct TemplateElement<'gc> {
2798 pub metadata: NodeMetadata<'gc>,
2800 pub tail: Cell<bool>,
2802 pub cooked: Cell<NodeString>,
2804 pub raw: Cell<NodeLabel>,
2806}
2807impl<'gc> TemplateElement<'gc> {
2808 pub fn new(
2810 metadata: NodeMetadata<'gc>,
2811 tail: bool,
2812 cooked: NodeString,
2813 raw: NodeLabel,
2814 ) -> Self {
2815 TemplateElement {
2816 metadata,
2817 tail: Cell::new(tail),
2818 cooked: Cell::new(cooked),
2819 raw: Cell::new(raw),
2820 }
2821 }
2822}
2823
2824#[derive(Debug)]
2826#[repr(C)]
2827pub struct Property<'gc> {
2828 pub metadata: NodeMetadata<'gc>,
2830 pub key: &'gc Node<'gc>,
2832 pub value: &'gc Node<'gc>,
2834 pub kind: Cell<NodeLabel>,
2836 pub computed: Cell<bool>,
2838 pub method: Cell<bool>,
2840 pub shorthand: Cell<bool>,
2842}
2843impl<'gc> Property<'gc> {
2844 pub fn new(
2846 metadata: NodeMetadata<'gc>,
2847 key: &'gc Node<'gc>,
2848 value: &'gc Node<'gc>,
2849 kind: NodeLabel,
2850 computed: bool,
2851 method: bool,
2852 shorthand: bool,
2853 ) -> Self {
2854 Property {
2855 metadata,
2856 key,
2857 value,
2858 kind: Cell::new(kind),
2859 computed: Cell::new(computed),
2860 method: Cell::new(method),
2861 shorthand: Cell::new(shorthand),
2862 }
2863 }
2864}
2865
2866#[derive(Debug)]
2868#[repr(C)]
2869pub struct Decorator<'gc> {
2870 pub metadata: NodeMetadata<'gc>,
2872 pub expression: &'gc Node<'gc>,
2874}
2875impl<'gc> Decorator<'gc> {
2876 pub fn new(
2878 metadata: NodeMetadata<'gc>,
2879 expression: &'gc Node<'gc>,
2880 ) -> Self {
2881 Decorator {
2882 metadata,
2883 expression,
2884 }
2885 }
2886}
2887
2888#[derive(Debug)]
2890#[repr(C)]
2891pub struct ClassDeclaration<'gc> {
2892 pub metadata: NodeMetadata<'gc>,
2894 pub id: Option<&'gc Node<'gc>>,
2896 pub type_parameters: Option<&'gc Node<'gc>>,
2898 pub super_class: Option<&'gc Node<'gc>>,
2900 pub super_type_arguments: Option<&'gc Node<'gc>>,
2902 pub implements: NodeList<'gc>,
2904 pub decorators: NodeList<'gc>,
2906 pub body: &'gc Node<'gc>,
2908 pub scope: Cell<Option<SemaId>>,
2910 pub implicit_ctor_function_info: Cell<Option<SemaId>>,
2913 pub instance_elements_init_function_info: Cell<Option<SemaId>>,
2916 pub static_elements_init_function_info: Cell<Option<SemaId>>,
2919}
2920impl<'gc> ClassDeclaration<'gc> {
2921 pub fn new(
2924 metadata: NodeMetadata<'gc>,
2925 id: Option<&'gc Node<'gc>>,
2926 type_parameters: Option<&'gc Node<'gc>>,
2927 super_class: Option<&'gc Node<'gc>>,
2928 super_type_arguments: Option<&'gc Node<'gc>>,
2929 implements: NodeList<'gc>,
2930 decorators: NodeList<'gc>,
2931 body: &'gc Node<'gc>,
2932 ) -> Self {
2933 ClassDeclaration {
2934 metadata,
2935 id,
2936 type_parameters,
2937 super_class,
2938 super_type_arguments,
2939 implements,
2940 decorators,
2941 body,
2942 scope: Cell::new(None),
2943 implicit_ctor_function_info: Cell::new(None),
2944 instance_elements_init_function_info: Cell::new(None),
2945 static_elements_init_function_info: Cell::new(None),
2946 }
2947 }
2948}
2949
2950#[derive(Debug)]
2952#[repr(C)]
2953pub struct ClassExpression<'gc> {
2954 pub metadata: NodeMetadata<'gc>,
2956 pub id: Option<&'gc Node<'gc>>,
2958 pub type_parameters: Option<&'gc Node<'gc>>,
2960 pub super_class: Option<&'gc Node<'gc>>,
2962 pub super_type_arguments: Option<&'gc Node<'gc>>,
2964 pub implements: NodeList<'gc>,
2966 pub decorators: NodeList<'gc>,
2968 pub body: &'gc Node<'gc>,
2970 pub scope: Cell<Option<SemaId>>,
2972 pub implicit_ctor_function_info: Cell<Option<SemaId>>,
2975 pub instance_elements_init_function_info: Cell<Option<SemaId>>,
2978 pub static_elements_init_function_info: Cell<Option<SemaId>>,
2981}
2982impl<'gc> ClassExpression<'gc> {
2983 pub fn new(
2986 metadata: NodeMetadata<'gc>,
2987 id: Option<&'gc Node<'gc>>,
2988 type_parameters: Option<&'gc Node<'gc>>,
2989 super_class: Option<&'gc Node<'gc>>,
2990 super_type_arguments: Option<&'gc Node<'gc>>,
2991 implements: NodeList<'gc>,
2992 decorators: NodeList<'gc>,
2993 body: &'gc Node<'gc>,
2994 ) -> Self {
2995 ClassExpression {
2996 metadata,
2997 id,
2998 type_parameters,
2999 super_class,
3000 super_type_arguments,
3001 implements,
3002 decorators,
3003 body,
3004 scope: Cell::new(None),
3005 implicit_ctor_function_info: Cell::new(None),
3006 instance_elements_init_function_info: Cell::new(None),
3007 static_elements_init_function_info: Cell::new(None),
3008 }
3009 }
3010}
3011
3012#[derive(Debug)]
3014#[repr(C)]
3015pub struct ClassBody<'gc> {
3016 pub metadata: NodeMetadata<'gc>,
3018 pub body: NodeList<'gc>,
3020}
3021impl<'gc> ClassBody<'gc> {
3022 pub fn new(
3024 metadata: NodeMetadata<'gc>,
3025 body: NodeList<'gc>,
3026 ) -> Self {
3027 ClassBody {
3028 metadata,
3029 body,
3030 }
3031 }
3032}
3033
3034#[derive(Debug)]
3036#[repr(C)]
3037pub struct ClassProperty<'gc> {
3038 pub metadata: NodeMetadata<'gc>,
3040 pub key: &'gc Node<'gc>,
3042 pub value: Option<&'gc Node<'gc>>,
3044 pub computed: Cell<bool>,
3046 pub r#static: Cell<bool>,
3048 pub decorators: NodeList<'gc>,
3050 pub declare: Cell<bool>,
3052 pub optional: Cell<bool>,
3054 pub variance: Option<&'gc Node<'gc>>,
3056 pub type_annotation: Option<&'gc Node<'gc>>,
3058 pub ts_modifiers: Option<&'gc Node<'gc>>,
3060}
3061impl<'gc> ClassProperty<'gc> {
3062 pub fn new(
3064 metadata: NodeMetadata<'gc>,
3065 key: &'gc Node<'gc>,
3066 value: Option<&'gc Node<'gc>>,
3067 computed: bool,
3068 r#static: bool,
3069 decorators: NodeList<'gc>,
3070 declare: bool,
3071 optional: bool,
3072 variance: Option<&'gc Node<'gc>>,
3073 type_annotation: Option<&'gc Node<'gc>>,
3074 ts_modifiers: Option<&'gc Node<'gc>>,
3075 ) -> Self {
3076 ClassProperty {
3077 metadata,
3078 key,
3079 value,
3080 computed: Cell::new(computed),
3081 r#static: Cell::new(r#static),
3082 decorators,
3083 declare: Cell::new(declare),
3084 optional: Cell::new(optional),
3085 variance,
3086 type_annotation,
3087 ts_modifiers,
3088 }
3089 }
3090}
3091
3092#[derive(Debug)]
3094#[repr(C)]
3095pub struct ClassPrivateProperty<'gc> {
3096 pub metadata: NodeMetadata<'gc>,
3098 pub key: &'gc Node<'gc>,
3100 pub value: Option<&'gc Node<'gc>>,
3102 pub r#static: Cell<bool>,
3104 pub decorators: NodeList<'gc>,
3106 pub declare: Cell<bool>,
3108 pub optional: Cell<bool>,
3110 pub variance: Option<&'gc Node<'gc>>,
3112 pub type_annotation: Option<&'gc Node<'gc>>,
3114 pub ts_modifiers: Option<&'gc Node<'gc>>,
3116}
3117impl<'gc> ClassPrivateProperty<'gc> {
3118 pub fn new(
3120 metadata: NodeMetadata<'gc>,
3121 key: &'gc Node<'gc>,
3122 value: Option<&'gc Node<'gc>>,
3123 r#static: bool,
3124 decorators: NodeList<'gc>,
3125 declare: bool,
3126 optional: bool,
3127 variance: Option<&'gc Node<'gc>>,
3128 type_annotation: Option<&'gc Node<'gc>>,
3129 ts_modifiers: Option<&'gc Node<'gc>>,
3130 ) -> Self {
3131 ClassPrivateProperty {
3132 metadata,
3133 key,
3134 value,
3135 r#static: Cell::new(r#static),
3136 decorators,
3137 declare: Cell::new(declare),
3138 optional: Cell::new(optional),
3139 variance,
3140 type_annotation,
3141 ts_modifiers,
3142 }
3143 }
3144}
3145
3146#[derive(Debug)]
3148#[repr(C)]
3149pub struct MethodDefinition<'gc> {
3150 pub metadata: NodeMetadata<'gc>,
3152 pub key: &'gc Node<'gc>,
3154 pub value: &'gc Node<'gc>,
3156 pub kind: Cell<NodeLabel>,
3158 pub computed: Cell<bool>,
3160 pub r#static: Cell<bool>,
3162 pub decorators: NodeList<'gc>,
3164}
3165impl<'gc> MethodDefinition<'gc> {
3166 pub fn new(
3168 metadata: NodeMetadata<'gc>,
3169 key: &'gc Node<'gc>,
3170 value: &'gc Node<'gc>,
3171 kind: NodeLabel,
3172 computed: bool,
3173 r#static: bool,
3174 decorators: NodeList<'gc>,
3175 ) -> Self {
3176 MethodDefinition {
3177 metadata,
3178 key,
3179 value,
3180 kind: Cell::new(kind),
3181 computed: Cell::new(computed),
3182 r#static: Cell::new(r#static),
3183 decorators,
3184 }
3185 }
3186}
3187
3188#[derive(Debug)]
3190#[repr(C)]
3191pub struct ImportDeclaration<'gc> {
3192 pub metadata: NodeMetadata<'gc>,
3194 pub specifiers: NodeList<'gc>,
3196 pub source: &'gc Node<'gc>,
3198 pub attributes: NodeList<'gc>,
3200 pub import_kind: Cell<NodeLabel>,
3202}
3203impl<'gc> ImportDeclaration<'gc> {
3204 pub fn new(
3206 metadata: NodeMetadata<'gc>,
3207 specifiers: NodeList<'gc>,
3208 source: &'gc Node<'gc>,
3209 attributes: NodeList<'gc>,
3210 import_kind: NodeLabel,
3211 ) -> Self {
3212 ImportDeclaration {
3213 metadata,
3214 specifiers,
3215 source,
3216 attributes,
3217 import_kind: Cell::new(import_kind),
3218 }
3219 }
3220}
3221
3222#[derive(Debug)]
3224#[repr(C)]
3225pub struct ImportSpecifier<'gc> {
3226 pub metadata: NodeMetadata<'gc>,
3228 pub imported: &'gc Node<'gc>,
3230 pub local: &'gc Node<'gc>,
3232 pub import_kind: Cell<NodeLabel>,
3234}
3235impl<'gc> ImportSpecifier<'gc> {
3236 pub fn new(
3238 metadata: NodeMetadata<'gc>,
3239 imported: &'gc Node<'gc>,
3240 local: &'gc Node<'gc>,
3241 import_kind: NodeLabel,
3242 ) -> Self {
3243 ImportSpecifier {
3244 metadata,
3245 imported,
3246 local,
3247 import_kind: Cell::new(import_kind),
3248 }
3249 }
3250}
3251
3252#[derive(Debug)]
3254#[repr(C)]
3255pub struct ImportDefaultSpecifier<'gc> {
3256 pub metadata: NodeMetadata<'gc>,
3258 pub local: &'gc Node<'gc>,
3260}
3261impl<'gc> ImportDefaultSpecifier<'gc> {
3262 pub fn new(
3265 metadata: NodeMetadata<'gc>,
3266 local: &'gc Node<'gc>,
3267 ) -> Self {
3268 ImportDefaultSpecifier {
3269 metadata,
3270 local,
3271 }
3272 }
3273}
3274
3275#[derive(Debug)]
3277#[repr(C)]
3278pub struct ImportNamespaceSpecifier<'gc> {
3279 pub metadata: NodeMetadata<'gc>,
3281 pub local: &'gc Node<'gc>,
3283}
3284impl<'gc> ImportNamespaceSpecifier<'gc> {
3285 pub fn new(
3288 metadata: NodeMetadata<'gc>,
3289 local: &'gc Node<'gc>,
3290 ) -> Self {
3291 ImportNamespaceSpecifier {
3292 metadata,
3293 local,
3294 }
3295 }
3296}
3297
3298#[derive(Debug)]
3300#[repr(C)]
3301pub struct ImportAttribute<'gc> {
3302 pub metadata: NodeMetadata<'gc>,
3304 pub key: &'gc Node<'gc>,
3306 pub value: &'gc Node<'gc>,
3308}
3309impl<'gc> ImportAttribute<'gc> {
3310 pub fn new(
3312 metadata: NodeMetadata<'gc>,
3313 key: &'gc Node<'gc>,
3314 value: &'gc Node<'gc>,
3315 ) -> Self {
3316 ImportAttribute {
3317 metadata,
3318 key,
3319 value,
3320 }
3321 }
3322}
3323
3324#[derive(Debug)]
3326#[repr(C)]
3327pub struct ExportNamedDeclaration<'gc> {
3328 pub metadata: NodeMetadata<'gc>,
3330 pub declaration: Option<&'gc Node<'gc>>,
3332 pub specifiers: NodeList<'gc>,
3334 pub source: Option<&'gc Node<'gc>>,
3336 pub export_kind: Cell<NodeLabel>,
3338}
3339impl<'gc> ExportNamedDeclaration<'gc> {
3340 pub fn new(
3343 metadata: NodeMetadata<'gc>,
3344 declaration: Option<&'gc Node<'gc>>,
3345 specifiers: NodeList<'gc>,
3346 source: Option<&'gc Node<'gc>>,
3347 export_kind: NodeLabel,
3348 ) -> Self {
3349 ExportNamedDeclaration {
3350 metadata,
3351 declaration,
3352 specifiers,
3353 source,
3354 export_kind: Cell::new(export_kind),
3355 }
3356 }
3357}
3358
3359#[derive(Debug)]
3361#[repr(C)]
3362pub struct ExportSpecifier<'gc> {
3363 pub metadata: NodeMetadata<'gc>,
3365 pub exported: &'gc Node<'gc>,
3367 pub local: &'gc Node<'gc>,
3369}
3370impl<'gc> ExportSpecifier<'gc> {
3371 pub fn new(
3373 metadata: NodeMetadata<'gc>,
3374 exported: &'gc Node<'gc>,
3375 local: &'gc Node<'gc>,
3376 ) -> Self {
3377 ExportSpecifier {
3378 metadata,
3379 exported,
3380 local,
3381 }
3382 }
3383}
3384
3385#[derive(Debug)]
3387#[repr(C)]
3388pub struct ExportNamespaceSpecifier<'gc> {
3389 pub metadata: NodeMetadata<'gc>,
3391 pub exported: &'gc Node<'gc>,
3393}
3394impl<'gc> ExportNamespaceSpecifier<'gc> {
3395 pub fn new(
3398 metadata: NodeMetadata<'gc>,
3399 exported: &'gc Node<'gc>,
3400 ) -> Self {
3401 ExportNamespaceSpecifier {
3402 metadata,
3403 exported,
3404 }
3405 }
3406}
3407
3408#[derive(Debug)]
3410#[repr(C)]
3411pub struct ExportDefaultDeclaration<'gc> {
3412 pub metadata: NodeMetadata<'gc>,
3414 pub declaration: &'gc Node<'gc>,
3416}
3417impl<'gc> ExportDefaultDeclaration<'gc> {
3418 pub fn new(
3421 metadata: NodeMetadata<'gc>,
3422 declaration: &'gc Node<'gc>,
3423 ) -> Self {
3424 ExportDefaultDeclaration {
3425 metadata,
3426 declaration,
3427 }
3428 }
3429}
3430
3431#[derive(Debug)]
3433#[repr(C)]
3434pub struct ExportAllDeclaration<'gc> {
3435 pub metadata: NodeMetadata<'gc>,
3437 pub source: &'gc Node<'gc>,
3439 pub export_kind: Cell<NodeLabel>,
3441}
3442impl<'gc> ExportAllDeclaration<'gc> {
3443 pub fn new(
3445 metadata: NodeMetadata<'gc>,
3446 source: &'gc Node<'gc>,
3447 export_kind: NodeLabel,
3448 ) -> Self {
3449 ExportAllDeclaration {
3450 metadata,
3451 source,
3452 export_kind: Cell::new(export_kind),
3453 }
3454 }
3455}
3456
3457#[derive(Debug)]
3459#[repr(C)]
3460pub struct ObjectPattern<'gc> {
3461 pub metadata: NodeMetadata<'gc>,
3463 pub properties: NodeList<'gc>,
3465 pub type_annotation: Option<&'gc Node<'gc>>,
3467}
3468impl<'gc> ObjectPattern<'gc> {
3469 pub fn new(
3471 metadata: NodeMetadata<'gc>,
3472 properties: NodeList<'gc>,
3473 type_annotation: Option<&'gc Node<'gc>>,
3474 ) -> Self {
3475 ObjectPattern {
3476 metadata,
3477 properties,
3478 type_annotation,
3479 }
3480 }
3481}
3482
3483#[derive(Debug)]
3485#[repr(C)]
3486pub struct ArrayPattern<'gc> {
3487 pub metadata: NodeMetadata<'gc>,
3489 pub elements: NodeList<'gc>,
3491 pub type_annotation: Option<&'gc Node<'gc>>,
3493}
3494impl<'gc> ArrayPattern<'gc> {
3495 pub fn new(
3497 metadata: NodeMetadata<'gc>,
3498 elements: NodeList<'gc>,
3499 type_annotation: Option<&'gc Node<'gc>>,
3500 ) -> Self {
3501 ArrayPattern {
3502 metadata,
3503 elements,
3504 type_annotation,
3505 }
3506 }
3507}
3508
3509#[derive(Debug)]
3511#[repr(C)]
3512pub struct RestElement<'gc> {
3513 pub metadata: NodeMetadata<'gc>,
3515 pub argument: &'gc Node<'gc>,
3517}
3518impl<'gc> RestElement<'gc> {
3519 pub fn new(
3521 metadata: NodeMetadata<'gc>,
3522 argument: &'gc Node<'gc>,
3523 ) -> Self {
3524 RestElement {
3525 metadata,
3526 argument,
3527 }
3528 }
3529}
3530
3531#[derive(Debug)]
3533#[repr(C)]
3534pub struct AssignmentPattern<'gc> {
3535 pub metadata: NodeMetadata<'gc>,
3537 pub left: &'gc Node<'gc>,
3539 pub right: &'gc Node<'gc>,
3541}
3542impl<'gc> AssignmentPattern<'gc> {
3543 pub fn new(
3545 metadata: NodeMetadata<'gc>,
3546 left: &'gc Node<'gc>,
3547 right: &'gc Node<'gc>,
3548 ) -> Self {
3549 AssignmentPattern {
3550 metadata,
3551 left,
3552 right,
3553 }
3554 }
3555}
3556
3557#[derive(Debug)]
3559#[repr(C)]
3560pub struct MatchStatementCase<'gc> {
3561 pub metadata: NodeMetadata<'gc>,
3563 pub pattern: &'gc Node<'gc>,
3565 pub body: &'gc Node<'gc>,
3567 pub guard: Option<&'gc Node<'gc>>,
3569}
3570impl<'gc> MatchStatementCase<'gc> {
3571 pub fn new(
3573 metadata: NodeMetadata<'gc>,
3574 pattern: &'gc Node<'gc>,
3575 body: &'gc Node<'gc>,
3576 guard: Option<&'gc Node<'gc>>,
3577 ) -> Self {
3578 MatchStatementCase {
3579 metadata,
3580 pattern,
3581 body,
3582 guard,
3583 }
3584 }
3585}
3586
3587#[derive(Debug)]
3589#[repr(C)]
3590pub struct MatchExpression<'gc> {
3591 pub metadata: NodeMetadata<'gc>,
3593 pub argument: &'gc Node<'gc>,
3595 pub cases: NodeList<'gc>,
3597}
3598impl<'gc> MatchExpression<'gc> {
3599 pub fn new(
3601 metadata: NodeMetadata<'gc>,
3602 argument: &'gc Node<'gc>,
3603 cases: NodeList<'gc>,
3604 ) -> Self {
3605 MatchExpression {
3606 metadata,
3607 argument,
3608 cases,
3609 }
3610 }
3611}
3612
3613#[derive(Debug)]
3615#[repr(C)]
3616pub struct MatchExpressionCase<'gc> {
3617 pub metadata: NodeMetadata<'gc>,
3619 pub pattern: &'gc Node<'gc>,
3621 pub body: &'gc Node<'gc>,
3623 pub guard: Option<&'gc Node<'gc>>,
3625}
3626impl<'gc> MatchExpressionCase<'gc> {
3627 pub fn new(
3629 metadata: NodeMetadata<'gc>,
3630 pattern: &'gc Node<'gc>,
3631 body: &'gc Node<'gc>,
3632 guard: Option<&'gc Node<'gc>>,
3633 ) -> Self {
3634 MatchExpressionCase {
3635 metadata,
3636 pattern,
3637 body,
3638 guard,
3639 }
3640 }
3641}
3642
3643#[derive(Debug)]
3645#[repr(C)]
3646pub struct MatchWildcardPattern<'gc> {
3647 pub metadata: NodeMetadata<'gc>,
3649}
3650impl<'gc> MatchWildcardPattern<'gc> {
3651 pub fn new(
3653 metadata: NodeMetadata<'gc>,
3654 ) -> Self {
3655 MatchWildcardPattern {
3656 metadata,
3657 }
3658 }
3659}
3660
3661#[derive(Debug)]
3663#[repr(C)]
3664pub struct MatchLiteralPattern<'gc> {
3665 pub metadata: NodeMetadata<'gc>,
3667 pub literal: &'gc Node<'gc>,
3669}
3670impl<'gc> MatchLiteralPattern<'gc> {
3671 pub fn new(
3673 metadata: NodeMetadata<'gc>,
3674 literal: &'gc Node<'gc>,
3675 ) -> Self {
3676 MatchLiteralPattern {
3677 metadata,
3678 literal,
3679 }
3680 }
3681}
3682
3683#[derive(Debug)]
3685#[repr(C)]
3686pub struct MatchUnaryPattern<'gc> {
3687 pub metadata: NodeMetadata<'gc>,
3689 pub argument: &'gc Node<'gc>,
3691 pub operator: Cell<NodeLabel>,
3693}
3694impl<'gc> MatchUnaryPattern<'gc> {
3695 pub fn new(
3697 metadata: NodeMetadata<'gc>,
3698 argument: &'gc Node<'gc>,
3699 operator: NodeLabel,
3700 ) -> Self {
3701 MatchUnaryPattern {
3702 metadata,
3703 argument,
3704 operator: Cell::new(operator),
3705 }
3706 }
3707}
3708
3709#[derive(Debug)]
3711#[repr(C)]
3712pub struct MatchIdentifierPattern<'gc> {
3713 pub metadata: NodeMetadata<'gc>,
3715 pub id: &'gc Node<'gc>,
3717}
3718impl<'gc> MatchIdentifierPattern<'gc> {
3719 pub fn new(
3722 metadata: NodeMetadata<'gc>,
3723 id: &'gc Node<'gc>,
3724 ) -> Self {
3725 MatchIdentifierPattern {
3726 metadata,
3727 id,
3728 }
3729 }
3730}
3731
3732#[derive(Debug)]
3734#[repr(C)]
3735pub struct MatchBindingPattern<'gc> {
3736 pub metadata: NodeMetadata<'gc>,
3738 pub id: &'gc Node<'gc>,
3740 pub kind: Cell<NodeLabel>,
3742}
3743impl<'gc> MatchBindingPattern<'gc> {
3744 pub fn new(
3746 metadata: NodeMetadata<'gc>,
3747 id: &'gc Node<'gc>,
3748 kind: NodeLabel,
3749 ) -> Self {
3750 MatchBindingPattern {
3751 metadata,
3752 id,
3753 kind: Cell::new(kind),
3754 }
3755 }
3756}
3757
3758#[derive(Debug)]
3760#[repr(C)]
3761pub struct MatchObjectPattern<'gc> {
3762 pub metadata: NodeMetadata<'gc>,
3764 pub properties: NodeList<'gc>,
3766 pub rest: Option<&'gc Node<'gc>>,
3768}
3769impl<'gc> MatchObjectPattern<'gc> {
3770 pub fn new(
3772 metadata: NodeMetadata<'gc>,
3773 properties: NodeList<'gc>,
3774 rest: Option<&'gc Node<'gc>>,
3775 ) -> Self {
3776 MatchObjectPattern {
3777 metadata,
3778 properties,
3779 rest,
3780 }
3781 }
3782}
3783
3784#[derive(Debug)]
3786#[repr(C)]
3787pub struct MatchArrayPattern<'gc> {
3788 pub metadata: NodeMetadata<'gc>,
3790 pub elements: NodeList<'gc>,
3792 pub rest: Option<&'gc Node<'gc>>,
3794}
3795impl<'gc> MatchArrayPattern<'gc> {
3796 pub fn new(
3798 metadata: NodeMetadata<'gc>,
3799 elements: NodeList<'gc>,
3800 rest: Option<&'gc Node<'gc>>,
3801 ) -> Self {
3802 MatchArrayPattern {
3803 metadata,
3804 elements,
3805 rest,
3806 }
3807 }
3808}
3809
3810#[derive(Debug)]
3812#[repr(C)]
3813pub struct MatchOrPattern<'gc> {
3814 pub metadata: NodeMetadata<'gc>,
3816 pub patterns: NodeList<'gc>,
3818}
3819impl<'gc> MatchOrPattern<'gc> {
3820 pub fn new(
3822 metadata: NodeMetadata<'gc>,
3823 patterns: NodeList<'gc>,
3824 ) -> Self {
3825 MatchOrPattern {
3826 metadata,
3827 patterns,
3828 }
3829 }
3830}
3831
3832#[derive(Debug)]
3834#[repr(C)]
3835pub struct MatchAsPattern<'gc> {
3836 pub metadata: NodeMetadata<'gc>,
3838 pub pattern: &'gc Node<'gc>,
3840 pub target: &'gc Node<'gc>,
3842}
3843impl<'gc> MatchAsPattern<'gc> {
3844 pub fn new(
3846 metadata: NodeMetadata<'gc>,
3847 pattern: &'gc Node<'gc>,
3848 target: &'gc Node<'gc>,
3849 ) -> Self {
3850 MatchAsPattern {
3851 metadata,
3852 pattern,
3853 target,
3854 }
3855 }
3856}
3857
3858#[derive(Debug)]
3860#[repr(C)]
3861pub struct MatchMemberPattern<'gc> {
3862 pub metadata: NodeMetadata<'gc>,
3864 pub base: &'gc Node<'gc>,
3866 pub property: &'gc Node<'gc>,
3868}
3869impl<'gc> MatchMemberPattern<'gc> {
3870 pub fn new(
3872 metadata: NodeMetadata<'gc>,
3873 base: &'gc Node<'gc>,
3874 property: &'gc Node<'gc>,
3875 ) -> Self {
3876 MatchMemberPattern {
3877 metadata,
3878 base,
3879 property,
3880 }
3881 }
3882}
3883
3884#[derive(Debug)]
3886#[repr(C)]
3887pub struct MatchInstancePattern<'gc> {
3888 pub metadata: NodeMetadata<'gc>,
3890 pub target_constructor: &'gc Node<'gc>,
3892 pub properties: &'gc Node<'gc>,
3894}
3895impl<'gc> MatchInstancePattern<'gc> {
3896 pub fn new(
3898 metadata: NodeMetadata<'gc>,
3899 target_constructor: &'gc Node<'gc>,
3900 properties: &'gc Node<'gc>,
3901 ) -> Self {
3902 MatchInstancePattern {
3903 metadata,
3904 target_constructor,
3905 properties,
3906 }
3907 }
3908}
3909
3910#[derive(Debug)]
3912#[repr(C)]
3913pub struct MatchObjectPatternProperty<'gc> {
3914 pub metadata: NodeMetadata<'gc>,
3916 pub key: &'gc Node<'gc>,
3918 pub pattern: &'gc Node<'gc>,
3920 pub shorthand: Cell<bool>,
3922}
3923impl<'gc> MatchObjectPatternProperty<'gc> {
3924 pub fn new(
3927 metadata: NodeMetadata<'gc>,
3928 key: &'gc Node<'gc>,
3929 pattern: &'gc Node<'gc>,
3930 shorthand: bool,
3931 ) -> Self {
3932 MatchObjectPatternProperty {
3933 metadata,
3934 key,
3935 pattern,
3936 shorthand: Cell::new(shorthand),
3937 }
3938 }
3939}
3940
3941#[derive(Debug)]
3943#[repr(C)]
3944pub struct MatchInstanceObjectPattern<'gc> {
3945 pub metadata: NodeMetadata<'gc>,
3947 pub properties: NodeList<'gc>,
3949 pub rest: Option<&'gc Node<'gc>>,
3951}
3952impl<'gc> MatchInstanceObjectPattern<'gc> {
3953 pub fn new(
3956 metadata: NodeMetadata<'gc>,
3957 properties: NodeList<'gc>,
3958 rest: Option<&'gc Node<'gc>>,
3959 ) -> Self {
3960 MatchInstanceObjectPattern {
3961 metadata,
3962 properties,
3963 rest,
3964 }
3965 }
3966}
3967
3968#[derive(Debug)]
3970#[repr(C)]
3971pub struct MatchRestPattern<'gc> {
3972 pub metadata: NodeMetadata<'gc>,
3974 pub argument: Option<&'gc Node<'gc>>,
3976}
3977impl<'gc> MatchRestPattern<'gc> {
3978 pub fn new(
3980 metadata: NodeMetadata<'gc>,
3981 argument: Option<&'gc Node<'gc>>,
3982 ) -> Self {
3983 MatchRestPattern {
3984 metadata,
3985 argument,
3986 }
3987 }
3988}
3989
3990#[derive(Debug)]
3992#[repr(C)]
3993pub struct JSXIdentifier<'gc> {
3994 pub metadata: NodeMetadata<'gc>,
3996 pub name: Cell<NodeLabel>,
3998}
3999impl<'gc> JSXIdentifier<'gc> {
4000 pub fn new(
4002 metadata: NodeMetadata<'gc>,
4003 name: NodeLabel,
4004 ) -> Self {
4005 JSXIdentifier {
4006 metadata,
4007 name: Cell::new(name),
4008 }
4009 }
4010}
4011
4012#[derive(Debug)]
4014#[repr(C)]
4015pub struct JSXMemberExpression<'gc> {
4016 pub metadata: NodeMetadata<'gc>,
4018 pub object: &'gc Node<'gc>,
4020 pub property: &'gc Node<'gc>,
4022}
4023impl<'gc> JSXMemberExpression<'gc> {
4024 pub fn new(
4026 metadata: NodeMetadata<'gc>,
4027 object: &'gc Node<'gc>,
4028 property: &'gc Node<'gc>,
4029 ) -> Self {
4030 JSXMemberExpression {
4031 metadata,
4032 object,
4033 property,
4034 }
4035 }
4036}
4037
4038#[derive(Debug)]
4040#[repr(C)]
4041pub struct JSXNamespacedName<'gc> {
4042 pub metadata: NodeMetadata<'gc>,
4044 pub namespace: &'gc Node<'gc>,
4046 pub name: &'gc Node<'gc>,
4048}
4049impl<'gc> JSXNamespacedName<'gc> {
4050 pub fn new(
4052 metadata: NodeMetadata<'gc>,
4053 namespace: &'gc Node<'gc>,
4054 name: &'gc Node<'gc>,
4055 ) -> Self {
4056 JSXNamespacedName {
4057 metadata,
4058 namespace,
4059 name,
4060 }
4061 }
4062}
4063
4064#[derive(Debug)]
4066#[repr(C)]
4067pub struct JSXEmptyExpression<'gc> {
4068 pub metadata: NodeMetadata<'gc>,
4070}
4071impl<'gc> JSXEmptyExpression<'gc> {
4072 pub fn new(
4074 metadata: NodeMetadata<'gc>,
4075 ) -> Self {
4076 JSXEmptyExpression {
4077 metadata,
4078 }
4079 }
4080}
4081
4082#[derive(Debug)]
4084#[repr(C)]
4085pub struct JSXExpressionContainer<'gc> {
4086 pub metadata: NodeMetadata<'gc>,
4088 pub expression: &'gc Node<'gc>,
4090}
4091impl<'gc> JSXExpressionContainer<'gc> {
4092 pub fn new(
4095 metadata: NodeMetadata<'gc>,
4096 expression: &'gc Node<'gc>,
4097 ) -> Self {
4098 JSXExpressionContainer {
4099 metadata,
4100 expression,
4101 }
4102 }
4103}
4104
4105#[derive(Debug)]
4107#[repr(C)]
4108pub struct JSXSpreadChild<'gc> {
4109 pub metadata: NodeMetadata<'gc>,
4111 pub expression: &'gc Node<'gc>,
4113}
4114impl<'gc> JSXSpreadChild<'gc> {
4115 pub fn new(
4117 metadata: NodeMetadata<'gc>,
4118 expression: &'gc Node<'gc>,
4119 ) -> Self {
4120 JSXSpreadChild {
4121 metadata,
4122 expression,
4123 }
4124 }
4125}
4126
4127#[derive(Debug)]
4129#[repr(C)]
4130pub struct JSXOpeningElement<'gc> {
4131 pub metadata: NodeMetadata<'gc>,
4133 pub name: &'gc Node<'gc>,
4135 pub attributes: NodeList<'gc>,
4137 pub self_closing: Cell<bool>,
4139 pub type_arguments: Option<&'gc Node<'gc>>,
4141}
4142impl<'gc> JSXOpeningElement<'gc> {
4143 pub fn new(
4145 metadata: NodeMetadata<'gc>,
4146 name: &'gc Node<'gc>,
4147 attributes: NodeList<'gc>,
4148 self_closing: bool,
4149 type_arguments: Option<&'gc Node<'gc>>,
4150 ) -> Self {
4151 JSXOpeningElement {
4152 metadata,
4153 name,
4154 attributes,
4155 self_closing: Cell::new(self_closing),
4156 type_arguments,
4157 }
4158 }
4159}
4160
4161#[derive(Debug)]
4163#[repr(C)]
4164pub struct JSXClosingElement<'gc> {
4165 pub metadata: NodeMetadata<'gc>,
4167 pub name: &'gc Node<'gc>,
4169}
4170impl<'gc> JSXClosingElement<'gc> {
4171 pub fn new(
4173 metadata: NodeMetadata<'gc>,
4174 name: &'gc Node<'gc>,
4175 ) -> Self {
4176 JSXClosingElement {
4177 metadata,
4178 name,
4179 }
4180 }
4181}
4182
4183#[derive(Debug)]
4185#[repr(C)]
4186pub struct JSXAttribute<'gc> {
4187 pub metadata: NodeMetadata<'gc>,
4189 pub name: &'gc Node<'gc>,
4191 pub value: Option<&'gc Node<'gc>>,
4193}
4194impl<'gc> JSXAttribute<'gc> {
4195 pub fn new(
4197 metadata: NodeMetadata<'gc>,
4198 name: &'gc Node<'gc>,
4199 value: Option<&'gc Node<'gc>>,
4200 ) -> Self {
4201 JSXAttribute {
4202 metadata,
4203 name,
4204 value,
4205 }
4206 }
4207}
4208
4209#[derive(Debug)]
4211#[repr(C)]
4212pub struct JSXSpreadAttribute<'gc> {
4213 pub metadata: NodeMetadata<'gc>,
4215 pub argument: &'gc Node<'gc>,
4217}
4218impl<'gc> JSXSpreadAttribute<'gc> {
4219 pub fn new(
4221 metadata: NodeMetadata<'gc>,
4222 argument: &'gc Node<'gc>,
4223 ) -> Self {
4224 JSXSpreadAttribute {
4225 metadata,
4226 argument,
4227 }
4228 }
4229}
4230
4231#[derive(Debug)]
4233#[repr(C)]
4234pub struct JSXStringLiteral<'gc> {
4235 pub metadata: NodeMetadata<'gc>,
4237 pub value: Cell<NodeString>,
4239 pub raw: Cell<NodeLabel>,
4241}
4242impl<'gc> JSXStringLiteral<'gc> {
4243 pub fn new(
4245 metadata: NodeMetadata<'gc>,
4246 value: NodeString,
4247 raw: NodeLabel,
4248 ) -> Self {
4249 JSXStringLiteral {
4250 metadata,
4251 value: Cell::new(value),
4252 raw: Cell::new(raw),
4253 }
4254 }
4255}
4256
4257#[derive(Debug)]
4259#[repr(C)]
4260pub struct JSXText<'gc> {
4261 pub metadata: NodeMetadata<'gc>,
4263 pub value: Cell<NodeString>,
4265 pub raw: Cell<NodeLabel>,
4267}
4268impl<'gc> JSXText<'gc> {
4269 pub fn new(
4271 metadata: NodeMetadata<'gc>,
4272 value: NodeString,
4273 raw: NodeLabel,
4274 ) -> Self {
4275 JSXText {
4276 metadata,
4277 value: Cell::new(value),
4278 raw: Cell::new(raw),
4279 }
4280 }
4281}
4282
4283#[derive(Debug)]
4285#[repr(C)]
4286pub struct JSXElement<'gc> {
4287 pub metadata: NodeMetadata<'gc>,
4289 pub opening_element: &'gc Node<'gc>,
4291 pub children: NodeList<'gc>,
4293 pub closing_element: Option<&'gc Node<'gc>>,
4295}
4296impl<'gc> JSXElement<'gc> {
4297 pub fn new(
4299 metadata: NodeMetadata<'gc>,
4300 opening_element: &'gc Node<'gc>,
4301 children: NodeList<'gc>,
4302 closing_element: Option<&'gc Node<'gc>>,
4303 ) -> Self {
4304 JSXElement {
4305 metadata,
4306 opening_element,
4307 children,
4308 closing_element,
4309 }
4310 }
4311}
4312
4313#[derive(Debug)]
4315#[repr(C)]
4316pub struct JSXFragment<'gc> {
4317 pub metadata: NodeMetadata<'gc>,
4319 pub opening_fragment: &'gc Node<'gc>,
4321 pub children: NodeList<'gc>,
4323 pub closing_fragment: &'gc Node<'gc>,
4325}
4326impl<'gc> JSXFragment<'gc> {
4327 pub fn new(
4329 metadata: NodeMetadata<'gc>,
4330 opening_fragment: &'gc Node<'gc>,
4331 children: NodeList<'gc>,
4332 closing_fragment: &'gc Node<'gc>,
4333 ) -> Self {
4334 JSXFragment {
4335 metadata,
4336 opening_fragment,
4337 children,
4338 closing_fragment,
4339 }
4340 }
4341}
4342
4343#[derive(Debug)]
4345#[repr(C)]
4346pub struct JSXOpeningFragment<'gc> {
4347 pub metadata: NodeMetadata<'gc>,
4349}
4350impl<'gc> JSXOpeningFragment<'gc> {
4351 pub fn new(
4353 metadata: NodeMetadata<'gc>,
4354 ) -> Self {
4355 JSXOpeningFragment {
4356 metadata,
4357 }
4358 }
4359}
4360
4361#[derive(Debug)]
4363#[repr(C)]
4364pub struct JSXClosingFragment<'gc> {
4365 pub metadata: NodeMetadata<'gc>,
4367}
4368impl<'gc> JSXClosingFragment<'gc> {
4369 pub fn new(
4371 metadata: NodeMetadata<'gc>,
4372 ) -> Self {
4373 JSXClosingFragment {
4374 metadata,
4375 }
4376 }
4377}
4378
4379#[derive(Debug)]
4381#[repr(C)]
4382pub struct ExistsTypeAnnotation<'gc> {
4383 pub metadata: NodeMetadata<'gc>,
4385}
4386impl<'gc> ExistsTypeAnnotation<'gc> {
4387 pub fn new(
4389 metadata: NodeMetadata<'gc>,
4390 ) -> Self {
4391 ExistsTypeAnnotation {
4392 metadata,
4393 }
4394 }
4395}
4396
4397#[derive(Debug)]
4399#[repr(C)]
4400pub struct EmptyTypeAnnotation<'gc> {
4401 pub metadata: NodeMetadata<'gc>,
4403}
4404impl<'gc> EmptyTypeAnnotation<'gc> {
4405 pub fn new(
4407 metadata: NodeMetadata<'gc>,
4408 ) -> Self {
4409 EmptyTypeAnnotation {
4410 metadata,
4411 }
4412 }
4413}
4414
4415#[derive(Debug)]
4417#[repr(C)]
4418pub struct StringTypeAnnotation<'gc> {
4419 pub metadata: NodeMetadata<'gc>,
4421}
4422impl<'gc> StringTypeAnnotation<'gc> {
4423 pub fn new(
4425 metadata: NodeMetadata<'gc>,
4426 ) -> Self {
4427 StringTypeAnnotation {
4428 metadata,
4429 }
4430 }
4431}
4432
4433#[derive(Debug)]
4435#[repr(C)]
4436pub struct NumberTypeAnnotation<'gc> {
4437 pub metadata: NodeMetadata<'gc>,
4439}
4440impl<'gc> NumberTypeAnnotation<'gc> {
4441 pub fn new(
4443 metadata: NodeMetadata<'gc>,
4444 ) -> Self {
4445 NumberTypeAnnotation {
4446 metadata,
4447 }
4448 }
4449}
4450
4451#[derive(Debug)]
4453#[repr(C)]
4454pub struct StringLiteralTypeAnnotation<'gc> {
4455 pub metadata: NodeMetadata<'gc>,
4457 pub value: Cell<NodeString>,
4459 pub raw: Cell<NodeString>,
4461}
4462impl<'gc> StringLiteralTypeAnnotation<'gc> {
4463 pub fn new(
4466 metadata: NodeMetadata<'gc>,
4467 value: NodeString,
4468 raw: NodeString,
4469 ) -> Self {
4470 StringLiteralTypeAnnotation {
4471 metadata,
4472 value: Cell::new(value),
4473 raw: Cell::new(raw),
4474 }
4475 }
4476}
4477
4478#[derive(Debug)]
4480#[repr(C)]
4481pub struct NumberLiteralTypeAnnotation<'gc> {
4482 pub metadata: NodeMetadata<'gc>,
4484 pub value: Cell<f64>,
4486 pub raw: Cell<NodeLabel>,
4488}
4489impl<'gc> NumberLiteralTypeAnnotation<'gc> {
4490 pub fn new(
4493 metadata: NodeMetadata<'gc>,
4494 value: f64,
4495 raw: NodeLabel,
4496 ) -> Self {
4497 NumberLiteralTypeAnnotation {
4498 metadata,
4499 value: Cell::new(value),
4500 raw: Cell::new(raw),
4501 }
4502 }
4503}
4504
4505#[derive(Debug)]
4507#[repr(C)]
4508pub struct BigIntLiteralTypeAnnotation<'gc> {
4509 pub metadata: NodeMetadata<'gc>,
4511 pub raw: Cell<NodeLabel>,
4513}
4514impl<'gc> BigIntLiteralTypeAnnotation<'gc> {
4515 pub fn new(
4518 metadata: NodeMetadata<'gc>,
4519 raw: NodeLabel,
4520 ) -> Self {
4521 BigIntLiteralTypeAnnotation {
4522 metadata,
4523 raw: Cell::new(raw),
4524 }
4525 }
4526}
4527
4528#[derive(Debug)]
4530#[repr(C)]
4531pub struct BooleanTypeAnnotation<'gc> {
4532 pub metadata: NodeMetadata<'gc>,
4534}
4535impl<'gc> BooleanTypeAnnotation<'gc> {
4536 pub fn new(
4538 metadata: NodeMetadata<'gc>,
4539 ) -> Self {
4540 BooleanTypeAnnotation {
4541 metadata,
4542 }
4543 }
4544}
4545
4546#[derive(Debug)]
4548#[repr(C)]
4549pub struct BooleanLiteralTypeAnnotation<'gc> {
4550 pub metadata: NodeMetadata<'gc>,
4552 pub value: Cell<bool>,
4554 pub raw: Cell<NodeLabel>,
4556}
4557impl<'gc> BooleanLiteralTypeAnnotation<'gc> {
4558 pub fn new(
4561 metadata: NodeMetadata<'gc>,
4562 value: bool,
4563 raw: NodeLabel,
4564 ) -> Self {
4565 BooleanLiteralTypeAnnotation {
4566 metadata,
4567 value: Cell::new(value),
4568 raw: Cell::new(raw),
4569 }
4570 }
4571}
4572
4573#[derive(Debug)]
4575#[repr(C)]
4576pub struct NullLiteralTypeAnnotation<'gc> {
4577 pub metadata: NodeMetadata<'gc>,
4579}
4580impl<'gc> NullLiteralTypeAnnotation<'gc> {
4581 pub fn new(
4584 metadata: NodeMetadata<'gc>,
4585 ) -> Self {
4586 NullLiteralTypeAnnotation {
4587 metadata,
4588 }
4589 }
4590}
4591
4592#[derive(Debug)]
4594#[repr(C)]
4595pub struct SymbolTypeAnnotation<'gc> {
4596 pub metadata: NodeMetadata<'gc>,
4598}
4599impl<'gc> SymbolTypeAnnotation<'gc> {
4600 pub fn new(
4602 metadata: NodeMetadata<'gc>,
4603 ) -> Self {
4604 SymbolTypeAnnotation {
4605 metadata,
4606 }
4607 }
4608}
4609
4610#[derive(Debug)]
4612#[repr(C)]
4613pub struct AnyTypeAnnotation<'gc> {
4614 pub metadata: NodeMetadata<'gc>,
4616}
4617impl<'gc> AnyTypeAnnotation<'gc> {
4618 pub fn new(
4620 metadata: NodeMetadata<'gc>,
4621 ) -> Self {
4622 AnyTypeAnnotation {
4623 metadata,
4624 }
4625 }
4626}
4627
4628#[derive(Debug)]
4630#[repr(C)]
4631pub struct MixedTypeAnnotation<'gc> {
4632 pub metadata: NodeMetadata<'gc>,
4634}
4635impl<'gc> MixedTypeAnnotation<'gc> {
4636 pub fn new(
4638 metadata: NodeMetadata<'gc>,
4639 ) -> Self {
4640 MixedTypeAnnotation {
4641 metadata,
4642 }
4643 }
4644}
4645
4646#[derive(Debug)]
4648#[repr(C)]
4649pub struct BigIntTypeAnnotation<'gc> {
4650 pub metadata: NodeMetadata<'gc>,
4652}
4653impl<'gc> BigIntTypeAnnotation<'gc> {
4654 pub fn new(
4656 metadata: NodeMetadata<'gc>,
4657 ) -> Self {
4658 BigIntTypeAnnotation {
4659 metadata,
4660 }
4661 }
4662}
4663
4664#[derive(Debug)]
4666#[repr(C)]
4667pub struct VoidTypeAnnotation<'gc> {
4668 pub metadata: NodeMetadata<'gc>,
4670}
4671impl<'gc> VoidTypeAnnotation<'gc> {
4672 pub fn new(
4674 metadata: NodeMetadata<'gc>,
4675 ) -> Self {
4676 VoidTypeAnnotation {
4677 metadata,
4678 }
4679 }
4680}
4681
4682#[derive(Debug)]
4684#[repr(C)]
4685pub struct NeverTypeAnnotation<'gc> {
4686 pub metadata: NodeMetadata<'gc>,
4688}
4689impl<'gc> NeverTypeAnnotation<'gc> {
4690 pub fn new(
4692 metadata: NodeMetadata<'gc>,
4693 ) -> Self {
4694 NeverTypeAnnotation {
4695 metadata,
4696 }
4697 }
4698}
4699
4700#[derive(Debug)]
4702#[repr(C)]
4703pub struct UnknownTypeAnnotation<'gc> {
4704 pub metadata: NodeMetadata<'gc>,
4706}
4707impl<'gc> UnknownTypeAnnotation<'gc> {
4708 pub fn new(
4710 metadata: NodeMetadata<'gc>,
4711 ) -> Self {
4712 UnknownTypeAnnotation {
4713 metadata,
4714 }
4715 }
4716}
4717
4718#[derive(Debug)]
4720#[repr(C)]
4721pub struct UndefinedTypeAnnotation<'gc> {
4722 pub metadata: NodeMetadata<'gc>,
4724}
4725impl<'gc> UndefinedTypeAnnotation<'gc> {
4726 pub fn new(
4729 metadata: NodeMetadata<'gc>,
4730 ) -> Self {
4731 UndefinedTypeAnnotation {
4732 metadata,
4733 }
4734 }
4735}
4736
4737#[derive(Debug)]
4739#[repr(C)]
4740pub struct FunctionTypeAnnotation<'gc> {
4741 pub metadata: NodeMetadata<'gc>,
4743 pub params: NodeList<'gc>,
4745 pub this: Option<&'gc Node<'gc>>,
4747 pub return_type: &'gc Node<'gc>,
4749 pub rest: Option<&'gc Node<'gc>>,
4751 pub type_parameters: Option<&'gc Node<'gc>>,
4753}
4754impl<'gc> FunctionTypeAnnotation<'gc> {
4755 pub fn new(
4758 metadata: NodeMetadata<'gc>,
4759 params: NodeList<'gc>,
4760 this: Option<&'gc Node<'gc>>,
4761 return_type: &'gc Node<'gc>,
4762 rest: Option<&'gc Node<'gc>>,
4763 type_parameters: Option<&'gc Node<'gc>>,
4764 ) -> Self {
4765 FunctionTypeAnnotation {
4766 metadata,
4767 params,
4768 this,
4769 return_type,
4770 rest,
4771 type_parameters,
4772 }
4773 }
4774}
4775
4776#[derive(Debug)]
4778#[repr(C)]
4779pub struct HookTypeAnnotation<'gc> {
4780 pub metadata: NodeMetadata<'gc>,
4782 pub params: NodeList<'gc>,
4784 pub return_type: &'gc Node<'gc>,
4786 pub rest: Option<&'gc Node<'gc>>,
4788 pub type_parameters: Option<&'gc Node<'gc>>,
4790}
4791impl<'gc> HookTypeAnnotation<'gc> {
4792 pub fn new(
4794 metadata: NodeMetadata<'gc>,
4795 params: NodeList<'gc>,
4796 return_type: &'gc Node<'gc>,
4797 rest: Option<&'gc Node<'gc>>,
4798 type_parameters: Option<&'gc Node<'gc>>,
4799 ) -> Self {
4800 HookTypeAnnotation {
4801 metadata,
4802 params,
4803 return_type,
4804 rest,
4805 type_parameters,
4806 }
4807 }
4808}
4809
4810#[derive(Debug)]
4812#[repr(C)]
4813pub struct FunctionTypeParam<'gc> {
4814 pub metadata: NodeMetadata<'gc>,
4816 pub name: Option<&'gc Node<'gc>>,
4818 pub type_annotation: &'gc Node<'gc>,
4820 pub optional: Cell<bool>,
4822}
4823impl<'gc> FunctionTypeParam<'gc> {
4824 pub fn new(
4826 metadata: NodeMetadata<'gc>,
4827 name: Option<&'gc Node<'gc>>,
4828 type_annotation: &'gc Node<'gc>,
4829 optional: bool,
4830 ) -> Self {
4831 FunctionTypeParam {
4832 metadata,
4833 name,
4834 type_annotation,
4835 optional: Cell::new(optional),
4836 }
4837 }
4838}
4839
4840#[derive(Debug)]
4842#[repr(C)]
4843pub struct ComponentTypeAnnotation<'gc> {
4844 pub metadata: NodeMetadata<'gc>,
4846 pub params: NodeList<'gc>,
4848 pub rest: Option<&'gc Node<'gc>>,
4850 pub type_parameters: Option<&'gc Node<'gc>>,
4852 pub renders_type: Option<&'gc Node<'gc>>,
4854}
4855impl<'gc> ComponentTypeAnnotation<'gc> {
4856 pub fn new(
4859 metadata: NodeMetadata<'gc>,
4860 params: NodeList<'gc>,
4861 rest: Option<&'gc Node<'gc>>,
4862 type_parameters: Option<&'gc Node<'gc>>,
4863 renders_type: Option<&'gc Node<'gc>>,
4864 ) -> Self {
4865 ComponentTypeAnnotation {
4866 metadata,
4867 params,
4868 rest,
4869 type_parameters,
4870 renders_type,
4871 }
4872 }
4873}
4874
4875#[derive(Debug)]
4877#[repr(C)]
4878pub struct ComponentTypeParameter<'gc> {
4879 pub metadata: NodeMetadata<'gc>,
4881 pub name: Option<&'gc Node<'gc>>,
4883 pub type_annotation: &'gc Node<'gc>,
4885 pub optional: Cell<bool>,
4887}
4888impl<'gc> ComponentTypeParameter<'gc> {
4889 pub fn new(
4892 metadata: NodeMetadata<'gc>,
4893 name: Option<&'gc Node<'gc>>,
4894 type_annotation: &'gc Node<'gc>,
4895 optional: bool,
4896 ) -> Self {
4897 ComponentTypeParameter {
4898 metadata,
4899 name,
4900 type_annotation,
4901 optional: Cell::new(optional),
4902 }
4903 }
4904}
4905
4906#[derive(Debug)]
4908#[repr(C)]
4909pub struct NullableTypeAnnotation<'gc> {
4910 pub metadata: NodeMetadata<'gc>,
4912 pub type_annotation: &'gc Node<'gc>,
4914}
4915impl<'gc> NullableTypeAnnotation<'gc> {
4916 pub fn new(
4919 metadata: NodeMetadata<'gc>,
4920 type_annotation: &'gc Node<'gc>,
4921 ) -> Self {
4922 NullableTypeAnnotation {
4923 metadata,
4924 type_annotation,
4925 }
4926 }
4927}
4928
4929#[derive(Debug)]
4931#[repr(C)]
4932pub struct QualifiedTypeIdentifier<'gc> {
4933 pub metadata: NodeMetadata<'gc>,
4935 pub qualification: &'gc Node<'gc>,
4937 pub id: &'gc Node<'gc>,
4939}
4940impl<'gc> QualifiedTypeIdentifier<'gc> {
4941 pub fn new(
4944 metadata: NodeMetadata<'gc>,
4945 qualification: &'gc Node<'gc>,
4946 id: &'gc Node<'gc>,
4947 ) -> Self {
4948 QualifiedTypeIdentifier {
4949 metadata,
4950 qualification,
4951 id,
4952 }
4953 }
4954}
4955
4956#[derive(Debug)]
4958#[repr(C)]
4959pub struct TypeofTypeAnnotation<'gc> {
4960 pub metadata: NodeMetadata<'gc>,
4962 pub argument: &'gc Node<'gc>,
4964 pub type_arguments: Option<&'gc Node<'gc>>,
4966}
4967impl<'gc> TypeofTypeAnnotation<'gc> {
4968 pub fn new(
4970 metadata: NodeMetadata<'gc>,
4971 argument: &'gc Node<'gc>,
4972 type_arguments: Option<&'gc Node<'gc>>,
4973 ) -> Self {
4974 TypeofTypeAnnotation {
4975 metadata,
4976 argument,
4977 type_arguments,
4978 }
4979 }
4980}
4981
4982#[derive(Debug)]
4984#[repr(C)]
4985pub struct KeyofTypeAnnotation<'gc> {
4986 pub metadata: NodeMetadata<'gc>,
4988 pub argument: &'gc Node<'gc>,
4990}
4991impl<'gc> KeyofTypeAnnotation<'gc> {
4992 pub fn new(
4994 metadata: NodeMetadata<'gc>,
4995 argument: &'gc Node<'gc>,
4996 ) -> Self {
4997 KeyofTypeAnnotation {
4998 metadata,
4999 argument,
5000 }
5001 }
5002}
5003
5004#[derive(Debug)]
5006#[repr(C)]
5007pub struct TypeOperator<'gc> {
5008 pub metadata: NodeMetadata<'gc>,
5010 pub operator: Cell<NodeLabel>,
5012 pub type_annotation: &'gc Node<'gc>,
5014}
5015impl<'gc> TypeOperator<'gc> {
5016 pub fn new(
5018 metadata: NodeMetadata<'gc>,
5019 operator: NodeLabel,
5020 type_annotation: &'gc Node<'gc>,
5021 ) -> Self {
5022 TypeOperator {
5023 metadata,
5024 operator: Cell::new(operator),
5025 type_annotation,
5026 }
5027 }
5028}
5029
5030#[derive(Debug)]
5032#[repr(C)]
5033pub struct QualifiedTypeofIdentifier<'gc> {
5034 pub metadata: NodeMetadata<'gc>,
5036 pub qualification: &'gc Node<'gc>,
5038 pub id: &'gc Node<'gc>,
5040}
5041impl<'gc> QualifiedTypeofIdentifier<'gc> {
5042 pub fn new(
5045 metadata: NodeMetadata<'gc>,
5046 qualification: &'gc Node<'gc>,
5047 id: &'gc Node<'gc>,
5048 ) -> Self {
5049 QualifiedTypeofIdentifier {
5050 metadata,
5051 qualification,
5052 id,
5053 }
5054 }
5055}
5056
5057#[derive(Debug)]
5059#[repr(C)]
5060pub struct TupleTypeAnnotation<'gc> {
5061 pub metadata: NodeMetadata<'gc>,
5063 pub element_types: NodeList<'gc>,
5065 pub inexact: Cell<bool>,
5067}
5068impl<'gc> TupleTypeAnnotation<'gc> {
5069 pub fn new(
5071 metadata: NodeMetadata<'gc>,
5072 element_types: NodeList<'gc>,
5073 inexact: bool,
5074 ) -> Self {
5075 TupleTypeAnnotation {
5076 metadata,
5077 element_types,
5078 inexact: Cell::new(inexact),
5079 }
5080 }
5081}
5082
5083#[derive(Debug)]
5085#[repr(C)]
5086pub struct TupleTypeSpreadElement<'gc> {
5087 pub metadata: NodeMetadata<'gc>,
5089 pub label: Option<&'gc Node<'gc>>,
5091 pub type_annotation: &'gc Node<'gc>,
5093}
5094impl<'gc> TupleTypeSpreadElement<'gc> {
5095 pub fn new(
5098 metadata: NodeMetadata<'gc>,
5099 label: Option<&'gc Node<'gc>>,
5100 type_annotation: &'gc Node<'gc>,
5101 ) -> Self {
5102 TupleTypeSpreadElement {
5103 metadata,
5104 label,
5105 type_annotation,
5106 }
5107 }
5108}
5109
5110#[derive(Debug)]
5112#[repr(C)]
5113pub struct TupleTypeLabeledElement<'gc> {
5114 pub metadata: NodeMetadata<'gc>,
5116 pub label: &'gc Node<'gc>,
5118 pub element_type: &'gc Node<'gc>,
5120 pub optional: Cell<bool>,
5122 pub variance: Option<&'gc Node<'gc>>,
5124}
5125impl<'gc> TupleTypeLabeledElement<'gc> {
5126 pub fn new(
5129 metadata: NodeMetadata<'gc>,
5130 label: &'gc Node<'gc>,
5131 element_type: &'gc Node<'gc>,
5132 optional: bool,
5133 variance: Option<&'gc Node<'gc>>,
5134 ) -> Self {
5135 TupleTypeLabeledElement {
5136 metadata,
5137 label,
5138 element_type,
5139 optional: Cell::new(optional),
5140 variance,
5141 }
5142 }
5143}
5144
5145#[derive(Debug)]
5147#[repr(C)]
5148pub struct ArrayTypeAnnotation<'gc> {
5149 pub metadata: NodeMetadata<'gc>,
5151 pub element_type: &'gc Node<'gc>,
5153}
5154impl<'gc> ArrayTypeAnnotation<'gc> {
5155 pub fn new(
5157 metadata: NodeMetadata<'gc>,
5158 element_type: &'gc Node<'gc>,
5159 ) -> Self {
5160 ArrayTypeAnnotation {
5161 metadata,
5162 element_type,
5163 }
5164 }
5165}
5166
5167#[derive(Debug)]
5169#[repr(C)]
5170pub struct InferTypeAnnotation<'gc> {
5171 pub metadata: NodeMetadata<'gc>,
5173 pub type_parameter: &'gc Node<'gc>,
5175}
5176impl<'gc> InferTypeAnnotation<'gc> {
5177 pub fn new(
5179 metadata: NodeMetadata<'gc>,
5180 type_parameter: &'gc Node<'gc>,
5181 ) -> Self {
5182 InferTypeAnnotation {
5183 metadata,
5184 type_parameter,
5185 }
5186 }
5187}
5188
5189#[derive(Debug)]
5191#[repr(C)]
5192pub struct UnionTypeAnnotation<'gc> {
5193 pub metadata: NodeMetadata<'gc>,
5195 pub types: NodeList<'gc>,
5197}
5198impl<'gc> UnionTypeAnnotation<'gc> {
5199 pub fn new(
5201 metadata: NodeMetadata<'gc>,
5202 types: NodeList<'gc>,
5203 ) -> Self {
5204 UnionTypeAnnotation {
5205 metadata,
5206 types,
5207 }
5208 }
5209}
5210
5211#[derive(Debug)]
5213#[repr(C)]
5214pub struct IntersectionTypeAnnotation<'gc> {
5215 pub metadata: NodeMetadata<'gc>,
5217 pub types: NodeList<'gc>,
5219}
5220impl<'gc> IntersectionTypeAnnotation<'gc> {
5221 pub fn new(
5224 metadata: NodeMetadata<'gc>,
5225 types: NodeList<'gc>,
5226 ) -> Self {
5227 IntersectionTypeAnnotation {
5228 metadata,
5229 types,
5230 }
5231 }
5232}
5233
5234#[derive(Debug)]
5236#[repr(C)]
5237pub struct GenericTypeAnnotation<'gc> {
5238 pub metadata: NodeMetadata<'gc>,
5240 pub id: &'gc Node<'gc>,
5242 pub type_parameters: Option<&'gc Node<'gc>>,
5244}
5245impl<'gc> GenericTypeAnnotation<'gc> {
5246 pub fn new(
5248 metadata: NodeMetadata<'gc>,
5249 id: &'gc Node<'gc>,
5250 type_parameters: Option<&'gc Node<'gc>>,
5251 ) -> Self {
5252 GenericTypeAnnotation {
5253 metadata,
5254 id,
5255 type_parameters,
5256 }
5257 }
5258}
5259
5260#[derive(Debug)]
5262#[repr(C)]
5263pub struct IndexedAccessType<'gc> {
5264 pub metadata: NodeMetadata<'gc>,
5266 pub object_type: &'gc Node<'gc>,
5268 pub index_type: &'gc Node<'gc>,
5270}
5271impl<'gc> IndexedAccessType<'gc> {
5272 pub fn new(
5274 metadata: NodeMetadata<'gc>,
5275 object_type: &'gc Node<'gc>,
5276 index_type: &'gc Node<'gc>,
5277 ) -> Self {
5278 IndexedAccessType {
5279 metadata,
5280 object_type,
5281 index_type,
5282 }
5283 }
5284}
5285
5286#[derive(Debug)]
5288#[repr(C)]
5289pub struct OptionalIndexedAccessType<'gc> {
5290 pub metadata: NodeMetadata<'gc>,
5292 pub object_type: &'gc Node<'gc>,
5294 pub index_type: &'gc Node<'gc>,
5296 pub optional: Cell<bool>,
5298}
5299impl<'gc> OptionalIndexedAccessType<'gc> {
5300 pub fn new(
5303 metadata: NodeMetadata<'gc>,
5304 object_type: &'gc Node<'gc>,
5305 index_type: &'gc Node<'gc>,
5306 optional: bool,
5307 ) -> Self {
5308 OptionalIndexedAccessType {
5309 metadata,
5310 object_type,
5311 index_type,
5312 optional: Cell::new(optional),
5313 }
5314 }
5315}
5316
5317#[derive(Debug)]
5319#[repr(C)]
5320pub struct ConditionalTypeAnnotation<'gc> {
5321 pub metadata: NodeMetadata<'gc>,
5323 pub check_type: &'gc Node<'gc>,
5325 pub extends_type: &'gc Node<'gc>,
5327 pub true_type: &'gc Node<'gc>,
5329 pub false_type: &'gc Node<'gc>,
5331}
5332impl<'gc> ConditionalTypeAnnotation<'gc> {
5333 pub fn new(
5336 metadata: NodeMetadata<'gc>,
5337 check_type: &'gc Node<'gc>,
5338 extends_type: &'gc Node<'gc>,
5339 true_type: &'gc Node<'gc>,
5340 false_type: &'gc Node<'gc>,
5341 ) -> Self {
5342 ConditionalTypeAnnotation {
5343 metadata,
5344 check_type,
5345 extends_type,
5346 true_type,
5347 false_type,
5348 }
5349 }
5350}
5351
5352#[derive(Debug)]
5354#[repr(C)]
5355pub struct TypePredicate<'gc> {
5356 pub metadata: NodeMetadata<'gc>,
5358 pub parameter_name: &'gc Node<'gc>,
5360 pub type_annotation: Option<&'gc Node<'gc>>,
5362 pub kind: Cell<NodeString>,
5364}
5365impl<'gc> TypePredicate<'gc> {
5366 pub fn new(
5368 metadata: NodeMetadata<'gc>,
5369 parameter_name: &'gc Node<'gc>,
5370 type_annotation: Option<&'gc Node<'gc>>,
5371 kind: NodeString,
5372 ) -> Self {
5373 TypePredicate {
5374 metadata,
5375 parameter_name,
5376 type_annotation,
5377 kind: Cell::new(kind),
5378 }
5379 }
5380}
5381
5382#[derive(Debug)]
5384#[repr(C)]
5385pub struct InterfaceTypeAnnotation<'gc> {
5386 pub metadata: NodeMetadata<'gc>,
5388 pub extends: NodeList<'gc>,
5390 pub body: Option<&'gc Node<'gc>>,
5392}
5393impl<'gc> InterfaceTypeAnnotation<'gc> {
5394 pub fn new(
5397 metadata: NodeMetadata<'gc>,
5398 extends: NodeList<'gc>,
5399 body: Option<&'gc Node<'gc>>,
5400 ) -> Self {
5401 InterfaceTypeAnnotation {
5402 metadata,
5403 extends,
5404 body,
5405 }
5406 }
5407}
5408
5409#[derive(Debug)]
5411#[repr(C)]
5412pub struct TypeAlias<'gc> {
5413 pub metadata: NodeMetadata<'gc>,
5415 pub id: &'gc Node<'gc>,
5417 pub type_parameters: Option<&'gc Node<'gc>>,
5419 pub right: &'gc Node<'gc>,
5421}
5422impl<'gc> TypeAlias<'gc> {
5423 pub fn new(
5425 metadata: NodeMetadata<'gc>,
5426 id: &'gc Node<'gc>,
5427 type_parameters: Option<&'gc Node<'gc>>,
5428 right: &'gc Node<'gc>,
5429 ) -> Self {
5430 TypeAlias {
5431 metadata,
5432 id,
5433 type_parameters,
5434 right,
5435 }
5436 }
5437}
5438
5439#[derive(Debug)]
5441#[repr(C)]
5442pub struct OpaqueType<'gc> {
5443 pub metadata: NodeMetadata<'gc>,
5445 pub id: &'gc Node<'gc>,
5447 pub type_parameters: Option<&'gc Node<'gc>>,
5449 pub impltype: &'gc Node<'gc>,
5451 pub lower_bound: Option<&'gc Node<'gc>>,
5453 pub upper_bound: Option<&'gc Node<'gc>>,
5455 pub supertype: Option<&'gc Node<'gc>>,
5457}
5458impl<'gc> OpaqueType<'gc> {
5459 pub fn new(
5461 metadata: NodeMetadata<'gc>,
5462 id: &'gc Node<'gc>,
5463 type_parameters: Option<&'gc Node<'gc>>,
5464 impltype: &'gc Node<'gc>,
5465 lower_bound: Option<&'gc Node<'gc>>,
5466 upper_bound: Option<&'gc Node<'gc>>,
5467 supertype: Option<&'gc Node<'gc>>,
5468 ) -> Self {
5469 OpaqueType {
5470 metadata,
5471 id,
5472 type_parameters,
5473 impltype,
5474 lower_bound,
5475 upper_bound,
5476 supertype,
5477 }
5478 }
5479}
5480
5481#[derive(Debug)]
5483#[repr(C)]
5484pub struct InterfaceDeclaration<'gc> {
5485 pub metadata: NodeMetadata<'gc>,
5487 pub id: &'gc Node<'gc>,
5489 pub type_parameters: Option<&'gc Node<'gc>>,
5491 pub extends: NodeList<'gc>,
5493 pub body: &'gc Node<'gc>,
5495}
5496impl<'gc> InterfaceDeclaration<'gc> {
5497 pub fn new(
5499 metadata: NodeMetadata<'gc>,
5500 id: &'gc Node<'gc>,
5501 type_parameters: Option<&'gc Node<'gc>>,
5502 extends: NodeList<'gc>,
5503 body: &'gc Node<'gc>,
5504 ) -> Self {
5505 InterfaceDeclaration {
5506 metadata,
5507 id,
5508 type_parameters,
5509 extends,
5510 body,
5511 }
5512 }
5513}
5514
5515#[derive(Debug)]
5517#[repr(C)]
5518pub struct DeclareTypeAlias<'gc> {
5519 pub metadata: NodeMetadata<'gc>,
5521 pub id: &'gc Node<'gc>,
5523 pub type_parameters: Option<&'gc Node<'gc>>,
5525 pub right: &'gc Node<'gc>,
5527}
5528impl<'gc> DeclareTypeAlias<'gc> {
5529 pub fn new(
5531 metadata: NodeMetadata<'gc>,
5532 id: &'gc Node<'gc>,
5533 type_parameters: Option<&'gc Node<'gc>>,
5534 right: &'gc Node<'gc>,
5535 ) -> Self {
5536 DeclareTypeAlias {
5537 metadata,
5538 id,
5539 type_parameters,
5540 right,
5541 }
5542 }
5543}
5544
5545#[derive(Debug)]
5547#[repr(C)]
5548pub struct DeclareOpaqueType<'gc> {
5549 pub metadata: NodeMetadata<'gc>,
5551 pub id: &'gc Node<'gc>,
5553 pub type_parameters: Option<&'gc Node<'gc>>,
5555 pub impltype: Option<&'gc Node<'gc>>,
5557 pub lower_bound: Option<&'gc Node<'gc>>,
5559 pub upper_bound: Option<&'gc Node<'gc>>,
5561 pub supertype: Option<&'gc Node<'gc>>,
5563}
5564impl<'gc> DeclareOpaqueType<'gc> {
5565 pub fn new(
5567 metadata: NodeMetadata<'gc>,
5568 id: &'gc Node<'gc>,
5569 type_parameters: Option<&'gc Node<'gc>>,
5570 impltype: Option<&'gc Node<'gc>>,
5571 lower_bound: Option<&'gc Node<'gc>>,
5572 upper_bound: Option<&'gc Node<'gc>>,
5573 supertype: Option<&'gc Node<'gc>>,
5574 ) -> Self {
5575 DeclareOpaqueType {
5576 metadata,
5577 id,
5578 type_parameters,
5579 impltype,
5580 lower_bound,
5581 upper_bound,
5582 supertype,
5583 }
5584 }
5585}
5586
5587#[derive(Debug)]
5589#[repr(C)]
5590pub struct DeclareInterface<'gc> {
5591 pub metadata: NodeMetadata<'gc>,
5593 pub id: &'gc Node<'gc>,
5595 pub type_parameters: Option<&'gc Node<'gc>>,
5597 pub extends: NodeList<'gc>,
5599 pub body: &'gc Node<'gc>,
5601}
5602impl<'gc> DeclareInterface<'gc> {
5603 pub fn new(
5605 metadata: NodeMetadata<'gc>,
5606 id: &'gc Node<'gc>,
5607 type_parameters: Option<&'gc Node<'gc>>,
5608 extends: NodeList<'gc>,
5609 body: &'gc Node<'gc>,
5610 ) -> Self {
5611 DeclareInterface {
5612 metadata,
5613 id,
5614 type_parameters,
5615 extends,
5616 body,
5617 }
5618 }
5619}
5620
5621#[derive(Debug)]
5623#[repr(C)]
5624pub struct DeclareClass<'gc> {
5625 pub metadata: NodeMetadata<'gc>,
5627 pub id: &'gc Node<'gc>,
5629 pub type_parameters: Option<&'gc Node<'gc>>,
5631 pub extends: NodeList<'gc>,
5633 pub implements: NodeList<'gc>,
5635 pub mixins: NodeList<'gc>,
5637 pub body: &'gc Node<'gc>,
5639}
5640impl<'gc> DeclareClass<'gc> {
5641 pub fn new(
5643 metadata: NodeMetadata<'gc>,
5644 id: &'gc Node<'gc>,
5645 type_parameters: Option<&'gc Node<'gc>>,
5646 extends: NodeList<'gc>,
5647 implements: NodeList<'gc>,
5648 mixins: NodeList<'gc>,
5649 body: &'gc Node<'gc>,
5650 ) -> Self {
5651 DeclareClass {
5652 metadata,
5653 id,
5654 type_parameters,
5655 extends,
5656 implements,
5657 mixins,
5658 body,
5659 }
5660 }
5661}
5662
5663#[derive(Debug)]
5665#[repr(C)]
5666pub struct DeclareFunction<'gc> {
5667 pub metadata: NodeMetadata<'gc>,
5669 pub id: &'gc Node<'gc>,
5671 pub predicate: Option<&'gc Node<'gc>>,
5673}
5674impl<'gc> DeclareFunction<'gc> {
5675 pub fn new(
5677 metadata: NodeMetadata<'gc>,
5678 id: &'gc Node<'gc>,
5679 predicate: Option<&'gc Node<'gc>>,
5680 ) -> Self {
5681 DeclareFunction {
5682 metadata,
5683 id,
5684 predicate,
5685 }
5686 }
5687}
5688
5689#[derive(Debug)]
5691#[repr(C)]
5692pub struct DeclareHook<'gc> {
5693 pub metadata: NodeMetadata<'gc>,
5695 pub id: &'gc Node<'gc>,
5697}
5698impl<'gc> DeclareHook<'gc> {
5699 pub fn new(
5701 metadata: NodeMetadata<'gc>,
5702 id: &'gc Node<'gc>,
5703 ) -> Self {
5704 DeclareHook {
5705 metadata,
5706 id,
5707 }
5708 }
5709}
5710
5711#[derive(Debug)]
5713#[repr(C)]
5714pub struct DeclareComponent<'gc> {
5715 pub metadata: NodeMetadata<'gc>,
5717 pub id: &'gc Node<'gc>,
5719 pub params: NodeList<'gc>,
5721 pub rest: Option<&'gc Node<'gc>>,
5723 pub type_parameters: Option<&'gc Node<'gc>>,
5725 pub renders_type: Option<&'gc Node<'gc>>,
5727}
5728impl<'gc> DeclareComponent<'gc> {
5729 pub fn new(
5731 metadata: NodeMetadata<'gc>,
5732 id: &'gc Node<'gc>,
5733 params: NodeList<'gc>,
5734 rest: Option<&'gc Node<'gc>>,
5735 type_parameters: Option<&'gc Node<'gc>>,
5736 renders_type: Option<&'gc Node<'gc>>,
5737 ) -> Self {
5738 DeclareComponent {
5739 metadata,
5740 id,
5741 params,
5742 rest,
5743 type_parameters,
5744 renders_type,
5745 }
5746 }
5747}
5748
5749#[derive(Debug)]
5751#[repr(C)]
5752pub struct DeclareVariable<'gc> {
5753 pub metadata: NodeMetadata<'gc>,
5755 pub id: &'gc Node<'gc>,
5757 pub kind: Cell<NodeLabel>,
5759}
5760impl<'gc> DeclareVariable<'gc> {
5761 pub fn new(
5763 metadata: NodeMetadata<'gc>,
5764 id: &'gc Node<'gc>,
5765 kind: NodeLabel,
5766 ) -> Self {
5767 DeclareVariable {
5768 metadata,
5769 id,
5770 kind: Cell::new(kind),
5771 }
5772 }
5773}
5774
5775#[derive(Debug)]
5777#[repr(C)]
5778pub struct DeclareEnum<'gc> {
5779 pub metadata: NodeMetadata<'gc>,
5781 pub id: &'gc Node<'gc>,
5783 pub body: &'gc Node<'gc>,
5785}
5786impl<'gc> DeclareEnum<'gc> {
5787 pub fn new(
5789 metadata: NodeMetadata<'gc>,
5790 id: &'gc Node<'gc>,
5791 body: &'gc Node<'gc>,
5792 ) -> Self {
5793 DeclareEnum {
5794 metadata,
5795 id,
5796 body,
5797 }
5798 }
5799}
5800
5801#[derive(Debug)]
5803#[repr(C)]
5804pub struct DeclareExportDeclaration<'gc> {
5805 pub metadata: NodeMetadata<'gc>,
5807 pub declaration: Option<&'gc Node<'gc>>,
5809 pub specifiers: NodeList<'gc>,
5811 pub source: Option<&'gc Node<'gc>>,
5813 pub default: Cell<bool>,
5815}
5816impl<'gc> DeclareExportDeclaration<'gc> {
5817 pub fn new(
5820 metadata: NodeMetadata<'gc>,
5821 declaration: Option<&'gc Node<'gc>>,
5822 specifiers: NodeList<'gc>,
5823 source: Option<&'gc Node<'gc>>,
5824 default: bool,
5825 ) -> Self {
5826 DeclareExportDeclaration {
5827 metadata,
5828 declaration,
5829 specifiers,
5830 source,
5831 default: Cell::new(default),
5832 }
5833 }
5834}
5835
5836#[derive(Debug)]
5838#[repr(C)]
5839pub struct DeclareExportAllDeclaration<'gc> {
5840 pub metadata: NodeMetadata<'gc>,
5842 pub source: &'gc Node<'gc>,
5844}
5845impl<'gc> DeclareExportAllDeclaration<'gc> {
5846 pub fn new(
5849 metadata: NodeMetadata<'gc>,
5850 source: &'gc Node<'gc>,
5851 ) -> Self {
5852 DeclareExportAllDeclaration {
5853 metadata,
5854 source,
5855 }
5856 }
5857}
5858
5859#[derive(Debug)]
5861#[repr(C)]
5862pub struct DeclareModule<'gc> {
5863 pub metadata: NodeMetadata<'gc>,
5865 pub id: &'gc Node<'gc>,
5867 pub body: &'gc Node<'gc>,
5869}
5870impl<'gc> DeclareModule<'gc> {
5871 pub fn new(
5873 metadata: NodeMetadata<'gc>,
5874 id: &'gc Node<'gc>,
5875 body: &'gc Node<'gc>,
5876 ) -> Self {
5877 DeclareModule {
5878 metadata,
5879 id,
5880 body,
5881 }
5882 }
5883}
5884
5885#[derive(Debug)]
5887#[repr(C)]
5888pub struct DeclareNamespace<'gc> {
5889 pub metadata: NodeMetadata<'gc>,
5891 pub id: &'gc Node<'gc>,
5893 pub body: &'gc Node<'gc>,
5895}
5896impl<'gc> DeclareNamespace<'gc> {
5897 pub fn new(
5899 metadata: NodeMetadata<'gc>,
5900 id: &'gc Node<'gc>,
5901 body: &'gc Node<'gc>,
5902 ) -> Self {
5903 DeclareNamespace {
5904 metadata,
5905 id,
5906 body,
5907 }
5908 }
5909}
5910
5911#[derive(Debug)]
5913#[repr(C)]
5914pub struct DeclareModuleExports<'gc> {
5915 pub metadata: NodeMetadata<'gc>,
5917 pub type_annotation: &'gc Node<'gc>,
5919}
5920impl<'gc> DeclareModuleExports<'gc> {
5921 pub fn new(
5923 metadata: NodeMetadata<'gc>,
5924 type_annotation: &'gc Node<'gc>,
5925 ) -> Self {
5926 DeclareModuleExports {
5927 metadata,
5928 type_annotation,
5929 }
5930 }
5931}
5932
5933#[derive(Debug)]
5935#[repr(C)]
5936pub struct InterfaceExtends<'gc> {
5937 pub metadata: NodeMetadata<'gc>,
5939 pub id: &'gc Node<'gc>,
5941 pub type_parameters: Option<&'gc Node<'gc>>,
5943}
5944impl<'gc> InterfaceExtends<'gc> {
5945 pub fn new(
5947 metadata: NodeMetadata<'gc>,
5948 id: &'gc Node<'gc>,
5949 type_parameters: Option<&'gc Node<'gc>>,
5950 ) -> Self {
5951 InterfaceExtends {
5952 metadata,
5953 id,
5954 type_parameters,
5955 }
5956 }
5957}
5958
5959#[derive(Debug)]
5961#[repr(C)]
5962pub struct ClassImplements<'gc> {
5963 pub metadata: NodeMetadata<'gc>,
5965 pub id: &'gc Node<'gc>,
5967 pub type_parameters: Option<&'gc Node<'gc>>,
5969}
5970impl<'gc> ClassImplements<'gc> {
5971 pub fn new(
5973 metadata: NodeMetadata<'gc>,
5974 id: &'gc Node<'gc>,
5975 type_parameters: Option<&'gc Node<'gc>>,
5976 ) -> Self {
5977 ClassImplements {
5978 metadata,
5979 id,
5980 type_parameters,
5981 }
5982 }
5983}
5984
5985#[derive(Debug)]
5987#[repr(C)]
5988pub struct TypeAnnotation<'gc> {
5989 pub metadata: NodeMetadata<'gc>,
5991 pub type_annotation: &'gc Node<'gc>,
5993}
5994impl<'gc> TypeAnnotation<'gc> {
5995 pub fn new(
5997 metadata: NodeMetadata<'gc>,
5998 type_annotation: &'gc Node<'gc>,
5999 ) -> Self {
6000 TypeAnnotation {
6001 metadata,
6002 type_annotation,
6003 }
6004 }
6005}
6006
6007#[derive(Debug)]
6009#[repr(C)]
6010pub struct ObjectTypeAnnotation<'gc> {
6011 pub metadata: NodeMetadata<'gc>,
6013 pub properties: NodeList<'gc>,
6015 pub indexers: NodeList<'gc>,
6017 pub call_properties: NodeList<'gc>,
6019 pub internal_slots: NodeList<'gc>,
6021 pub inexact: Cell<bool>,
6023 pub exact: Cell<bool>,
6025}
6026impl<'gc> ObjectTypeAnnotation<'gc> {
6027 pub fn new(
6029 metadata: NodeMetadata<'gc>,
6030 properties: NodeList<'gc>,
6031 indexers: NodeList<'gc>,
6032 call_properties: NodeList<'gc>,
6033 internal_slots: NodeList<'gc>,
6034 inexact: bool,
6035 exact: bool,
6036 ) -> Self {
6037 ObjectTypeAnnotation {
6038 metadata,
6039 properties,
6040 indexers,
6041 call_properties,
6042 internal_slots,
6043 inexact: Cell::new(inexact),
6044 exact: Cell::new(exact),
6045 }
6046 }
6047}
6048
6049#[derive(Debug)]
6051#[repr(C)]
6052pub struct ObjectTypeProperty<'gc> {
6053 pub metadata: NodeMetadata<'gc>,
6055 pub key: &'gc Node<'gc>,
6057 pub value: &'gc Node<'gc>,
6059 pub method: Cell<bool>,
6061 pub optional: Cell<bool>,
6063 pub r#static: Cell<bool>,
6065 pub proto: Cell<bool>,
6067 pub variance: Option<&'gc Node<'gc>>,
6069 pub kind: Cell<NodeLabel>,
6071}
6072impl<'gc> ObjectTypeProperty<'gc> {
6073 pub fn new(
6075 metadata: NodeMetadata<'gc>,
6076 key: &'gc Node<'gc>,
6077 value: &'gc Node<'gc>,
6078 method: bool,
6079 optional: bool,
6080 r#static: bool,
6081 proto: bool,
6082 variance: Option<&'gc Node<'gc>>,
6083 kind: NodeLabel,
6084 ) -> Self {
6085 ObjectTypeProperty {
6086 metadata,
6087 key,
6088 value,
6089 method: Cell::new(method),
6090 optional: Cell::new(optional),
6091 r#static: Cell::new(r#static),
6092 proto: Cell::new(proto),
6093 variance,
6094 kind: Cell::new(kind),
6095 }
6096 }
6097}
6098
6099#[derive(Debug)]
6101#[repr(C)]
6102pub struct ObjectTypeSpreadProperty<'gc> {
6103 pub metadata: NodeMetadata<'gc>,
6105 pub argument: &'gc Node<'gc>,
6107}
6108impl<'gc> ObjectTypeSpreadProperty<'gc> {
6109 pub fn new(
6112 metadata: NodeMetadata<'gc>,
6113 argument: &'gc Node<'gc>,
6114 ) -> Self {
6115 ObjectTypeSpreadProperty {
6116 metadata,
6117 argument,
6118 }
6119 }
6120}
6121
6122#[derive(Debug)]
6124#[repr(C)]
6125pub struct ObjectTypeInternalSlot<'gc> {
6126 pub metadata: NodeMetadata<'gc>,
6128 pub id: &'gc Node<'gc>,
6130 pub value: &'gc Node<'gc>,
6132 pub optional: Cell<bool>,
6134 pub r#static: Cell<bool>,
6136 pub method: Cell<bool>,
6138}
6139impl<'gc> ObjectTypeInternalSlot<'gc> {
6140 pub fn new(
6143 metadata: NodeMetadata<'gc>,
6144 id: &'gc Node<'gc>,
6145 value: &'gc Node<'gc>,
6146 optional: bool,
6147 r#static: bool,
6148 method: bool,
6149 ) -> Self {
6150 ObjectTypeInternalSlot {
6151 metadata,
6152 id,
6153 value,
6154 optional: Cell::new(optional),
6155 r#static: Cell::new(r#static),
6156 method: Cell::new(method),
6157 }
6158 }
6159}
6160
6161#[derive(Debug)]
6163#[repr(C)]
6164pub struct ObjectTypeCallProperty<'gc> {
6165 pub metadata: NodeMetadata<'gc>,
6167 pub value: &'gc Node<'gc>,
6169 pub r#static: Cell<bool>,
6171}
6172impl<'gc> ObjectTypeCallProperty<'gc> {
6173 pub fn new(
6176 metadata: NodeMetadata<'gc>,
6177 value: &'gc Node<'gc>,
6178 r#static: bool,
6179 ) -> Self {
6180 ObjectTypeCallProperty {
6181 metadata,
6182 value,
6183 r#static: Cell::new(r#static),
6184 }
6185 }
6186}
6187
6188#[derive(Debug)]
6190#[repr(C)]
6191pub struct ObjectTypeIndexer<'gc> {
6192 pub metadata: NodeMetadata<'gc>,
6194 pub id: Option<&'gc Node<'gc>>,
6196 pub key: &'gc Node<'gc>,
6198 pub value: &'gc Node<'gc>,
6200 pub r#static: Cell<bool>,
6202 pub variance: Option<&'gc Node<'gc>>,
6204}
6205impl<'gc> ObjectTypeIndexer<'gc> {
6206 pub fn new(
6208 metadata: NodeMetadata<'gc>,
6209 id: Option<&'gc Node<'gc>>,
6210 key: &'gc Node<'gc>,
6211 value: &'gc Node<'gc>,
6212 r#static: bool,
6213 variance: Option<&'gc Node<'gc>>,
6214 ) -> Self {
6215 ObjectTypeIndexer {
6216 metadata,
6217 id,
6218 key,
6219 value,
6220 r#static: Cell::new(r#static),
6221 variance,
6222 }
6223 }
6224}
6225
6226#[derive(Debug)]
6228#[repr(C)]
6229pub struct ObjectTypeMappedTypeProperty<'gc> {
6230 pub metadata: NodeMetadata<'gc>,
6232 pub key_tparam: &'gc Node<'gc>,
6234 pub prop_type: &'gc Node<'gc>,
6236 pub source_type: &'gc Node<'gc>,
6238 pub variance: Option<&'gc Node<'gc>>,
6240 pub optional: Cell<NodeString>,
6242}
6243impl<'gc> ObjectTypeMappedTypeProperty<'gc> {
6244 pub fn new(
6247 metadata: NodeMetadata<'gc>,
6248 key_tparam: &'gc Node<'gc>,
6249 prop_type: &'gc Node<'gc>,
6250 source_type: &'gc Node<'gc>,
6251 variance: Option<&'gc Node<'gc>>,
6252 optional: NodeString,
6253 ) -> Self {
6254 ObjectTypeMappedTypeProperty {
6255 metadata,
6256 key_tparam,
6257 prop_type,
6258 source_type,
6259 variance,
6260 optional: Cell::new(optional),
6261 }
6262 }
6263}
6264
6265#[derive(Debug)]
6267#[repr(C)]
6268pub struct Variance<'gc> {
6269 pub metadata: NodeMetadata<'gc>,
6271 pub kind: Cell<NodeLabel>,
6273}
6274impl<'gc> Variance<'gc> {
6275 pub fn new(
6277 metadata: NodeMetadata<'gc>,
6278 kind: NodeLabel,
6279 ) -> Self {
6280 Variance {
6281 metadata,
6282 kind: Cell::new(kind),
6283 }
6284 }
6285}
6286
6287#[derive(Debug)]
6289#[repr(C)]
6290pub struct TypeParameterDeclaration<'gc> {
6291 pub metadata: NodeMetadata<'gc>,
6293 pub params: NodeList<'gc>,
6295}
6296impl<'gc> TypeParameterDeclaration<'gc> {
6297 pub fn new(
6300 metadata: NodeMetadata<'gc>,
6301 params: NodeList<'gc>,
6302 ) -> Self {
6303 TypeParameterDeclaration {
6304 metadata,
6305 params,
6306 }
6307 }
6308}
6309
6310#[derive(Debug)]
6312#[repr(C)]
6313pub struct TypeParameter<'gc> {
6314 pub metadata: NodeMetadata<'gc>,
6316 pub name: Cell<NodeLabel>,
6318 pub r#const: Cell<bool>,
6320 pub bound: Option<&'gc Node<'gc>>,
6322 pub variance: Option<&'gc Node<'gc>>,
6324 pub default: Option<&'gc Node<'gc>>,
6326 pub uses_extends_bound: Cell<bool>,
6328}
6329impl<'gc> TypeParameter<'gc> {
6330 pub fn new(
6332 metadata: NodeMetadata<'gc>,
6333 name: NodeLabel,
6334 r#const: bool,
6335 bound: Option<&'gc Node<'gc>>,
6336 variance: Option<&'gc Node<'gc>>,
6337 default: Option<&'gc Node<'gc>>,
6338 uses_extends_bound: bool,
6339 ) -> Self {
6340 TypeParameter {
6341 metadata,
6342 name: Cell::new(name),
6343 r#const: Cell::new(r#const),
6344 bound,
6345 variance,
6346 default,
6347 uses_extends_bound: Cell::new(uses_extends_bound),
6348 }
6349 }
6350}
6351
6352#[derive(Debug)]
6354#[repr(C)]
6355pub struct TypeParameterInstantiation<'gc> {
6356 pub metadata: NodeMetadata<'gc>,
6358 pub params: NodeList<'gc>,
6360}
6361impl<'gc> TypeParameterInstantiation<'gc> {
6362 pub fn new(
6365 metadata: NodeMetadata<'gc>,
6366 params: NodeList<'gc>,
6367 ) -> Self {
6368 TypeParameterInstantiation {
6369 metadata,
6370 params,
6371 }
6372 }
6373}
6374
6375#[derive(Debug)]
6377#[repr(C)]
6378pub struct TypeCastExpression<'gc> {
6379 pub metadata: NodeMetadata<'gc>,
6381 pub expression: &'gc Node<'gc>,
6383 pub type_annotation: &'gc Node<'gc>,
6385}
6386impl<'gc> TypeCastExpression<'gc> {
6387 pub fn new(
6389 metadata: NodeMetadata<'gc>,
6390 expression: &'gc Node<'gc>,
6391 type_annotation: &'gc Node<'gc>,
6392 ) -> Self {
6393 TypeCastExpression {
6394 metadata,
6395 expression,
6396 type_annotation,
6397 }
6398 }
6399}
6400
6401#[derive(Debug)]
6403#[repr(C)]
6404pub struct AsExpression<'gc> {
6405 pub metadata: NodeMetadata<'gc>,
6407 pub expression: &'gc Node<'gc>,
6409 pub type_annotation: &'gc Node<'gc>,
6411}
6412impl<'gc> AsExpression<'gc> {
6413 pub fn new(
6415 metadata: NodeMetadata<'gc>,
6416 expression: &'gc Node<'gc>,
6417 type_annotation: &'gc Node<'gc>,
6418 ) -> Self {
6419 AsExpression {
6420 metadata,
6421 expression,
6422 type_annotation,
6423 }
6424 }
6425}
6426
6427#[derive(Debug)]
6429#[repr(C)]
6430pub struct AsConstExpression<'gc> {
6431 pub metadata: NodeMetadata<'gc>,
6433 pub expression: &'gc Node<'gc>,
6435}
6436impl<'gc> AsConstExpression<'gc> {
6437 pub fn new(
6439 metadata: NodeMetadata<'gc>,
6440 expression: &'gc Node<'gc>,
6441 ) -> Self {
6442 AsConstExpression {
6443 metadata,
6444 expression,
6445 }
6446 }
6447}
6448
6449#[derive(Debug)]
6451#[repr(C)]
6452pub struct InferredPredicate<'gc> {
6453 pub metadata: NodeMetadata<'gc>,
6455}
6456impl<'gc> InferredPredicate<'gc> {
6457 pub fn new(
6459 metadata: NodeMetadata<'gc>,
6460 ) -> Self {
6461 InferredPredicate {
6462 metadata,
6463 }
6464 }
6465}
6466
6467#[derive(Debug)]
6469#[repr(C)]
6470pub struct DeclaredPredicate<'gc> {
6471 pub metadata: NodeMetadata<'gc>,
6473 pub value: &'gc Node<'gc>,
6475}
6476impl<'gc> DeclaredPredicate<'gc> {
6477 pub fn new(
6479 metadata: NodeMetadata<'gc>,
6480 value: &'gc Node<'gc>,
6481 ) -> Self {
6482 DeclaredPredicate {
6483 metadata,
6484 value,
6485 }
6486 }
6487}
6488
6489#[derive(Debug)]
6491#[repr(C)]
6492pub struct EnumDeclaration<'gc> {
6493 pub metadata: NodeMetadata<'gc>,
6495 pub id: &'gc Node<'gc>,
6497 pub body: &'gc Node<'gc>,
6499}
6500impl<'gc> EnumDeclaration<'gc> {
6501 pub fn new(
6503 metadata: NodeMetadata<'gc>,
6504 id: &'gc Node<'gc>,
6505 body: &'gc Node<'gc>,
6506 ) -> Self {
6507 EnumDeclaration {
6508 metadata,
6509 id,
6510 body,
6511 }
6512 }
6513}
6514
6515#[derive(Debug)]
6517#[repr(C)]
6518pub struct EnumStringBody<'gc> {
6519 pub metadata: NodeMetadata<'gc>,
6521 pub members: NodeList<'gc>,
6523 pub explicit_type: Cell<bool>,
6525 pub has_unknown_members: Cell<bool>,
6527}
6528impl<'gc> EnumStringBody<'gc> {
6529 pub fn new(
6531 metadata: NodeMetadata<'gc>,
6532 members: NodeList<'gc>,
6533 explicit_type: bool,
6534 has_unknown_members: bool,
6535 ) -> Self {
6536 EnumStringBody {
6537 metadata,
6538 members,
6539 explicit_type: Cell::new(explicit_type),
6540 has_unknown_members: Cell::new(has_unknown_members),
6541 }
6542 }
6543}
6544
6545#[derive(Debug)]
6547#[repr(C)]
6548pub struct EnumNumberBody<'gc> {
6549 pub metadata: NodeMetadata<'gc>,
6551 pub members: NodeList<'gc>,
6553 pub explicit_type: Cell<bool>,
6555 pub has_unknown_members: Cell<bool>,
6557}
6558impl<'gc> EnumNumberBody<'gc> {
6559 pub fn new(
6561 metadata: NodeMetadata<'gc>,
6562 members: NodeList<'gc>,
6563 explicit_type: bool,
6564 has_unknown_members: bool,
6565 ) -> Self {
6566 EnumNumberBody {
6567 metadata,
6568 members,
6569 explicit_type: Cell::new(explicit_type),
6570 has_unknown_members: Cell::new(has_unknown_members),
6571 }
6572 }
6573}
6574
6575#[derive(Debug)]
6577#[repr(C)]
6578pub struct EnumBigIntBody<'gc> {
6579 pub metadata: NodeMetadata<'gc>,
6581 pub members: NodeList<'gc>,
6583 pub explicit_type: Cell<bool>,
6585 pub has_unknown_members: Cell<bool>,
6587}
6588impl<'gc> EnumBigIntBody<'gc> {
6589 pub fn new(
6591 metadata: NodeMetadata<'gc>,
6592 members: NodeList<'gc>,
6593 explicit_type: bool,
6594 has_unknown_members: bool,
6595 ) -> Self {
6596 EnumBigIntBody {
6597 metadata,
6598 members,
6599 explicit_type: Cell::new(explicit_type),
6600 has_unknown_members: Cell::new(has_unknown_members),
6601 }
6602 }
6603}
6604
6605#[derive(Debug)]
6607#[repr(C)]
6608pub struct EnumBooleanBody<'gc> {
6609 pub metadata: NodeMetadata<'gc>,
6611 pub members: NodeList<'gc>,
6613 pub explicit_type: Cell<bool>,
6615 pub has_unknown_members: Cell<bool>,
6617}
6618impl<'gc> EnumBooleanBody<'gc> {
6619 pub fn new(
6621 metadata: NodeMetadata<'gc>,
6622 members: NodeList<'gc>,
6623 explicit_type: bool,
6624 has_unknown_members: bool,
6625 ) -> Self {
6626 EnumBooleanBody {
6627 metadata,
6628 members,
6629 explicit_type: Cell::new(explicit_type),
6630 has_unknown_members: Cell::new(has_unknown_members),
6631 }
6632 }
6633}
6634
6635#[derive(Debug)]
6637#[repr(C)]
6638pub struct EnumSymbolBody<'gc> {
6639 pub metadata: NodeMetadata<'gc>,
6641 pub members: NodeList<'gc>,
6643 pub has_unknown_members: Cell<bool>,
6645}
6646impl<'gc> EnumSymbolBody<'gc> {
6647 pub fn new(
6649 metadata: NodeMetadata<'gc>,
6650 members: NodeList<'gc>,
6651 has_unknown_members: bool,
6652 ) -> Self {
6653 EnumSymbolBody {
6654 metadata,
6655 members,
6656 has_unknown_members: Cell::new(has_unknown_members),
6657 }
6658 }
6659}
6660
6661#[derive(Debug)]
6663#[repr(C)]
6664pub struct EnumDefaultedMember<'gc> {
6665 pub metadata: NodeMetadata<'gc>,
6667 pub id: &'gc Node<'gc>,
6669}
6670impl<'gc> EnumDefaultedMember<'gc> {
6671 pub fn new(
6673 metadata: NodeMetadata<'gc>,
6674 id: &'gc Node<'gc>,
6675 ) -> Self {
6676 EnumDefaultedMember {
6677 metadata,
6678 id,
6679 }
6680 }
6681}
6682
6683#[derive(Debug)]
6685#[repr(C)]
6686pub struct EnumStringMember<'gc> {
6687 pub metadata: NodeMetadata<'gc>,
6689 pub id: &'gc Node<'gc>,
6691 pub init: &'gc Node<'gc>,
6693}
6694impl<'gc> EnumStringMember<'gc> {
6695 pub fn new(
6697 metadata: NodeMetadata<'gc>,
6698 id: &'gc Node<'gc>,
6699 init: &'gc Node<'gc>,
6700 ) -> Self {
6701 EnumStringMember {
6702 metadata,
6703 id,
6704 init,
6705 }
6706 }
6707}
6708
6709#[derive(Debug)]
6711#[repr(C)]
6712pub struct EnumNumberMember<'gc> {
6713 pub metadata: NodeMetadata<'gc>,
6715 pub id: &'gc Node<'gc>,
6717 pub init: &'gc Node<'gc>,
6719}
6720impl<'gc> EnumNumberMember<'gc> {
6721 pub fn new(
6723 metadata: NodeMetadata<'gc>,
6724 id: &'gc Node<'gc>,
6725 init: &'gc Node<'gc>,
6726 ) -> Self {
6727 EnumNumberMember {
6728 metadata,
6729 id,
6730 init,
6731 }
6732 }
6733}
6734
6735#[derive(Debug)]
6737#[repr(C)]
6738pub struct EnumBigIntMember<'gc> {
6739 pub metadata: NodeMetadata<'gc>,
6741 pub id: &'gc Node<'gc>,
6743 pub init: &'gc Node<'gc>,
6745}
6746impl<'gc> EnumBigIntMember<'gc> {
6747 pub fn new(
6749 metadata: NodeMetadata<'gc>,
6750 id: &'gc Node<'gc>,
6751 init: &'gc Node<'gc>,
6752 ) -> Self {
6753 EnumBigIntMember {
6754 metadata,
6755 id,
6756 init,
6757 }
6758 }
6759}
6760
6761#[derive(Debug)]
6763#[repr(C)]
6764pub struct EnumBooleanMember<'gc> {
6765 pub metadata: NodeMetadata<'gc>,
6767 pub id: &'gc Node<'gc>,
6769 pub init: &'gc Node<'gc>,
6771}
6772impl<'gc> EnumBooleanMember<'gc> {
6773 pub fn new(
6775 metadata: NodeMetadata<'gc>,
6776 id: &'gc Node<'gc>,
6777 init: &'gc Node<'gc>,
6778 ) -> Self {
6779 EnumBooleanMember {
6780 metadata,
6781 id,
6782 init,
6783 }
6784 }
6785}
6786
6787#[derive(Debug)]
6789#[repr(C)]
6790pub struct ComponentParameter<'gc> {
6791 pub metadata: NodeMetadata<'gc>,
6793 pub name: &'gc Node<'gc>,
6795 pub local: &'gc Node<'gc>,
6797 pub shorthand: Cell<bool>,
6799}
6800impl<'gc> ComponentParameter<'gc> {
6801 pub fn new(
6803 metadata: NodeMetadata<'gc>,
6804 name: &'gc Node<'gc>,
6805 local: &'gc Node<'gc>,
6806 shorthand: bool,
6807 ) -> Self {
6808 ComponentParameter {
6809 metadata,
6810 name,
6811 local,
6812 shorthand: Cell::new(shorthand),
6813 }
6814 }
6815}
6816
6817#[derive(Debug)]
6819#[repr(C)]
6820pub struct RecordDeclaration<'gc> {
6821 pub metadata: NodeMetadata<'gc>,
6823 pub id: &'gc Node<'gc>,
6825 pub type_parameters: Option<&'gc Node<'gc>>,
6827 pub implements: NodeList<'gc>,
6829 pub body: &'gc Node<'gc>,
6831}
6832impl<'gc> RecordDeclaration<'gc> {
6833 pub fn new(
6835 metadata: NodeMetadata<'gc>,
6836 id: &'gc Node<'gc>,
6837 type_parameters: Option<&'gc Node<'gc>>,
6838 implements: NodeList<'gc>,
6839 body: &'gc Node<'gc>,
6840 ) -> Self {
6841 RecordDeclaration {
6842 metadata,
6843 id,
6844 type_parameters,
6845 implements,
6846 body,
6847 }
6848 }
6849}
6850
6851#[derive(Debug)]
6853#[repr(C)]
6854pub struct RecordDeclarationImplements<'gc> {
6855 pub metadata: NodeMetadata<'gc>,
6857 pub id: &'gc Node<'gc>,
6859 pub type_arguments: Option<&'gc Node<'gc>>,
6861}
6862impl<'gc> RecordDeclarationImplements<'gc> {
6863 pub fn new(
6866 metadata: NodeMetadata<'gc>,
6867 id: &'gc Node<'gc>,
6868 type_arguments: Option<&'gc Node<'gc>>,
6869 ) -> Self {
6870 RecordDeclarationImplements {
6871 metadata,
6872 id,
6873 type_arguments,
6874 }
6875 }
6876}
6877
6878#[derive(Debug)]
6880#[repr(C)]
6881pub struct RecordDeclarationBody<'gc> {
6882 pub metadata: NodeMetadata<'gc>,
6884 pub elements: NodeList<'gc>,
6886}
6887impl<'gc> RecordDeclarationBody<'gc> {
6888 pub fn new(
6890 metadata: NodeMetadata<'gc>,
6891 elements: NodeList<'gc>,
6892 ) -> Self {
6893 RecordDeclarationBody {
6894 metadata,
6895 elements,
6896 }
6897 }
6898}
6899
6900#[derive(Debug)]
6902#[repr(C)]
6903pub struct RecordDeclarationProperty<'gc> {
6904 pub metadata: NodeMetadata<'gc>,
6906 pub key: &'gc Node<'gc>,
6908 pub type_annotation: &'gc Node<'gc>,
6910 pub default_value: Option<&'gc Node<'gc>>,
6912}
6913impl<'gc> RecordDeclarationProperty<'gc> {
6914 pub fn new(
6917 metadata: NodeMetadata<'gc>,
6918 key: &'gc Node<'gc>,
6919 type_annotation: &'gc Node<'gc>,
6920 default_value: Option<&'gc Node<'gc>>,
6921 ) -> Self {
6922 RecordDeclarationProperty {
6923 metadata,
6924 key,
6925 type_annotation,
6926 default_value,
6927 }
6928 }
6929}
6930
6931#[derive(Debug)]
6933#[repr(C)]
6934pub struct RecordDeclarationStaticProperty<'gc> {
6935 pub metadata: NodeMetadata<'gc>,
6937 pub key: &'gc Node<'gc>,
6939 pub type_annotation: &'gc Node<'gc>,
6941 pub value: &'gc Node<'gc>,
6943}
6944impl<'gc> RecordDeclarationStaticProperty<'gc> {
6945 pub fn new(
6948 metadata: NodeMetadata<'gc>,
6949 key: &'gc Node<'gc>,
6950 type_annotation: &'gc Node<'gc>,
6951 value: &'gc Node<'gc>,
6952 ) -> Self {
6953 RecordDeclarationStaticProperty {
6954 metadata,
6955 key,
6956 type_annotation,
6957 value,
6958 }
6959 }
6960}
6961
6962#[derive(Debug)]
6964#[repr(C)]
6965pub struct RecordExpression<'gc> {
6966 pub metadata: NodeMetadata<'gc>,
6968 pub record_constructor: &'gc Node<'gc>,
6970 pub type_arguments: Option<&'gc Node<'gc>>,
6972 pub properties: &'gc Node<'gc>,
6974}
6975impl<'gc> RecordExpression<'gc> {
6976 pub fn new(
6978 metadata: NodeMetadata<'gc>,
6979 record_constructor: &'gc Node<'gc>,
6980 type_arguments: Option<&'gc Node<'gc>>,
6981 properties: &'gc Node<'gc>,
6982 ) -> Self {
6983 RecordExpression {
6984 metadata,
6985 record_constructor,
6986 type_arguments,
6987 properties,
6988 }
6989 }
6990}
6991
6992#[derive(Debug)]
6994#[repr(C)]
6995pub struct RecordExpressionProperties<'gc> {
6996 pub metadata: NodeMetadata<'gc>,
6998 pub properties: NodeList<'gc>,
7000}
7001impl<'gc> RecordExpressionProperties<'gc> {
7002 pub fn new(
7005 metadata: NodeMetadata<'gc>,
7006 properties: NodeList<'gc>,
7007 ) -> Self {
7008 RecordExpressionProperties {
7009 metadata,
7010 properties,
7011 }
7012 }
7013}
7014
7015#[derive(Debug)]
7017#[repr(C)]
7018pub struct TSTypeAnnotation<'gc> {
7019 pub metadata: NodeMetadata<'gc>,
7021 pub type_annotation: &'gc Node<'gc>,
7023}
7024impl<'gc> TSTypeAnnotation<'gc> {
7025 pub fn new(
7027 metadata: NodeMetadata<'gc>,
7028 type_annotation: &'gc Node<'gc>,
7029 ) -> Self {
7030 TSTypeAnnotation {
7031 metadata,
7032 type_annotation,
7033 }
7034 }
7035}
7036
7037#[derive(Debug)]
7039#[repr(C)]
7040pub struct TSAnyKeyword<'gc> {
7041 pub metadata: NodeMetadata<'gc>,
7043}
7044impl<'gc> TSAnyKeyword<'gc> {
7045 pub fn new(
7047 metadata: NodeMetadata<'gc>,
7048 ) -> Self {
7049 TSAnyKeyword {
7050 metadata,
7051 }
7052 }
7053}
7054
7055#[derive(Debug)]
7057#[repr(C)]
7058pub struct TSNumberKeyword<'gc> {
7059 pub metadata: NodeMetadata<'gc>,
7061}
7062impl<'gc> TSNumberKeyword<'gc> {
7063 pub fn new(
7065 metadata: NodeMetadata<'gc>,
7066 ) -> Self {
7067 TSNumberKeyword {
7068 metadata,
7069 }
7070 }
7071}
7072
7073#[derive(Debug)]
7075#[repr(C)]
7076pub struct TSBooleanKeyword<'gc> {
7077 pub metadata: NodeMetadata<'gc>,
7079}
7080impl<'gc> TSBooleanKeyword<'gc> {
7081 pub fn new(
7083 metadata: NodeMetadata<'gc>,
7084 ) -> Self {
7085 TSBooleanKeyword {
7086 metadata,
7087 }
7088 }
7089}
7090
7091#[derive(Debug)]
7093#[repr(C)]
7094pub struct TSStringKeyword<'gc> {
7095 pub metadata: NodeMetadata<'gc>,
7097}
7098impl<'gc> TSStringKeyword<'gc> {
7099 pub fn new(
7101 metadata: NodeMetadata<'gc>,
7102 ) -> Self {
7103 TSStringKeyword {
7104 metadata,
7105 }
7106 }
7107}
7108
7109#[derive(Debug)]
7111#[repr(C)]
7112pub struct TSSymbolKeyword<'gc> {
7113 pub metadata: NodeMetadata<'gc>,
7115}
7116impl<'gc> TSSymbolKeyword<'gc> {
7117 pub fn new(
7119 metadata: NodeMetadata<'gc>,
7120 ) -> Self {
7121 TSSymbolKeyword {
7122 metadata,
7123 }
7124 }
7125}
7126
7127#[derive(Debug)]
7129#[repr(C)]
7130pub struct TSVoidKeyword<'gc> {
7131 pub metadata: NodeMetadata<'gc>,
7133}
7134impl<'gc> TSVoidKeyword<'gc> {
7135 pub fn new(
7137 metadata: NodeMetadata<'gc>,
7138 ) -> Self {
7139 TSVoidKeyword {
7140 metadata,
7141 }
7142 }
7143}
7144
7145#[derive(Debug)]
7147#[repr(C)]
7148pub struct TSUndefinedKeyword<'gc> {
7149 pub metadata: NodeMetadata<'gc>,
7151}
7152impl<'gc> TSUndefinedKeyword<'gc> {
7153 pub fn new(
7155 metadata: NodeMetadata<'gc>,
7156 ) -> Self {
7157 TSUndefinedKeyword {
7158 metadata,
7159 }
7160 }
7161}
7162
7163#[derive(Debug)]
7165#[repr(C)]
7166pub struct TSUnknownKeyword<'gc> {
7167 pub metadata: NodeMetadata<'gc>,
7169}
7170impl<'gc> TSUnknownKeyword<'gc> {
7171 pub fn new(
7173 metadata: NodeMetadata<'gc>,
7174 ) -> Self {
7175 TSUnknownKeyword {
7176 metadata,
7177 }
7178 }
7179}
7180
7181#[derive(Debug)]
7183#[repr(C)]
7184pub struct TSNeverKeyword<'gc> {
7185 pub metadata: NodeMetadata<'gc>,
7187}
7188impl<'gc> TSNeverKeyword<'gc> {
7189 pub fn new(
7191 metadata: NodeMetadata<'gc>,
7192 ) -> Self {
7193 TSNeverKeyword {
7194 metadata,
7195 }
7196 }
7197}
7198
7199#[derive(Debug)]
7201#[repr(C)]
7202pub struct TSBigIntKeyword<'gc> {
7203 pub metadata: NodeMetadata<'gc>,
7205}
7206impl<'gc> TSBigIntKeyword<'gc> {
7207 pub fn new(
7209 metadata: NodeMetadata<'gc>,
7210 ) -> Self {
7211 TSBigIntKeyword {
7212 metadata,
7213 }
7214 }
7215}
7216
7217#[derive(Debug)]
7219#[repr(C)]
7220pub struct TSThisType<'gc> {
7221 pub metadata: NodeMetadata<'gc>,
7223}
7224impl<'gc> TSThisType<'gc> {
7225 pub fn new(
7227 metadata: NodeMetadata<'gc>,
7228 ) -> Self {
7229 TSThisType {
7230 metadata,
7231 }
7232 }
7233}
7234
7235#[derive(Debug)]
7237#[repr(C)]
7238pub struct TSLiteralType<'gc> {
7239 pub metadata: NodeMetadata<'gc>,
7241 pub literal: &'gc Node<'gc>,
7243}
7244impl<'gc> TSLiteralType<'gc> {
7245 pub fn new(
7247 metadata: NodeMetadata<'gc>,
7248 literal: &'gc Node<'gc>,
7249 ) -> Self {
7250 TSLiteralType {
7251 metadata,
7252 literal,
7253 }
7254 }
7255}
7256
7257#[derive(Debug)]
7259#[repr(C)]
7260pub struct TSIndexedAccessType<'gc> {
7261 pub metadata: NodeMetadata<'gc>,
7263 pub object_type: &'gc Node<'gc>,
7265 pub index_type: &'gc Node<'gc>,
7267}
7268impl<'gc> TSIndexedAccessType<'gc> {
7269 pub fn new(
7271 metadata: NodeMetadata<'gc>,
7272 object_type: &'gc Node<'gc>,
7273 index_type: &'gc Node<'gc>,
7274 ) -> Self {
7275 TSIndexedAccessType {
7276 metadata,
7277 object_type,
7278 index_type,
7279 }
7280 }
7281}
7282
7283#[derive(Debug)]
7285#[repr(C)]
7286pub struct TSArrayType<'gc> {
7287 pub metadata: NodeMetadata<'gc>,
7289 pub element_type: &'gc Node<'gc>,
7291}
7292impl<'gc> TSArrayType<'gc> {
7293 pub fn new(
7295 metadata: NodeMetadata<'gc>,
7296 element_type: &'gc Node<'gc>,
7297 ) -> Self {
7298 TSArrayType {
7299 metadata,
7300 element_type,
7301 }
7302 }
7303}
7304
7305#[derive(Debug)]
7307#[repr(C)]
7308pub struct TSTypeReference<'gc> {
7309 pub metadata: NodeMetadata<'gc>,
7311 pub type_name: &'gc Node<'gc>,
7313 pub type_parameters: Option<&'gc Node<'gc>>,
7315}
7316impl<'gc> TSTypeReference<'gc> {
7317 pub fn new(
7319 metadata: NodeMetadata<'gc>,
7320 type_name: &'gc Node<'gc>,
7321 type_parameters: Option<&'gc Node<'gc>>,
7322 ) -> Self {
7323 TSTypeReference {
7324 metadata,
7325 type_name,
7326 type_parameters,
7327 }
7328 }
7329}
7330
7331#[derive(Debug)]
7333#[repr(C)]
7334pub struct TSQualifiedName<'gc> {
7335 pub metadata: NodeMetadata<'gc>,
7337 pub left: &'gc Node<'gc>,
7339 pub right: Option<&'gc Node<'gc>>,
7341}
7342impl<'gc> TSQualifiedName<'gc> {
7343 pub fn new(
7345 metadata: NodeMetadata<'gc>,
7346 left: &'gc Node<'gc>,
7347 right: Option<&'gc Node<'gc>>,
7348 ) -> Self {
7349 TSQualifiedName {
7350 metadata,
7351 left,
7352 right,
7353 }
7354 }
7355}
7356
7357#[derive(Debug)]
7359#[repr(C)]
7360pub struct TSFunctionType<'gc> {
7361 pub metadata: NodeMetadata<'gc>,
7363 pub params: NodeList<'gc>,
7365 pub return_type: &'gc Node<'gc>,
7367 pub type_parameters: Option<&'gc Node<'gc>>,
7369}
7370impl<'gc> TSFunctionType<'gc> {
7371 pub fn new(
7373 metadata: NodeMetadata<'gc>,
7374 params: NodeList<'gc>,
7375 return_type: &'gc Node<'gc>,
7376 type_parameters: Option<&'gc Node<'gc>>,
7377 ) -> Self {
7378 TSFunctionType {
7379 metadata,
7380 params,
7381 return_type,
7382 type_parameters,
7383 }
7384 }
7385}
7386
7387#[derive(Debug)]
7389#[repr(C)]
7390pub struct TSConstructorType<'gc> {
7391 pub metadata: NodeMetadata<'gc>,
7393 pub params: NodeList<'gc>,
7395 pub return_type: &'gc Node<'gc>,
7397 pub type_parameters: Option<&'gc Node<'gc>>,
7399}
7400impl<'gc> TSConstructorType<'gc> {
7401 pub fn new(
7403 metadata: NodeMetadata<'gc>,
7404 params: NodeList<'gc>,
7405 return_type: &'gc Node<'gc>,
7406 type_parameters: Option<&'gc Node<'gc>>,
7407 ) -> Self {
7408 TSConstructorType {
7409 metadata,
7410 params,
7411 return_type,
7412 type_parameters,
7413 }
7414 }
7415}
7416
7417#[derive(Debug)]
7419#[repr(C)]
7420pub struct TSTypePredicate<'gc> {
7421 pub metadata: NodeMetadata<'gc>,
7423 pub parameter_name: &'gc Node<'gc>,
7425 pub type_annotation: &'gc Node<'gc>,
7427}
7428impl<'gc> TSTypePredicate<'gc> {
7429 pub fn new(
7431 metadata: NodeMetadata<'gc>,
7432 parameter_name: &'gc Node<'gc>,
7433 type_annotation: &'gc Node<'gc>,
7434 ) -> Self {
7435 TSTypePredicate {
7436 metadata,
7437 parameter_name,
7438 type_annotation,
7439 }
7440 }
7441}
7442
7443#[derive(Debug)]
7445#[repr(C)]
7446pub struct TSTupleType<'gc> {
7447 pub metadata: NodeMetadata<'gc>,
7449 pub element_types: NodeList<'gc>,
7451}
7452impl<'gc> TSTupleType<'gc> {
7453 pub fn new(
7455 metadata: NodeMetadata<'gc>,
7456 element_types: NodeList<'gc>,
7457 ) -> Self {
7458 TSTupleType {
7459 metadata,
7460 element_types,
7461 }
7462 }
7463}
7464
7465#[derive(Debug)]
7467#[repr(C)]
7468pub struct TSTypeAssertion<'gc> {
7469 pub metadata: NodeMetadata<'gc>,
7471 pub type_annotation: &'gc Node<'gc>,
7473 pub expression: &'gc Node<'gc>,
7475}
7476impl<'gc> TSTypeAssertion<'gc> {
7477 pub fn new(
7479 metadata: NodeMetadata<'gc>,
7480 type_annotation: &'gc Node<'gc>,
7481 expression: &'gc Node<'gc>,
7482 ) -> Self {
7483 TSTypeAssertion {
7484 metadata,
7485 type_annotation,
7486 expression,
7487 }
7488 }
7489}
7490
7491#[derive(Debug)]
7493#[repr(C)]
7494pub struct TSAsExpression<'gc> {
7495 pub metadata: NodeMetadata<'gc>,
7497 pub expression: &'gc Node<'gc>,
7499 pub type_annotation: &'gc Node<'gc>,
7501}
7502impl<'gc> TSAsExpression<'gc> {
7503 pub fn new(
7505 metadata: NodeMetadata<'gc>,
7506 expression: &'gc Node<'gc>,
7507 type_annotation: &'gc Node<'gc>,
7508 ) -> Self {
7509 TSAsExpression {
7510 metadata,
7511 expression,
7512 type_annotation,
7513 }
7514 }
7515}
7516
7517#[derive(Debug)]
7519#[repr(C)]
7520pub struct TSParameterProperty<'gc> {
7521 pub metadata: NodeMetadata<'gc>,
7523 pub parameter: &'gc Node<'gc>,
7525 pub accessibility: Cell<NodeLabel>,
7527 pub readonly: Cell<bool>,
7529 pub r#static: Cell<bool>,
7531 pub export: Cell<bool>,
7533}
7534impl<'gc> TSParameterProperty<'gc> {
7535 pub fn new(
7537 metadata: NodeMetadata<'gc>,
7538 parameter: &'gc Node<'gc>,
7539 accessibility: NodeLabel,
7540 readonly: bool,
7541 r#static: bool,
7542 export: bool,
7543 ) -> Self {
7544 TSParameterProperty {
7545 metadata,
7546 parameter,
7547 accessibility: Cell::new(accessibility),
7548 readonly: Cell::new(readonly),
7549 r#static: Cell::new(r#static),
7550 export: Cell::new(export),
7551 }
7552 }
7553}
7554
7555#[derive(Debug)]
7557#[repr(C)]
7558pub struct TSTypeAliasDeclaration<'gc> {
7559 pub metadata: NodeMetadata<'gc>,
7561 pub id: &'gc Node<'gc>,
7563 pub type_parameters: Option<&'gc Node<'gc>>,
7565 pub type_annotation: &'gc Node<'gc>,
7567}
7568impl<'gc> TSTypeAliasDeclaration<'gc> {
7569 pub fn new(
7572 metadata: NodeMetadata<'gc>,
7573 id: &'gc Node<'gc>,
7574 type_parameters: Option<&'gc Node<'gc>>,
7575 type_annotation: &'gc Node<'gc>,
7576 ) -> Self {
7577 TSTypeAliasDeclaration {
7578 metadata,
7579 id,
7580 type_parameters,
7581 type_annotation,
7582 }
7583 }
7584}
7585
7586#[derive(Debug)]
7588#[repr(C)]
7589pub struct TSInterfaceDeclaration<'gc> {
7590 pub metadata: NodeMetadata<'gc>,
7592 pub id: &'gc Node<'gc>,
7594 pub body: &'gc Node<'gc>,
7596 pub extends: NodeList<'gc>,
7598 pub type_parameters: Option<&'gc Node<'gc>>,
7600}
7601impl<'gc> TSInterfaceDeclaration<'gc> {
7602 pub fn new(
7605 metadata: NodeMetadata<'gc>,
7606 id: &'gc Node<'gc>,
7607 body: &'gc Node<'gc>,
7608 extends: NodeList<'gc>,
7609 type_parameters: Option<&'gc Node<'gc>>,
7610 ) -> Self {
7611 TSInterfaceDeclaration {
7612 metadata,
7613 id,
7614 body,
7615 extends,
7616 type_parameters,
7617 }
7618 }
7619}
7620
7621#[derive(Debug)]
7623#[repr(C)]
7624pub struct TSInterfaceHeritage<'gc> {
7625 pub metadata: NodeMetadata<'gc>,
7627 pub expression: &'gc Node<'gc>,
7629 pub type_parameters: Option<&'gc Node<'gc>>,
7631}
7632impl<'gc> TSInterfaceHeritage<'gc> {
7633 pub fn new(
7635 metadata: NodeMetadata<'gc>,
7636 expression: &'gc Node<'gc>,
7637 type_parameters: Option<&'gc Node<'gc>>,
7638 ) -> Self {
7639 TSInterfaceHeritage {
7640 metadata,
7641 expression,
7642 type_parameters,
7643 }
7644 }
7645}
7646
7647#[derive(Debug)]
7649#[repr(C)]
7650pub struct TSInterfaceBody<'gc> {
7651 pub metadata: NodeMetadata<'gc>,
7653 pub body: NodeList<'gc>,
7655}
7656impl<'gc> TSInterfaceBody<'gc> {
7657 pub fn new(
7659 metadata: NodeMetadata<'gc>,
7660 body: NodeList<'gc>,
7661 ) -> Self {
7662 TSInterfaceBody {
7663 metadata,
7664 body,
7665 }
7666 }
7667}
7668
7669#[derive(Debug)]
7671#[repr(C)]
7672pub struct TSEnumDeclaration<'gc> {
7673 pub metadata: NodeMetadata<'gc>,
7675 pub id: &'gc Node<'gc>,
7677 pub members: NodeList<'gc>,
7679}
7680impl<'gc> TSEnumDeclaration<'gc> {
7681 pub fn new(
7683 metadata: NodeMetadata<'gc>,
7684 id: &'gc Node<'gc>,
7685 members: NodeList<'gc>,
7686 ) -> Self {
7687 TSEnumDeclaration {
7688 metadata,
7689 id,
7690 members,
7691 }
7692 }
7693}
7694
7695#[derive(Debug)]
7697#[repr(C)]
7698pub struct TSEnumMember<'gc> {
7699 pub metadata: NodeMetadata<'gc>,
7701 pub id: &'gc Node<'gc>,
7703 pub initializer: Option<&'gc Node<'gc>>,
7705}
7706impl<'gc> TSEnumMember<'gc> {
7707 pub fn new(
7709 metadata: NodeMetadata<'gc>,
7710 id: &'gc Node<'gc>,
7711 initializer: Option<&'gc Node<'gc>>,
7712 ) -> Self {
7713 TSEnumMember {
7714 metadata,
7715 id,
7716 initializer,
7717 }
7718 }
7719}
7720
7721#[derive(Debug)]
7723#[repr(C)]
7724pub struct TSModuleDeclaration<'gc> {
7725 pub metadata: NodeMetadata<'gc>,
7727 pub id: &'gc Node<'gc>,
7729 pub body: &'gc Node<'gc>,
7731}
7732impl<'gc> TSModuleDeclaration<'gc> {
7733 pub fn new(
7735 metadata: NodeMetadata<'gc>,
7736 id: &'gc Node<'gc>,
7737 body: &'gc Node<'gc>,
7738 ) -> Self {
7739 TSModuleDeclaration {
7740 metadata,
7741 id,
7742 body,
7743 }
7744 }
7745}
7746
7747#[derive(Debug)]
7749#[repr(C)]
7750pub struct TSModuleBlock<'gc> {
7751 pub metadata: NodeMetadata<'gc>,
7753 pub body: NodeList<'gc>,
7755}
7756impl<'gc> TSModuleBlock<'gc> {
7757 pub fn new(
7759 metadata: NodeMetadata<'gc>,
7760 body: NodeList<'gc>,
7761 ) -> Self {
7762 TSModuleBlock {
7763 metadata,
7764 body,
7765 }
7766 }
7767}
7768
7769#[derive(Debug)]
7771#[repr(C)]
7772pub struct TSModuleMember<'gc> {
7773 pub metadata: NodeMetadata<'gc>,
7775 pub id: &'gc Node<'gc>,
7777 pub initializer: Option<&'gc Node<'gc>>,
7779}
7780impl<'gc> TSModuleMember<'gc> {
7781 pub fn new(
7783 metadata: NodeMetadata<'gc>,
7784 id: &'gc Node<'gc>,
7785 initializer: Option<&'gc Node<'gc>>,
7786 ) -> Self {
7787 TSModuleMember {
7788 metadata,
7789 id,
7790 initializer,
7791 }
7792 }
7793}
7794
7795#[derive(Debug)]
7797#[repr(C)]
7798pub struct TSTypeParameterDeclaration<'gc> {
7799 pub metadata: NodeMetadata<'gc>,
7801 pub params: NodeList<'gc>,
7803}
7804impl<'gc> TSTypeParameterDeclaration<'gc> {
7805 pub fn new(
7808 metadata: NodeMetadata<'gc>,
7809 params: NodeList<'gc>,
7810 ) -> Self {
7811 TSTypeParameterDeclaration {
7812 metadata,
7813 params,
7814 }
7815 }
7816}
7817
7818#[derive(Debug)]
7820#[repr(C)]
7821pub struct TSTypeParameter<'gc> {
7822 pub metadata: NodeMetadata<'gc>,
7824 pub name: &'gc Node<'gc>,
7826 pub constraint: Option<&'gc Node<'gc>>,
7828 pub default: Option<&'gc Node<'gc>>,
7830}
7831impl<'gc> TSTypeParameter<'gc> {
7832 pub fn new(
7834 metadata: NodeMetadata<'gc>,
7835 name: &'gc Node<'gc>,
7836 constraint: Option<&'gc Node<'gc>>,
7837 default: Option<&'gc Node<'gc>>,
7838 ) -> Self {
7839 TSTypeParameter {
7840 metadata,
7841 name,
7842 constraint,
7843 default,
7844 }
7845 }
7846}
7847
7848#[derive(Debug)]
7850#[repr(C)]
7851pub struct TSTypeParameterInstantiation<'gc> {
7852 pub metadata: NodeMetadata<'gc>,
7854 pub params: NodeList<'gc>,
7856}
7857impl<'gc> TSTypeParameterInstantiation<'gc> {
7858 pub fn new(
7861 metadata: NodeMetadata<'gc>,
7862 params: NodeList<'gc>,
7863 ) -> Self {
7864 TSTypeParameterInstantiation {
7865 metadata,
7866 params,
7867 }
7868 }
7869}
7870
7871#[derive(Debug)]
7873#[repr(C)]
7874pub struct TSUnionType<'gc> {
7875 pub metadata: NodeMetadata<'gc>,
7877 pub types: NodeList<'gc>,
7879}
7880impl<'gc> TSUnionType<'gc> {
7881 pub fn new(
7883 metadata: NodeMetadata<'gc>,
7884 types: NodeList<'gc>,
7885 ) -> Self {
7886 TSUnionType {
7887 metadata,
7888 types,
7889 }
7890 }
7891}
7892
7893#[derive(Debug)]
7895#[repr(C)]
7896pub struct TSIntersectionType<'gc> {
7897 pub metadata: NodeMetadata<'gc>,
7899 pub types: NodeList<'gc>,
7901}
7902impl<'gc> TSIntersectionType<'gc> {
7903 pub fn new(
7905 metadata: NodeMetadata<'gc>,
7906 types: NodeList<'gc>,
7907 ) -> Self {
7908 TSIntersectionType {
7909 metadata,
7910 types,
7911 }
7912 }
7913}
7914
7915#[derive(Debug)]
7917#[repr(C)]
7918pub struct TSTypeQuery<'gc> {
7919 pub metadata: NodeMetadata<'gc>,
7921 pub expr_name: &'gc Node<'gc>,
7923}
7924impl<'gc> TSTypeQuery<'gc> {
7925 pub fn new(
7927 metadata: NodeMetadata<'gc>,
7928 expr_name: &'gc Node<'gc>,
7929 ) -> Self {
7930 TSTypeQuery {
7931 metadata,
7932 expr_name,
7933 }
7934 }
7935}
7936
7937#[derive(Debug)]
7939#[repr(C)]
7940pub struct TSConditionalType<'gc> {
7941 pub metadata: NodeMetadata<'gc>,
7943 pub check_type: &'gc Node<'gc>,
7945 pub extends_type: &'gc Node<'gc>,
7947 pub true_type: &'gc Node<'gc>,
7949 pub false_type: &'gc Node<'gc>,
7951}
7952impl<'gc> TSConditionalType<'gc> {
7953 pub fn new(
7955 metadata: NodeMetadata<'gc>,
7956 check_type: &'gc Node<'gc>,
7957 extends_type: &'gc Node<'gc>,
7958 true_type: &'gc Node<'gc>,
7959 false_type: &'gc Node<'gc>,
7960 ) -> Self {
7961 TSConditionalType {
7962 metadata,
7963 check_type,
7964 extends_type,
7965 true_type,
7966 false_type,
7967 }
7968 }
7969}
7970
7971#[derive(Debug)]
7973#[repr(C)]
7974pub struct TSTypeLiteral<'gc> {
7975 pub metadata: NodeMetadata<'gc>,
7977 pub members: NodeList<'gc>,
7979}
7980impl<'gc> TSTypeLiteral<'gc> {
7981 pub fn new(
7983 metadata: NodeMetadata<'gc>,
7984 members: NodeList<'gc>,
7985 ) -> Self {
7986 TSTypeLiteral {
7987 metadata,
7988 members,
7989 }
7990 }
7991}
7992
7993#[derive(Debug)]
7995#[repr(C)]
7996pub struct TSPropertySignature<'gc> {
7997 pub metadata: NodeMetadata<'gc>,
7999 pub key: &'gc Node<'gc>,
8001 pub type_annotation: Option<&'gc Node<'gc>>,
8003 pub initializer: Option<&'gc Node<'gc>>,
8005 pub optional: Cell<bool>,
8007 pub computed: Cell<bool>,
8009 pub readonly: Cell<bool>,
8011 pub r#static: Cell<bool>,
8013 pub export: Cell<bool>,
8015}
8016impl<'gc> TSPropertySignature<'gc> {
8017 pub fn new(
8019 metadata: NodeMetadata<'gc>,
8020 key: &'gc Node<'gc>,
8021 type_annotation: Option<&'gc Node<'gc>>,
8022 initializer: Option<&'gc Node<'gc>>,
8023 optional: bool,
8024 computed: bool,
8025 readonly: bool,
8026 r#static: bool,
8027 export: bool,
8028 ) -> Self {
8029 TSPropertySignature {
8030 metadata,
8031 key,
8032 type_annotation,
8033 initializer,
8034 optional: Cell::new(optional),
8035 computed: Cell::new(computed),
8036 readonly: Cell::new(readonly),
8037 r#static: Cell::new(r#static),
8038 export: Cell::new(export),
8039 }
8040 }
8041}
8042
8043#[derive(Debug)]
8045#[repr(C)]
8046pub struct TSMethodSignature<'gc> {
8047 pub metadata: NodeMetadata<'gc>,
8049 pub key: &'gc Node<'gc>,
8051 pub params: NodeList<'gc>,
8053 pub return_type: Option<&'gc Node<'gc>>,
8055 pub computed: Cell<bool>,
8057}
8058impl<'gc> TSMethodSignature<'gc> {
8059 pub fn new(
8061 metadata: NodeMetadata<'gc>,
8062 key: &'gc Node<'gc>,
8063 params: NodeList<'gc>,
8064 return_type: Option<&'gc Node<'gc>>,
8065 computed: bool,
8066 ) -> Self {
8067 TSMethodSignature {
8068 metadata,
8069 key,
8070 params,
8071 return_type,
8072 computed: Cell::new(computed),
8073 }
8074 }
8075}
8076
8077#[derive(Debug)]
8079#[repr(C)]
8080pub struct TSIndexSignature<'gc> {
8081 pub metadata: NodeMetadata<'gc>,
8083 pub parameters: NodeList<'gc>,
8085 pub type_annotation: Option<&'gc Node<'gc>>,
8087}
8088impl<'gc> TSIndexSignature<'gc> {
8089 pub fn new(
8091 metadata: NodeMetadata<'gc>,
8092 parameters: NodeList<'gc>,
8093 type_annotation: Option<&'gc Node<'gc>>,
8094 ) -> Self {
8095 TSIndexSignature {
8096 metadata,
8097 parameters,
8098 type_annotation,
8099 }
8100 }
8101}
8102
8103#[derive(Debug)]
8105#[repr(C)]
8106pub struct TSCallSignatureDeclaration<'gc> {
8107 pub metadata: NodeMetadata<'gc>,
8109 pub params: NodeList<'gc>,
8111 pub return_type: Option<&'gc Node<'gc>>,
8113}
8114impl<'gc> TSCallSignatureDeclaration<'gc> {
8115 pub fn new(
8118 metadata: NodeMetadata<'gc>,
8119 params: NodeList<'gc>,
8120 return_type: Option<&'gc Node<'gc>>,
8121 ) -> Self {
8122 TSCallSignatureDeclaration {
8123 metadata,
8124 params,
8125 return_type,
8126 }
8127 }
8128}
8129
8130#[derive(Debug)]
8132#[repr(C)]
8133pub struct TSModifiers<'gc> {
8134 pub metadata: NodeMetadata<'gc>,
8136 pub accessibility: Cell<NodeLabel>,
8138 pub readonly: Cell<bool>,
8140}
8141impl<'gc> TSModifiers<'gc> {
8142 pub fn new(
8144 metadata: NodeMetadata<'gc>,
8145 accessibility: NodeLabel,
8146 readonly: bool,
8147 ) -> Self {
8148 TSModifiers {
8149 metadata,
8150 accessibility: Cell::new(accessibility),
8151 readonly: Cell::new(readonly),
8152 }
8153 }
8154}
8155
8156#[derive(Debug)]
8158#[repr(C)]
8159pub struct CoverEmptyArgs<'gc> {
8160 pub metadata: NodeMetadata<'gc>,
8162}
8163impl<'gc> CoverEmptyArgs<'gc> {
8164 pub fn new(
8166 metadata: NodeMetadata<'gc>,
8167 ) -> Self {
8168 CoverEmptyArgs {
8169 metadata,
8170 }
8171 }
8172}
8173
8174#[derive(Debug)]
8176#[repr(C)]
8177pub struct CoverTrailingComma<'gc> {
8178 pub metadata: NodeMetadata<'gc>,
8180}
8181impl<'gc> CoverTrailingComma<'gc> {
8182 pub fn new(
8184 metadata: NodeMetadata<'gc>,
8185 ) -> Self {
8186 CoverTrailingComma {
8187 metadata,
8188 }
8189 }
8190}
8191
8192#[derive(Debug)]
8194#[repr(C)]
8195pub struct CoverInitializer<'gc> {
8196 pub metadata: NodeMetadata<'gc>,
8198 pub init: &'gc Node<'gc>,
8200}
8201impl<'gc> CoverInitializer<'gc> {
8202 pub fn new(
8204 metadata: NodeMetadata<'gc>,
8205 init: &'gc Node<'gc>,
8206 ) -> Self {
8207 CoverInitializer {
8208 metadata,
8209 init,
8210 }
8211 }
8212}
8213
8214#[derive(Debug)]
8216#[repr(C)]
8217pub struct CoverRestElement<'gc> {
8218 pub metadata: NodeMetadata<'gc>,
8220 pub rest: &'gc Node<'gc>,
8222}
8223impl<'gc> CoverRestElement<'gc> {
8224 pub fn new(
8226 metadata: NodeMetadata<'gc>,
8227 rest: &'gc Node<'gc>,
8228 ) -> Self {
8229 CoverRestElement {
8230 metadata,
8231 rest,
8232 }
8233 }
8234}
8235
8236#[derive(Debug)]
8238#[repr(C)]
8239pub struct CoverTypedIdentifier<'gc> {
8240 pub metadata: NodeMetadata<'gc>,
8242 pub left: &'gc Node<'gc>,
8244 pub right: Option<&'gc Node<'gc>>,
8246 pub optional: Cell<bool>,
8248}
8249impl<'gc> CoverTypedIdentifier<'gc> {
8250 pub fn new(
8252 metadata: NodeMetadata<'gc>,
8253 left: &'gc Node<'gc>,
8254 right: Option<&'gc Node<'gc>>,
8255 optional: bool,
8256 ) -> Self {
8257 CoverTypedIdentifier {
8258 metadata,
8259 left,
8260 right,
8261 optional: Cell::new(optional),
8262 }
8263 }
8264}
8265
8266#[derive(Debug)]
8268#[repr(C)]
8269pub struct SHBuiltin<'gc> {
8270 pub metadata: NodeMetadata<'gc>,
8272}
8273impl<'gc> SHBuiltin<'gc> {
8274 pub fn new(
8276 metadata: NodeMetadata<'gc>,
8277 ) -> Self {
8278 SHBuiltin {
8279 metadata,
8280 }
8281 }
8282}
8283
8284#[derive(Debug)]
8286#[repr(C)]
8287pub struct ImplicitCheckedCast<'gc> {
8288 pub metadata: NodeMetadata<'gc>,
8290 pub argument: &'gc Node<'gc>,
8292}
8293impl<'gc> ImplicitCheckedCast<'gc> {
8294 pub fn new(
8296 metadata: NodeMetadata<'gc>,
8297 argument: &'gc Node<'gc>,
8298 ) -> Self {
8299 ImplicitCheckedCast {
8300 metadata,
8301 argument,
8302 }
8303 }
8304}
8305
8306#[derive(Debug)]
8313#[repr(C)]
8314pub enum Node<'gc> {
8315 Empty(Empty<'gc>),
8317 Metadata(Metadata<'gc>),
8319 Program(Program<'gc>),
8321 FunctionExpression(FunctionExpression<'gc>),
8323 ArrowFunctionExpression(ArrowFunctionExpression<'gc>),
8325 FunctionDeclaration(FunctionDeclaration<'gc>),
8327 ComponentDeclaration(ComponentDeclaration<'gc>),
8329 HookDeclaration(HookDeclaration<'gc>),
8331 MatchStatement(MatchStatement<'gc>),
8333 WhileStatement(WhileStatement<'gc>),
8335 DoWhileStatement(DoWhileStatement<'gc>),
8337 ForInStatement(ForInStatement<'gc>),
8339 ForOfStatement(ForOfStatement<'gc>),
8341 ForStatement(ForStatement<'gc>),
8343 DebuggerStatement(DebuggerStatement<'gc>),
8345 EmptyStatement(EmptyStatement<'gc>),
8347 BlockStatement(BlockStatement<'gc>),
8349 StaticBlock(StaticBlock<'gc>),
8351 BreakStatement(BreakStatement<'gc>),
8353 ContinueStatement(ContinueStatement<'gc>),
8355 ThrowStatement(ThrowStatement<'gc>),
8357 ReturnStatement(ReturnStatement<'gc>),
8359 WithStatement(WithStatement<'gc>),
8361 SwitchStatement(SwitchStatement<'gc>),
8363 LabeledStatement(LabeledStatement<'gc>),
8365 ExpressionStatement(ExpressionStatement<'gc>),
8367 TryStatement(TryStatement<'gc>),
8369 IfStatement(IfStatement<'gc>),
8371 NullLiteral(NullLiteral<'gc>),
8373 BooleanLiteral(BooleanLiteral<'gc>),
8375 StringLiteral(StringLiteral<'gc>),
8377 NumericLiteral(NumericLiteral<'gc>),
8379 RegExpLiteral(RegExpLiteral<'gc>),
8381 BigIntLiteral(BigIntLiteral<'gc>),
8383 ThisExpression(ThisExpression<'gc>),
8385 Super(Super<'gc>),
8387 SequenceExpression(SequenceExpression<'gc>),
8389 ObjectExpression(ObjectExpression<'gc>),
8391 ArrayExpression(ArrayExpression<'gc>),
8393 SpreadElement(SpreadElement<'gc>),
8395 NewExpression(NewExpression<'gc>),
8397 YieldExpression(YieldExpression<'gc>),
8399 AwaitExpression(AwaitExpression<'gc>),
8401 ImportExpression(ImportExpression<'gc>),
8403 CallExpression(CallExpression<'gc>),
8405 OptionalCallExpression(OptionalCallExpression<'gc>),
8407 AssignmentExpression(AssignmentExpression<'gc>),
8409 UnaryExpression(UnaryExpression<'gc>),
8411 UpdateExpression(UpdateExpression<'gc>),
8413 MemberExpression(MemberExpression<'gc>),
8415 OptionalMemberExpression(OptionalMemberExpression<'gc>),
8417 LogicalExpression(LogicalExpression<'gc>),
8419 ConditionalExpression(ConditionalExpression<'gc>),
8421 BinaryExpression(BinaryExpression<'gc>),
8423 Directive(Directive<'gc>),
8425 DirectiveLiteral(DirectiveLiteral<'gc>),
8427 Identifier(Identifier<'gc>),
8429 PrivateName(PrivateName<'gc>),
8431 MetaProperty(MetaProperty<'gc>),
8433 SwitchCase(SwitchCase<'gc>),
8435 CatchClause(CatchClause<'gc>),
8437 VariableDeclarator(VariableDeclarator<'gc>),
8439 VariableDeclaration(VariableDeclaration<'gc>),
8441 TemplateLiteral(TemplateLiteral<'gc>),
8443 TaggedTemplateExpression(TaggedTemplateExpression<'gc>),
8445 TemplateElement(TemplateElement<'gc>),
8447 Property(Property<'gc>),
8449 Decorator(Decorator<'gc>),
8451 ClassDeclaration(ClassDeclaration<'gc>),
8453 ClassExpression(ClassExpression<'gc>),
8455 ClassBody(ClassBody<'gc>),
8457 ClassProperty(ClassProperty<'gc>),
8459 ClassPrivateProperty(ClassPrivateProperty<'gc>),
8461 MethodDefinition(MethodDefinition<'gc>),
8463 ImportDeclaration(ImportDeclaration<'gc>),
8465 ImportSpecifier(ImportSpecifier<'gc>),
8467 ImportDefaultSpecifier(ImportDefaultSpecifier<'gc>),
8469 ImportNamespaceSpecifier(ImportNamespaceSpecifier<'gc>),
8471 ImportAttribute(ImportAttribute<'gc>),
8473 ExportNamedDeclaration(ExportNamedDeclaration<'gc>),
8475 ExportSpecifier(ExportSpecifier<'gc>),
8477 ExportNamespaceSpecifier(ExportNamespaceSpecifier<'gc>),
8479 ExportDefaultDeclaration(ExportDefaultDeclaration<'gc>),
8481 ExportAllDeclaration(ExportAllDeclaration<'gc>),
8483 ObjectPattern(ObjectPattern<'gc>),
8485 ArrayPattern(ArrayPattern<'gc>),
8487 RestElement(RestElement<'gc>),
8489 AssignmentPattern(AssignmentPattern<'gc>),
8491 MatchStatementCase(MatchStatementCase<'gc>),
8493 MatchExpression(MatchExpression<'gc>),
8495 MatchExpressionCase(MatchExpressionCase<'gc>),
8497 MatchWildcardPattern(MatchWildcardPattern<'gc>),
8499 MatchLiteralPattern(MatchLiteralPattern<'gc>),
8501 MatchUnaryPattern(MatchUnaryPattern<'gc>),
8503 MatchIdentifierPattern(MatchIdentifierPattern<'gc>),
8505 MatchBindingPattern(MatchBindingPattern<'gc>),
8507 MatchObjectPattern(MatchObjectPattern<'gc>),
8509 MatchArrayPattern(MatchArrayPattern<'gc>),
8511 MatchOrPattern(MatchOrPattern<'gc>),
8513 MatchAsPattern(MatchAsPattern<'gc>),
8515 MatchMemberPattern(MatchMemberPattern<'gc>),
8517 MatchInstancePattern(MatchInstancePattern<'gc>),
8519 MatchObjectPatternProperty(MatchObjectPatternProperty<'gc>),
8521 MatchInstanceObjectPattern(MatchInstanceObjectPattern<'gc>),
8523 MatchRestPattern(MatchRestPattern<'gc>),
8525 JSXIdentifier(JSXIdentifier<'gc>),
8527 JSXMemberExpression(JSXMemberExpression<'gc>),
8529 JSXNamespacedName(JSXNamespacedName<'gc>),
8531 JSXEmptyExpression(JSXEmptyExpression<'gc>),
8533 JSXExpressionContainer(JSXExpressionContainer<'gc>),
8535 JSXSpreadChild(JSXSpreadChild<'gc>),
8537 JSXOpeningElement(JSXOpeningElement<'gc>),
8539 JSXClosingElement(JSXClosingElement<'gc>),
8541 JSXAttribute(JSXAttribute<'gc>),
8543 JSXSpreadAttribute(JSXSpreadAttribute<'gc>),
8545 JSXStringLiteral(JSXStringLiteral<'gc>),
8547 JSXText(JSXText<'gc>),
8549 JSXElement(JSXElement<'gc>),
8551 JSXFragment(JSXFragment<'gc>),
8553 JSXOpeningFragment(JSXOpeningFragment<'gc>),
8555 JSXClosingFragment(JSXClosingFragment<'gc>),
8557 ExistsTypeAnnotation(ExistsTypeAnnotation<'gc>),
8559 EmptyTypeAnnotation(EmptyTypeAnnotation<'gc>),
8561 StringTypeAnnotation(StringTypeAnnotation<'gc>),
8563 NumberTypeAnnotation(NumberTypeAnnotation<'gc>),
8565 StringLiteralTypeAnnotation(StringLiteralTypeAnnotation<'gc>),
8567 NumberLiteralTypeAnnotation(NumberLiteralTypeAnnotation<'gc>),
8569 BigIntLiteralTypeAnnotation(BigIntLiteralTypeAnnotation<'gc>),
8571 BooleanTypeAnnotation(BooleanTypeAnnotation<'gc>),
8573 BooleanLiteralTypeAnnotation(BooleanLiteralTypeAnnotation<'gc>),
8575 NullLiteralTypeAnnotation(NullLiteralTypeAnnotation<'gc>),
8577 SymbolTypeAnnotation(SymbolTypeAnnotation<'gc>),
8579 AnyTypeAnnotation(AnyTypeAnnotation<'gc>),
8581 MixedTypeAnnotation(MixedTypeAnnotation<'gc>),
8583 BigIntTypeAnnotation(BigIntTypeAnnotation<'gc>),
8585 VoidTypeAnnotation(VoidTypeAnnotation<'gc>),
8587 NeverTypeAnnotation(NeverTypeAnnotation<'gc>),
8589 UnknownTypeAnnotation(UnknownTypeAnnotation<'gc>),
8591 UndefinedTypeAnnotation(UndefinedTypeAnnotation<'gc>),
8593 FunctionTypeAnnotation(FunctionTypeAnnotation<'gc>),
8595 HookTypeAnnotation(HookTypeAnnotation<'gc>),
8597 FunctionTypeParam(FunctionTypeParam<'gc>),
8599 ComponentTypeAnnotation(ComponentTypeAnnotation<'gc>),
8601 ComponentTypeParameter(ComponentTypeParameter<'gc>),
8603 NullableTypeAnnotation(NullableTypeAnnotation<'gc>),
8605 QualifiedTypeIdentifier(QualifiedTypeIdentifier<'gc>),
8607 TypeofTypeAnnotation(TypeofTypeAnnotation<'gc>),
8609 KeyofTypeAnnotation(KeyofTypeAnnotation<'gc>),
8611 TypeOperator(TypeOperator<'gc>),
8613 QualifiedTypeofIdentifier(QualifiedTypeofIdentifier<'gc>),
8615 TupleTypeAnnotation(TupleTypeAnnotation<'gc>),
8617 TupleTypeSpreadElement(TupleTypeSpreadElement<'gc>),
8619 TupleTypeLabeledElement(TupleTypeLabeledElement<'gc>),
8621 ArrayTypeAnnotation(ArrayTypeAnnotation<'gc>),
8623 InferTypeAnnotation(InferTypeAnnotation<'gc>),
8625 UnionTypeAnnotation(UnionTypeAnnotation<'gc>),
8627 IntersectionTypeAnnotation(IntersectionTypeAnnotation<'gc>),
8629 GenericTypeAnnotation(GenericTypeAnnotation<'gc>),
8631 IndexedAccessType(IndexedAccessType<'gc>),
8633 OptionalIndexedAccessType(OptionalIndexedAccessType<'gc>),
8635 ConditionalTypeAnnotation(ConditionalTypeAnnotation<'gc>),
8637 TypePredicate(TypePredicate<'gc>),
8639 InterfaceTypeAnnotation(InterfaceTypeAnnotation<'gc>),
8641 TypeAlias(TypeAlias<'gc>),
8643 OpaqueType(OpaqueType<'gc>),
8645 InterfaceDeclaration(InterfaceDeclaration<'gc>),
8647 DeclareTypeAlias(DeclareTypeAlias<'gc>),
8649 DeclareOpaqueType(DeclareOpaqueType<'gc>),
8651 DeclareInterface(DeclareInterface<'gc>),
8653 DeclareClass(DeclareClass<'gc>),
8655 DeclareFunction(DeclareFunction<'gc>),
8657 DeclareHook(DeclareHook<'gc>),
8659 DeclareComponent(DeclareComponent<'gc>),
8661 DeclareVariable(DeclareVariable<'gc>),
8663 DeclareEnum(DeclareEnum<'gc>),
8665 DeclareExportDeclaration(DeclareExportDeclaration<'gc>),
8667 DeclareExportAllDeclaration(DeclareExportAllDeclaration<'gc>),
8669 DeclareModule(DeclareModule<'gc>),
8671 DeclareNamespace(DeclareNamespace<'gc>),
8673 DeclareModuleExports(DeclareModuleExports<'gc>),
8675 InterfaceExtends(InterfaceExtends<'gc>),
8677 ClassImplements(ClassImplements<'gc>),
8679 TypeAnnotation(TypeAnnotation<'gc>),
8681 ObjectTypeAnnotation(ObjectTypeAnnotation<'gc>),
8683 ObjectTypeProperty(ObjectTypeProperty<'gc>),
8685 ObjectTypeSpreadProperty(ObjectTypeSpreadProperty<'gc>),
8687 ObjectTypeInternalSlot(ObjectTypeInternalSlot<'gc>),
8689 ObjectTypeCallProperty(ObjectTypeCallProperty<'gc>),
8691 ObjectTypeIndexer(ObjectTypeIndexer<'gc>),
8693 ObjectTypeMappedTypeProperty(ObjectTypeMappedTypeProperty<'gc>),
8695 Variance(Variance<'gc>),
8697 TypeParameterDeclaration(TypeParameterDeclaration<'gc>),
8699 TypeParameter(TypeParameter<'gc>),
8701 TypeParameterInstantiation(TypeParameterInstantiation<'gc>),
8703 TypeCastExpression(TypeCastExpression<'gc>),
8705 AsExpression(AsExpression<'gc>),
8707 AsConstExpression(AsConstExpression<'gc>),
8709 InferredPredicate(InferredPredicate<'gc>),
8711 DeclaredPredicate(DeclaredPredicate<'gc>),
8713 EnumDeclaration(EnumDeclaration<'gc>),
8715 EnumStringBody(EnumStringBody<'gc>),
8717 EnumNumberBody(EnumNumberBody<'gc>),
8719 EnumBigIntBody(EnumBigIntBody<'gc>),
8721 EnumBooleanBody(EnumBooleanBody<'gc>),
8723 EnumSymbolBody(EnumSymbolBody<'gc>),
8725 EnumDefaultedMember(EnumDefaultedMember<'gc>),
8727 EnumStringMember(EnumStringMember<'gc>),
8729 EnumNumberMember(EnumNumberMember<'gc>),
8731 EnumBigIntMember(EnumBigIntMember<'gc>),
8733 EnumBooleanMember(EnumBooleanMember<'gc>),
8735 ComponentParameter(ComponentParameter<'gc>),
8737 RecordDeclaration(RecordDeclaration<'gc>),
8739 RecordDeclarationImplements(RecordDeclarationImplements<'gc>),
8741 RecordDeclarationBody(RecordDeclarationBody<'gc>),
8743 RecordDeclarationProperty(RecordDeclarationProperty<'gc>),
8745 RecordDeclarationStaticProperty(RecordDeclarationStaticProperty<'gc>),
8747 RecordExpression(RecordExpression<'gc>),
8749 RecordExpressionProperties(RecordExpressionProperties<'gc>),
8751 TSTypeAnnotation(TSTypeAnnotation<'gc>),
8753 TSAnyKeyword(TSAnyKeyword<'gc>),
8755 TSNumberKeyword(TSNumberKeyword<'gc>),
8757 TSBooleanKeyword(TSBooleanKeyword<'gc>),
8759 TSStringKeyword(TSStringKeyword<'gc>),
8761 TSSymbolKeyword(TSSymbolKeyword<'gc>),
8763 TSVoidKeyword(TSVoidKeyword<'gc>),
8765 TSUndefinedKeyword(TSUndefinedKeyword<'gc>),
8767 TSUnknownKeyword(TSUnknownKeyword<'gc>),
8769 TSNeverKeyword(TSNeverKeyword<'gc>),
8771 TSBigIntKeyword(TSBigIntKeyword<'gc>),
8773 TSThisType(TSThisType<'gc>),
8775 TSLiteralType(TSLiteralType<'gc>),
8777 TSIndexedAccessType(TSIndexedAccessType<'gc>),
8779 TSArrayType(TSArrayType<'gc>),
8781 TSTypeReference(TSTypeReference<'gc>),
8783 TSQualifiedName(TSQualifiedName<'gc>),
8785 TSFunctionType(TSFunctionType<'gc>),
8787 TSConstructorType(TSConstructorType<'gc>),
8789 TSTypePredicate(TSTypePredicate<'gc>),
8791 TSTupleType(TSTupleType<'gc>),
8793 TSTypeAssertion(TSTypeAssertion<'gc>),
8795 TSAsExpression(TSAsExpression<'gc>),
8797 TSParameterProperty(TSParameterProperty<'gc>),
8799 TSTypeAliasDeclaration(TSTypeAliasDeclaration<'gc>),
8801 TSInterfaceDeclaration(TSInterfaceDeclaration<'gc>),
8803 TSInterfaceHeritage(TSInterfaceHeritage<'gc>),
8805 TSInterfaceBody(TSInterfaceBody<'gc>),
8807 TSEnumDeclaration(TSEnumDeclaration<'gc>),
8809 TSEnumMember(TSEnumMember<'gc>),
8811 TSModuleDeclaration(TSModuleDeclaration<'gc>),
8813 TSModuleBlock(TSModuleBlock<'gc>),
8815 TSModuleMember(TSModuleMember<'gc>),
8817 TSTypeParameterDeclaration(TSTypeParameterDeclaration<'gc>),
8819 TSTypeParameter(TSTypeParameter<'gc>),
8821 TSTypeParameterInstantiation(TSTypeParameterInstantiation<'gc>),
8823 TSUnionType(TSUnionType<'gc>),
8825 TSIntersectionType(TSIntersectionType<'gc>),
8827 TSTypeQuery(TSTypeQuery<'gc>),
8829 TSConditionalType(TSConditionalType<'gc>),
8831 TSTypeLiteral(TSTypeLiteral<'gc>),
8833 TSPropertySignature(TSPropertySignature<'gc>),
8835 TSMethodSignature(TSMethodSignature<'gc>),
8837 TSIndexSignature(TSIndexSignature<'gc>),
8839 TSCallSignatureDeclaration(TSCallSignatureDeclaration<'gc>),
8841 TSModifiers(TSModifiers<'gc>),
8843 CoverEmptyArgs(CoverEmptyArgs<'gc>),
8845 CoverTrailingComma(CoverTrailingComma<'gc>),
8847 CoverInitializer(CoverInitializer<'gc>),
8849 CoverRestElement(CoverRestElement<'gc>),
8851 CoverTypedIdentifier(CoverTypedIdentifier<'gc>),
8853 SHBuiltin(SHBuiltin<'gc>),
8855 ImplicitCheckedCast(ImplicitCheckedCast<'gc>),
8857}
8858
8859impl<'gc> Node<'gc> {
8860 pub fn kind(&self) -> NodeKind {
8862 match self {
8863 Node::Empty(_) => NodeKind::Empty,
8864 Node::Metadata(_) => NodeKind::Metadata,
8865 Node::Program(_) => NodeKind::Program,
8866 Node::FunctionExpression(_) => NodeKind::FunctionExpression,
8867 Node::ArrowFunctionExpression(_) => NodeKind::ArrowFunctionExpression,
8868 Node::FunctionDeclaration(_) => NodeKind::FunctionDeclaration,
8869 Node::ComponentDeclaration(_) => NodeKind::ComponentDeclaration,
8870 Node::HookDeclaration(_) => NodeKind::HookDeclaration,
8871 Node::MatchStatement(_) => NodeKind::MatchStatement,
8872 Node::WhileStatement(_) => NodeKind::WhileStatement,
8873 Node::DoWhileStatement(_) => NodeKind::DoWhileStatement,
8874 Node::ForInStatement(_) => NodeKind::ForInStatement,
8875 Node::ForOfStatement(_) => NodeKind::ForOfStatement,
8876 Node::ForStatement(_) => NodeKind::ForStatement,
8877 Node::DebuggerStatement(_) => NodeKind::DebuggerStatement,
8878 Node::EmptyStatement(_) => NodeKind::EmptyStatement,
8879 Node::BlockStatement(_) => NodeKind::BlockStatement,
8880 Node::StaticBlock(_) => NodeKind::StaticBlock,
8881 Node::BreakStatement(_) => NodeKind::BreakStatement,
8882 Node::ContinueStatement(_) => NodeKind::ContinueStatement,
8883 Node::ThrowStatement(_) => NodeKind::ThrowStatement,
8884 Node::ReturnStatement(_) => NodeKind::ReturnStatement,
8885 Node::WithStatement(_) => NodeKind::WithStatement,
8886 Node::SwitchStatement(_) => NodeKind::SwitchStatement,
8887 Node::LabeledStatement(_) => NodeKind::LabeledStatement,
8888 Node::ExpressionStatement(_) => NodeKind::ExpressionStatement,
8889 Node::TryStatement(_) => NodeKind::TryStatement,
8890 Node::IfStatement(_) => NodeKind::IfStatement,
8891 Node::NullLiteral(_) => NodeKind::NullLiteral,
8892 Node::BooleanLiteral(_) => NodeKind::BooleanLiteral,
8893 Node::StringLiteral(_) => NodeKind::StringLiteral,
8894 Node::NumericLiteral(_) => NodeKind::NumericLiteral,
8895 Node::RegExpLiteral(_) => NodeKind::RegExpLiteral,
8896 Node::BigIntLiteral(_) => NodeKind::BigIntLiteral,
8897 Node::ThisExpression(_) => NodeKind::ThisExpression,
8898 Node::Super(_) => NodeKind::Super,
8899 Node::SequenceExpression(_) => NodeKind::SequenceExpression,
8900 Node::ObjectExpression(_) => NodeKind::ObjectExpression,
8901 Node::ArrayExpression(_) => NodeKind::ArrayExpression,
8902 Node::SpreadElement(_) => NodeKind::SpreadElement,
8903 Node::NewExpression(_) => NodeKind::NewExpression,
8904 Node::YieldExpression(_) => NodeKind::YieldExpression,
8905 Node::AwaitExpression(_) => NodeKind::AwaitExpression,
8906 Node::ImportExpression(_) => NodeKind::ImportExpression,
8907 Node::CallExpression(_) => NodeKind::CallExpression,
8908 Node::OptionalCallExpression(_) => NodeKind::OptionalCallExpression,
8909 Node::AssignmentExpression(_) => NodeKind::AssignmentExpression,
8910 Node::UnaryExpression(_) => NodeKind::UnaryExpression,
8911 Node::UpdateExpression(_) => NodeKind::UpdateExpression,
8912 Node::MemberExpression(_) => NodeKind::MemberExpression,
8913 Node::OptionalMemberExpression(_) => NodeKind::OptionalMemberExpression,
8914 Node::LogicalExpression(_) => NodeKind::LogicalExpression,
8915 Node::ConditionalExpression(_) => NodeKind::ConditionalExpression,
8916 Node::BinaryExpression(_) => NodeKind::BinaryExpression,
8917 Node::Directive(_) => NodeKind::Directive,
8918 Node::DirectiveLiteral(_) => NodeKind::DirectiveLiteral,
8919 Node::Identifier(_) => NodeKind::Identifier,
8920 Node::PrivateName(_) => NodeKind::PrivateName,
8921 Node::MetaProperty(_) => NodeKind::MetaProperty,
8922 Node::SwitchCase(_) => NodeKind::SwitchCase,
8923 Node::CatchClause(_) => NodeKind::CatchClause,
8924 Node::VariableDeclarator(_) => NodeKind::VariableDeclarator,
8925 Node::VariableDeclaration(_) => NodeKind::VariableDeclaration,
8926 Node::TemplateLiteral(_) => NodeKind::TemplateLiteral,
8927 Node::TaggedTemplateExpression(_) => NodeKind::TaggedTemplateExpression,
8928 Node::TemplateElement(_) => NodeKind::TemplateElement,
8929 Node::Property(_) => NodeKind::Property,
8930 Node::Decorator(_) => NodeKind::Decorator,
8931 Node::ClassDeclaration(_) => NodeKind::ClassDeclaration,
8932 Node::ClassExpression(_) => NodeKind::ClassExpression,
8933 Node::ClassBody(_) => NodeKind::ClassBody,
8934 Node::ClassProperty(_) => NodeKind::ClassProperty,
8935 Node::ClassPrivateProperty(_) => NodeKind::ClassPrivateProperty,
8936 Node::MethodDefinition(_) => NodeKind::MethodDefinition,
8937 Node::ImportDeclaration(_) => NodeKind::ImportDeclaration,
8938 Node::ImportSpecifier(_) => NodeKind::ImportSpecifier,
8939 Node::ImportDefaultSpecifier(_) => NodeKind::ImportDefaultSpecifier,
8940 Node::ImportNamespaceSpecifier(_) => NodeKind::ImportNamespaceSpecifier,
8941 Node::ImportAttribute(_) => NodeKind::ImportAttribute,
8942 Node::ExportNamedDeclaration(_) => NodeKind::ExportNamedDeclaration,
8943 Node::ExportSpecifier(_) => NodeKind::ExportSpecifier,
8944 Node::ExportNamespaceSpecifier(_) => NodeKind::ExportNamespaceSpecifier,
8945 Node::ExportDefaultDeclaration(_) => NodeKind::ExportDefaultDeclaration,
8946 Node::ExportAllDeclaration(_) => NodeKind::ExportAllDeclaration,
8947 Node::ObjectPattern(_) => NodeKind::ObjectPattern,
8948 Node::ArrayPattern(_) => NodeKind::ArrayPattern,
8949 Node::RestElement(_) => NodeKind::RestElement,
8950 Node::AssignmentPattern(_) => NodeKind::AssignmentPattern,
8951 Node::MatchStatementCase(_) => NodeKind::MatchStatementCase,
8952 Node::MatchExpression(_) => NodeKind::MatchExpression,
8953 Node::MatchExpressionCase(_) => NodeKind::MatchExpressionCase,
8954 Node::MatchWildcardPattern(_) => NodeKind::MatchWildcardPattern,
8955 Node::MatchLiteralPattern(_) => NodeKind::MatchLiteralPattern,
8956 Node::MatchUnaryPattern(_) => NodeKind::MatchUnaryPattern,
8957 Node::MatchIdentifierPattern(_) => NodeKind::MatchIdentifierPattern,
8958 Node::MatchBindingPattern(_) => NodeKind::MatchBindingPattern,
8959 Node::MatchObjectPattern(_) => NodeKind::MatchObjectPattern,
8960 Node::MatchArrayPattern(_) => NodeKind::MatchArrayPattern,
8961 Node::MatchOrPattern(_) => NodeKind::MatchOrPattern,
8962 Node::MatchAsPattern(_) => NodeKind::MatchAsPattern,
8963 Node::MatchMemberPattern(_) => NodeKind::MatchMemberPattern,
8964 Node::MatchInstancePattern(_) => NodeKind::MatchInstancePattern,
8965 Node::MatchObjectPatternProperty(_) => NodeKind::MatchObjectPatternProperty,
8966 Node::MatchInstanceObjectPattern(_) => NodeKind::MatchInstanceObjectPattern,
8967 Node::MatchRestPattern(_) => NodeKind::MatchRestPattern,
8968 Node::JSXIdentifier(_) => NodeKind::JSXIdentifier,
8969 Node::JSXMemberExpression(_) => NodeKind::JSXMemberExpression,
8970 Node::JSXNamespacedName(_) => NodeKind::JSXNamespacedName,
8971 Node::JSXEmptyExpression(_) => NodeKind::JSXEmptyExpression,
8972 Node::JSXExpressionContainer(_) => NodeKind::JSXExpressionContainer,
8973 Node::JSXSpreadChild(_) => NodeKind::JSXSpreadChild,
8974 Node::JSXOpeningElement(_) => NodeKind::JSXOpeningElement,
8975 Node::JSXClosingElement(_) => NodeKind::JSXClosingElement,
8976 Node::JSXAttribute(_) => NodeKind::JSXAttribute,
8977 Node::JSXSpreadAttribute(_) => NodeKind::JSXSpreadAttribute,
8978 Node::JSXStringLiteral(_) => NodeKind::JSXStringLiteral,
8979 Node::JSXText(_) => NodeKind::JSXText,
8980 Node::JSXElement(_) => NodeKind::JSXElement,
8981 Node::JSXFragment(_) => NodeKind::JSXFragment,
8982 Node::JSXOpeningFragment(_) => NodeKind::JSXOpeningFragment,
8983 Node::JSXClosingFragment(_) => NodeKind::JSXClosingFragment,
8984 Node::ExistsTypeAnnotation(_) => NodeKind::ExistsTypeAnnotation,
8985 Node::EmptyTypeAnnotation(_) => NodeKind::EmptyTypeAnnotation,
8986 Node::StringTypeAnnotation(_) => NodeKind::StringTypeAnnotation,
8987 Node::NumberTypeAnnotation(_) => NodeKind::NumberTypeAnnotation,
8988 Node::StringLiteralTypeAnnotation(_) => NodeKind::StringLiteralTypeAnnotation,
8989 Node::NumberLiteralTypeAnnotation(_) => NodeKind::NumberLiteralTypeAnnotation,
8990 Node::BigIntLiteralTypeAnnotation(_) => NodeKind::BigIntLiteralTypeAnnotation,
8991 Node::BooleanTypeAnnotation(_) => NodeKind::BooleanTypeAnnotation,
8992 Node::BooleanLiteralTypeAnnotation(_) => NodeKind::BooleanLiteralTypeAnnotation,
8993 Node::NullLiteralTypeAnnotation(_) => NodeKind::NullLiteralTypeAnnotation,
8994 Node::SymbolTypeAnnotation(_) => NodeKind::SymbolTypeAnnotation,
8995 Node::AnyTypeAnnotation(_) => NodeKind::AnyTypeAnnotation,
8996 Node::MixedTypeAnnotation(_) => NodeKind::MixedTypeAnnotation,
8997 Node::BigIntTypeAnnotation(_) => NodeKind::BigIntTypeAnnotation,
8998 Node::VoidTypeAnnotation(_) => NodeKind::VoidTypeAnnotation,
8999 Node::NeverTypeAnnotation(_) => NodeKind::NeverTypeAnnotation,
9000 Node::UnknownTypeAnnotation(_) => NodeKind::UnknownTypeAnnotation,
9001 Node::UndefinedTypeAnnotation(_) => NodeKind::UndefinedTypeAnnotation,
9002 Node::FunctionTypeAnnotation(_) => NodeKind::FunctionTypeAnnotation,
9003 Node::HookTypeAnnotation(_) => NodeKind::HookTypeAnnotation,
9004 Node::FunctionTypeParam(_) => NodeKind::FunctionTypeParam,
9005 Node::ComponentTypeAnnotation(_) => NodeKind::ComponentTypeAnnotation,
9006 Node::ComponentTypeParameter(_) => NodeKind::ComponentTypeParameter,
9007 Node::NullableTypeAnnotation(_) => NodeKind::NullableTypeAnnotation,
9008 Node::QualifiedTypeIdentifier(_) => NodeKind::QualifiedTypeIdentifier,
9009 Node::TypeofTypeAnnotation(_) => NodeKind::TypeofTypeAnnotation,
9010 Node::KeyofTypeAnnotation(_) => NodeKind::KeyofTypeAnnotation,
9011 Node::TypeOperator(_) => NodeKind::TypeOperator,
9012 Node::QualifiedTypeofIdentifier(_) => NodeKind::QualifiedTypeofIdentifier,
9013 Node::TupleTypeAnnotation(_) => NodeKind::TupleTypeAnnotation,
9014 Node::TupleTypeSpreadElement(_) => NodeKind::TupleTypeSpreadElement,
9015 Node::TupleTypeLabeledElement(_) => NodeKind::TupleTypeLabeledElement,
9016 Node::ArrayTypeAnnotation(_) => NodeKind::ArrayTypeAnnotation,
9017 Node::InferTypeAnnotation(_) => NodeKind::InferTypeAnnotation,
9018 Node::UnionTypeAnnotation(_) => NodeKind::UnionTypeAnnotation,
9019 Node::IntersectionTypeAnnotation(_) => NodeKind::IntersectionTypeAnnotation,
9020 Node::GenericTypeAnnotation(_) => NodeKind::GenericTypeAnnotation,
9021 Node::IndexedAccessType(_) => NodeKind::IndexedAccessType,
9022 Node::OptionalIndexedAccessType(_) => NodeKind::OptionalIndexedAccessType,
9023 Node::ConditionalTypeAnnotation(_) => NodeKind::ConditionalTypeAnnotation,
9024 Node::TypePredicate(_) => NodeKind::TypePredicate,
9025 Node::InterfaceTypeAnnotation(_) => NodeKind::InterfaceTypeAnnotation,
9026 Node::TypeAlias(_) => NodeKind::TypeAlias,
9027 Node::OpaqueType(_) => NodeKind::OpaqueType,
9028 Node::InterfaceDeclaration(_) => NodeKind::InterfaceDeclaration,
9029 Node::DeclareTypeAlias(_) => NodeKind::DeclareTypeAlias,
9030 Node::DeclareOpaqueType(_) => NodeKind::DeclareOpaqueType,
9031 Node::DeclareInterface(_) => NodeKind::DeclareInterface,
9032 Node::DeclareClass(_) => NodeKind::DeclareClass,
9033 Node::DeclareFunction(_) => NodeKind::DeclareFunction,
9034 Node::DeclareHook(_) => NodeKind::DeclareHook,
9035 Node::DeclareComponent(_) => NodeKind::DeclareComponent,
9036 Node::DeclareVariable(_) => NodeKind::DeclareVariable,
9037 Node::DeclareEnum(_) => NodeKind::DeclareEnum,
9038 Node::DeclareExportDeclaration(_) => NodeKind::DeclareExportDeclaration,
9039 Node::DeclareExportAllDeclaration(_) => NodeKind::DeclareExportAllDeclaration,
9040 Node::DeclareModule(_) => NodeKind::DeclareModule,
9041 Node::DeclareNamespace(_) => NodeKind::DeclareNamespace,
9042 Node::DeclareModuleExports(_) => NodeKind::DeclareModuleExports,
9043 Node::InterfaceExtends(_) => NodeKind::InterfaceExtends,
9044 Node::ClassImplements(_) => NodeKind::ClassImplements,
9045 Node::TypeAnnotation(_) => NodeKind::TypeAnnotation,
9046 Node::ObjectTypeAnnotation(_) => NodeKind::ObjectTypeAnnotation,
9047 Node::ObjectTypeProperty(_) => NodeKind::ObjectTypeProperty,
9048 Node::ObjectTypeSpreadProperty(_) => NodeKind::ObjectTypeSpreadProperty,
9049 Node::ObjectTypeInternalSlot(_) => NodeKind::ObjectTypeInternalSlot,
9050 Node::ObjectTypeCallProperty(_) => NodeKind::ObjectTypeCallProperty,
9051 Node::ObjectTypeIndexer(_) => NodeKind::ObjectTypeIndexer,
9052 Node::ObjectTypeMappedTypeProperty(_) => NodeKind::ObjectTypeMappedTypeProperty,
9053 Node::Variance(_) => NodeKind::Variance,
9054 Node::TypeParameterDeclaration(_) => NodeKind::TypeParameterDeclaration,
9055 Node::TypeParameter(_) => NodeKind::TypeParameter,
9056 Node::TypeParameterInstantiation(_) => NodeKind::TypeParameterInstantiation,
9057 Node::TypeCastExpression(_) => NodeKind::TypeCastExpression,
9058 Node::AsExpression(_) => NodeKind::AsExpression,
9059 Node::AsConstExpression(_) => NodeKind::AsConstExpression,
9060 Node::InferredPredicate(_) => NodeKind::InferredPredicate,
9061 Node::DeclaredPredicate(_) => NodeKind::DeclaredPredicate,
9062 Node::EnumDeclaration(_) => NodeKind::EnumDeclaration,
9063 Node::EnumStringBody(_) => NodeKind::EnumStringBody,
9064 Node::EnumNumberBody(_) => NodeKind::EnumNumberBody,
9065 Node::EnumBigIntBody(_) => NodeKind::EnumBigIntBody,
9066 Node::EnumBooleanBody(_) => NodeKind::EnumBooleanBody,
9067 Node::EnumSymbolBody(_) => NodeKind::EnumSymbolBody,
9068 Node::EnumDefaultedMember(_) => NodeKind::EnumDefaultedMember,
9069 Node::EnumStringMember(_) => NodeKind::EnumStringMember,
9070 Node::EnumNumberMember(_) => NodeKind::EnumNumberMember,
9071 Node::EnumBigIntMember(_) => NodeKind::EnumBigIntMember,
9072 Node::EnumBooleanMember(_) => NodeKind::EnumBooleanMember,
9073 Node::ComponentParameter(_) => NodeKind::ComponentParameter,
9074 Node::RecordDeclaration(_) => NodeKind::RecordDeclaration,
9075 Node::RecordDeclarationImplements(_) => NodeKind::RecordDeclarationImplements,
9076 Node::RecordDeclarationBody(_) => NodeKind::RecordDeclarationBody,
9077 Node::RecordDeclarationProperty(_) => NodeKind::RecordDeclarationProperty,
9078 Node::RecordDeclarationStaticProperty(_) => NodeKind::RecordDeclarationStaticProperty,
9079 Node::RecordExpression(_) => NodeKind::RecordExpression,
9080 Node::RecordExpressionProperties(_) => NodeKind::RecordExpressionProperties,
9081 Node::TSTypeAnnotation(_) => NodeKind::TSTypeAnnotation,
9082 Node::TSAnyKeyword(_) => NodeKind::TSAnyKeyword,
9083 Node::TSNumberKeyword(_) => NodeKind::TSNumberKeyword,
9084 Node::TSBooleanKeyword(_) => NodeKind::TSBooleanKeyword,
9085 Node::TSStringKeyword(_) => NodeKind::TSStringKeyword,
9086 Node::TSSymbolKeyword(_) => NodeKind::TSSymbolKeyword,
9087 Node::TSVoidKeyword(_) => NodeKind::TSVoidKeyword,
9088 Node::TSUndefinedKeyword(_) => NodeKind::TSUndefinedKeyword,
9089 Node::TSUnknownKeyword(_) => NodeKind::TSUnknownKeyword,
9090 Node::TSNeverKeyword(_) => NodeKind::TSNeverKeyword,
9091 Node::TSBigIntKeyword(_) => NodeKind::TSBigIntKeyword,
9092 Node::TSThisType(_) => NodeKind::TSThisType,
9093 Node::TSLiteralType(_) => NodeKind::TSLiteralType,
9094 Node::TSIndexedAccessType(_) => NodeKind::TSIndexedAccessType,
9095 Node::TSArrayType(_) => NodeKind::TSArrayType,
9096 Node::TSTypeReference(_) => NodeKind::TSTypeReference,
9097 Node::TSQualifiedName(_) => NodeKind::TSQualifiedName,
9098 Node::TSFunctionType(_) => NodeKind::TSFunctionType,
9099 Node::TSConstructorType(_) => NodeKind::TSConstructorType,
9100 Node::TSTypePredicate(_) => NodeKind::TSTypePredicate,
9101 Node::TSTupleType(_) => NodeKind::TSTupleType,
9102 Node::TSTypeAssertion(_) => NodeKind::TSTypeAssertion,
9103 Node::TSAsExpression(_) => NodeKind::TSAsExpression,
9104 Node::TSParameterProperty(_) => NodeKind::TSParameterProperty,
9105 Node::TSTypeAliasDeclaration(_) => NodeKind::TSTypeAliasDeclaration,
9106 Node::TSInterfaceDeclaration(_) => NodeKind::TSInterfaceDeclaration,
9107 Node::TSInterfaceHeritage(_) => NodeKind::TSInterfaceHeritage,
9108 Node::TSInterfaceBody(_) => NodeKind::TSInterfaceBody,
9109 Node::TSEnumDeclaration(_) => NodeKind::TSEnumDeclaration,
9110 Node::TSEnumMember(_) => NodeKind::TSEnumMember,
9111 Node::TSModuleDeclaration(_) => NodeKind::TSModuleDeclaration,
9112 Node::TSModuleBlock(_) => NodeKind::TSModuleBlock,
9113 Node::TSModuleMember(_) => NodeKind::TSModuleMember,
9114 Node::TSTypeParameterDeclaration(_) => NodeKind::TSTypeParameterDeclaration,
9115 Node::TSTypeParameter(_) => NodeKind::TSTypeParameter,
9116 Node::TSTypeParameterInstantiation(_) => NodeKind::TSTypeParameterInstantiation,
9117 Node::TSUnionType(_) => NodeKind::TSUnionType,
9118 Node::TSIntersectionType(_) => NodeKind::TSIntersectionType,
9119 Node::TSTypeQuery(_) => NodeKind::TSTypeQuery,
9120 Node::TSConditionalType(_) => NodeKind::TSConditionalType,
9121 Node::TSTypeLiteral(_) => NodeKind::TSTypeLiteral,
9122 Node::TSPropertySignature(_) => NodeKind::TSPropertySignature,
9123 Node::TSMethodSignature(_) => NodeKind::TSMethodSignature,
9124 Node::TSIndexSignature(_) => NodeKind::TSIndexSignature,
9125 Node::TSCallSignatureDeclaration(_) => NodeKind::TSCallSignatureDeclaration,
9126 Node::TSModifiers(_) => NodeKind::TSModifiers,
9127 Node::CoverEmptyArgs(_) => NodeKind::CoverEmptyArgs,
9128 Node::CoverTrailingComma(_) => NodeKind::CoverTrailingComma,
9129 Node::CoverInitializer(_) => NodeKind::CoverInitializer,
9130 Node::CoverRestElement(_) => NodeKind::CoverRestElement,
9131 Node::CoverTypedIdentifier(_) => NodeKind::CoverTypedIdentifier,
9132 Node::SHBuiltin(_) => NodeKind::SHBuiltin,
9133 Node::ImplicitCheckedCast(_) => NodeKind::ImplicitCheckedCast,
9134 }
9135 }
9136
9137 pub fn metadata(&self) -> &NodeMetadata<'gc> {
9139 match self {
9140 Node::Empty(n) => &n.metadata,
9141 Node::Metadata(n) => &n.metadata,
9142 Node::Program(n) => &n.metadata,
9143 Node::FunctionExpression(n) => &n.metadata,
9144 Node::ArrowFunctionExpression(n) => &n.metadata,
9145 Node::FunctionDeclaration(n) => &n.metadata,
9146 Node::ComponentDeclaration(n) => &n.metadata,
9147 Node::HookDeclaration(n) => &n.metadata,
9148 Node::MatchStatement(n) => &n.metadata,
9149 Node::WhileStatement(n) => &n.metadata,
9150 Node::DoWhileStatement(n) => &n.metadata,
9151 Node::ForInStatement(n) => &n.metadata,
9152 Node::ForOfStatement(n) => &n.metadata,
9153 Node::ForStatement(n) => &n.metadata,
9154 Node::DebuggerStatement(n) => &n.metadata,
9155 Node::EmptyStatement(n) => &n.metadata,
9156 Node::BlockStatement(n) => &n.metadata,
9157 Node::StaticBlock(n) => &n.metadata,
9158 Node::BreakStatement(n) => &n.metadata,
9159 Node::ContinueStatement(n) => &n.metadata,
9160 Node::ThrowStatement(n) => &n.metadata,
9161 Node::ReturnStatement(n) => &n.metadata,
9162 Node::WithStatement(n) => &n.metadata,
9163 Node::SwitchStatement(n) => &n.metadata,
9164 Node::LabeledStatement(n) => &n.metadata,
9165 Node::ExpressionStatement(n) => &n.metadata,
9166 Node::TryStatement(n) => &n.metadata,
9167 Node::IfStatement(n) => &n.metadata,
9168 Node::NullLiteral(n) => &n.metadata,
9169 Node::BooleanLiteral(n) => &n.metadata,
9170 Node::StringLiteral(n) => &n.metadata,
9171 Node::NumericLiteral(n) => &n.metadata,
9172 Node::RegExpLiteral(n) => &n.metadata,
9173 Node::BigIntLiteral(n) => &n.metadata,
9174 Node::ThisExpression(n) => &n.metadata,
9175 Node::Super(n) => &n.metadata,
9176 Node::SequenceExpression(n) => &n.metadata,
9177 Node::ObjectExpression(n) => &n.metadata,
9178 Node::ArrayExpression(n) => &n.metadata,
9179 Node::SpreadElement(n) => &n.metadata,
9180 Node::NewExpression(n) => &n.metadata,
9181 Node::YieldExpression(n) => &n.metadata,
9182 Node::AwaitExpression(n) => &n.metadata,
9183 Node::ImportExpression(n) => &n.metadata,
9184 Node::CallExpression(n) => &n.metadata,
9185 Node::OptionalCallExpression(n) => &n.metadata,
9186 Node::AssignmentExpression(n) => &n.metadata,
9187 Node::UnaryExpression(n) => &n.metadata,
9188 Node::UpdateExpression(n) => &n.metadata,
9189 Node::MemberExpression(n) => &n.metadata,
9190 Node::OptionalMemberExpression(n) => &n.metadata,
9191 Node::LogicalExpression(n) => &n.metadata,
9192 Node::ConditionalExpression(n) => &n.metadata,
9193 Node::BinaryExpression(n) => &n.metadata,
9194 Node::Directive(n) => &n.metadata,
9195 Node::DirectiveLiteral(n) => &n.metadata,
9196 Node::Identifier(n) => &n.metadata,
9197 Node::PrivateName(n) => &n.metadata,
9198 Node::MetaProperty(n) => &n.metadata,
9199 Node::SwitchCase(n) => &n.metadata,
9200 Node::CatchClause(n) => &n.metadata,
9201 Node::VariableDeclarator(n) => &n.metadata,
9202 Node::VariableDeclaration(n) => &n.metadata,
9203 Node::TemplateLiteral(n) => &n.metadata,
9204 Node::TaggedTemplateExpression(n) => &n.metadata,
9205 Node::TemplateElement(n) => &n.metadata,
9206 Node::Property(n) => &n.metadata,
9207 Node::Decorator(n) => &n.metadata,
9208 Node::ClassDeclaration(n) => &n.metadata,
9209 Node::ClassExpression(n) => &n.metadata,
9210 Node::ClassBody(n) => &n.metadata,
9211 Node::ClassProperty(n) => &n.metadata,
9212 Node::ClassPrivateProperty(n) => &n.metadata,
9213 Node::MethodDefinition(n) => &n.metadata,
9214 Node::ImportDeclaration(n) => &n.metadata,
9215 Node::ImportSpecifier(n) => &n.metadata,
9216 Node::ImportDefaultSpecifier(n) => &n.metadata,
9217 Node::ImportNamespaceSpecifier(n) => &n.metadata,
9218 Node::ImportAttribute(n) => &n.metadata,
9219 Node::ExportNamedDeclaration(n) => &n.metadata,
9220 Node::ExportSpecifier(n) => &n.metadata,
9221 Node::ExportNamespaceSpecifier(n) => &n.metadata,
9222 Node::ExportDefaultDeclaration(n) => &n.metadata,
9223 Node::ExportAllDeclaration(n) => &n.metadata,
9224 Node::ObjectPattern(n) => &n.metadata,
9225 Node::ArrayPattern(n) => &n.metadata,
9226 Node::RestElement(n) => &n.metadata,
9227 Node::AssignmentPattern(n) => &n.metadata,
9228 Node::MatchStatementCase(n) => &n.metadata,
9229 Node::MatchExpression(n) => &n.metadata,
9230 Node::MatchExpressionCase(n) => &n.metadata,
9231 Node::MatchWildcardPattern(n) => &n.metadata,
9232 Node::MatchLiteralPattern(n) => &n.metadata,
9233 Node::MatchUnaryPattern(n) => &n.metadata,
9234 Node::MatchIdentifierPattern(n) => &n.metadata,
9235 Node::MatchBindingPattern(n) => &n.metadata,
9236 Node::MatchObjectPattern(n) => &n.metadata,
9237 Node::MatchArrayPattern(n) => &n.metadata,
9238 Node::MatchOrPattern(n) => &n.metadata,
9239 Node::MatchAsPattern(n) => &n.metadata,
9240 Node::MatchMemberPattern(n) => &n.metadata,
9241 Node::MatchInstancePattern(n) => &n.metadata,
9242 Node::MatchObjectPatternProperty(n) => &n.metadata,
9243 Node::MatchInstanceObjectPattern(n) => &n.metadata,
9244 Node::MatchRestPattern(n) => &n.metadata,
9245 Node::JSXIdentifier(n) => &n.metadata,
9246 Node::JSXMemberExpression(n) => &n.metadata,
9247 Node::JSXNamespacedName(n) => &n.metadata,
9248 Node::JSXEmptyExpression(n) => &n.metadata,
9249 Node::JSXExpressionContainer(n) => &n.metadata,
9250 Node::JSXSpreadChild(n) => &n.metadata,
9251 Node::JSXOpeningElement(n) => &n.metadata,
9252 Node::JSXClosingElement(n) => &n.metadata,
9253 Node::JSXAttribute(n) => &n.metadata,
9254 Node::JSXSpreadAttribute(n) => &n.metadata,
9255 Node::JSXStringLiteral(n) => &n.metadata,
9256 Node::JSXText(n) => &n.metadata,
9257 Node::JSXElement(n) => &n.metadata,
9258 Node::JSXFragment(n) => &n.metadata,
9259 Node::JSXOpeningFragment(n) => &n.metadata,
9260 Node::JSXClosingFragment(n) => &n.metadata,
9261 Node::ExistsTypeAnnotation(n) => &n.metadata,
9262 Node::EmptyTypeAnnotation(n) => &n.metadata,
9263 Node::StringTypeAnnotation(n) => &n.metadata,
9264 Node::NumberTypeAnnotation(n) => &n.metadata,
9265 Node::StringLiteralTypeAnnotation(n) => &n.metadata,
9266 Node::NumberLiteralTypeAnnotation(n) => &n.metadata,
9267 Node::BigIntLiteralTypeAnnotation(n) => &n.metadata,
9268 Node::BooleanTypeAnnotation(n) => &n.metadata,
9269 Node::BooleanLiteralTypeAnnotation(n) => &n.metadata,
9270 Node::NullLiteralTypeAnnotation(n) => &n.metadata,
9271 Node::SymbolTypeAnnotation(n) => &n.metadata,
9272 Node::AnyTypeAnnotation(n) => &n.metadata,
9273 Node::MixedTypeAnnotation(n) => &n.metadata,
9274 Node::BigIntTypeAnnotation(n) => &n.metadata,
9275 Node::VoidTypeAnnotation(n) => &n.metadata,
9276 Node::NeverTypeAnnotation(n) => &n.metadata,
9277 Node::UnknownTypeAnnotation(n) => &n.metadata,
9278 Node::UndefinedTypeAnnotation(n) => &n.metadata,
9279 Node::FunctionTypeAnnotation(n) => &n.metadata,
9280 Node::HookTypeAnnotation(n) => &n.metadata,
9281 Node::FunctionTypeParam(n) => &n.metadata,
9282 Node::ComponentTypeAnnotation(n) => &n.metadata,
9283 Node::ComponentTypeParameter(n) => &n.metadata,
9284 Node::NullableTypeAnnotation(n) => &n.metadata,
9285 Node::QualifiedTypeIdentifier(n) => &n.metadata,
9286 Node::TypeofTypeAnnotation(n) => &n.metadata,
9287 Node::KeyofTypeAnnotation(n) => &n.metadata,
9288 Node::TypeOperator(n) => &n.metadata,
9289 Node::QualifiedTypeofIdentifier(n) => &n.metadata,
9290 Node::TupleTypeAnnotation(n) => &n.metadata,
9291 Node::TupleTypeSpreadElement(n) => &n.metadata,
9292 Node::TupleTypeLabeledElement(n) => &n.metadata,
9293 Node::ArrayTypeAnnotation(n) => &n.metadata,
9294 Node::InferTypeAnnotation(n) => &n.metadata,
9295 Node::UnionTypeAnnotation(n) => &n.metadata,
9296 Node::IntersectionTypeAnnotation(n) => &n.metadata,
9297 Node::GenericTypeAnnotation(n) => &n.metadata,
9298 Node::IndexedAccessType(n) => &n.metadata,
9299 Node::OptionalIndexedAccessType(n) => &n.metadata,
9300 Node::ConditionalTypeAnnotation(n) => &n.metadata,
9301 Node::TypePredicate(n) => &n.metadata,
9302 Node::InterfaceTypeAnnotation(n) => &n.metadata,
9303 Node::TypeAlias(n) => &n.metadata,
9304 Node::OpaqueType(n) => &n.metadata,
9305 Node::InterfaceDeclaration(n) => &n.metadata,
9306 Node::DeclareTypeAlias(n) => &n.metadata,
9307 Node::DeclareOpaqueType(n) => &n.metadata,
9308 Node::DeclareInterface(n) => &n.metadata,
9309 Node::DeclareClass(n) => &n.metadata,
9310 Node::DeclareFunction(n) => &n.metadata,
9311 Node::DeclareHook(n) => &n.metadata,
9312 Node::DeclareComponent(n) => &n.metadata,
9313 Node::DeclareVariable(n) => &n.metadata,
9314 Node::DeclareEnum(n) => &n.metadata,
9315 Node::DeclareExportDeclaration(n) => &n.metadata,
9316 Node::DeclareExportAllDeclaration(n) => &n.metadata,
9317 Node::DeclareModule(n) => &n.metadata,
9318 Node::DeclareNamespace(n) => &n.metadata,
9319 Node::DeclareModuleExports(n) => &n.metadata,
9320 Node::InterfaceExtends(n) => &n.metadata,
9321 Node::ClassImplements(n) => &n.metadata,
9322 Node::TypeAnnotation(n) => &n.metadata,
9323 Node::ObjectTypeAnnotation(n) => &n.metadata,
9324 Node::ObjectTypeProperty(n) => &n.metadata,
9325 Node::ObjectTypeSpreadProperty(n) => &n.metadata,
9326 Node::ObjectTypeInternalSlot(n) => &n.metadata,
9327 Node::ObjectTypeCallProperty(n) => &n.metadata,
9328 Node::ObjectTypeIndexer(n) => &n.metadata,
9329 Node::ObjectTypeMappedTypeProperty(n) => &n.metadata,
9330 Node::Variance(n) => &n.metadata,
9331 Node::TypeParameterDeclaration(n) => &n.metadata,
9332 Node::TypeParameter(n) => &n.metadata,
9333 Node::TypeParameterInstantiation(n) => &n.metadata,
9334 Node::TypeCastExpression(n) => &n.metadata,
9335 Node::AsExpression(n) => &n.metadata,
9336 Node::AsConstExpression(n) => &n.metadata,
9337 Node::InferredPredicate(n) => &n.metadata,
9338 Node::DeclaredPredicate(n) => &n.metadata,
9339 Node::EnumDeclaration(n) => &n.metadata,
9340 Node::EnumStringBody(n) => &n.metadata,
9341 Node::EnumNumberBody(n) => &n.metadata,
9342 Node::EnumBigIntBody(n) => &n.metadata,
9343 Node::EnumBooleanBody(n) => &n.metadata,
9344 Node::EnumSymbolBody(n) => &n.metadata,
9345 Node::EnumDefaultedMember(n) => &n.metadata,
9346 Node::EnumStringMember(n) => &n.metadata,
9347 Node::EnumNumberMember(n) => &n.metadata,
9348 Node::EnumBigIntMember(n) => &n.metadata,
9349 Node::EnumBooleanMember(n) => &n.metadata,
9350 Node::ComponentParameter(n) => &n.metadata,
9351 Node::RecordDeclaration(n) => &n.metadata,
9352 Node::RecordDeclarationImplements(n) => &n.metadata,
9353 Node::RecordDeclarationBody(n) => &n.metadata,
9354 Node::RecordDeclarationProperty(n) => &n.metadata,
9355 Node::RecordDeclarationStaticProperty(n) => &n.metadata,
9356 Node::RecordExpression(n) => &n.metadata,
9357 Node::RecordExpressionProperties(n) => &n.metadata,
9358 Node::TSTypeAnnotation(n) => &n.metadata,
9359 Node::TSAnyKeyword(n) => &n.metadata,
9360 Node::TSNumberKeyword(n) => &n.metadata,
9361 Node::TSBooleanKeyword(n) => &n.metadata,
9362 Node::TSStringKeyword(n) => &n.metadata,
9363 Node::TSSymbolKeyword(n) => &n.metadata,
9364 Node::TSVoidKeyword(n) => &n.metadata,
9365 Node::TSUndefinedKeyword(n) => &n.metadata,
9366 Node::TSUnknownKeyword(n) => &n.metadata,
9367 Node::TSNeverKeyword(n) => &n.metadata,
9368 Node::TSBigIntKeyword(n) => &n.metadata,
9369 Node::TSThisType(n) => &n.metadata,
9370 Node::TSLiteralType(n) => &n.metadata,
9371 Node::TSIndexedAccessType(n) => &n.metadata,
9372 Node::TSArrayType(n) => &n.metadata,
9373 Node::TSTypeReference(n) => &n.metadata,
9374 Node::TSQualifiedName(n) => &n.metadata,
9375 Node::TSFunctionType(n) => &n.metadata,
9376 Node::TSConstructorType(n) => &n.metadata,
9377 Node::TSTypePredicate(n) => &n.metadata,
9378 Node::TSTupleType(n) => &n.metadata,
9379 Node::TSTypeAssertion(n) => &n.metadata,
9380 Node::TSAsExpression(n) => &n.metadata,
9381 Node::TSParameterProperty(n) => &n.metadata,
9382 Node::TSTypeAliasDeclaration(n) => &n.metadata,
9383 Node::TSInterfaceDeclaration(n) => &n.metadata,
9384 Node::TSInterfaceHeritage(n) => &n.metadata,
9385 Node::TSInterfaceBody(n) => &n.metadata,
9386 Node::TSEnumDeclaration(n) => &n.metadata,
9387 Node::TSEnumMember(n) => &n.metadata,
9388 Node::TSModuleDeclaration(n) => &n.metadata,
9389 Node::TSModuleBlock(n) => &n.metadata,
9390 Node::TSModuleMember(n) => &n.metadata,
9391 Node::TSTypeParameterDeclaration(n) => &n.metadata,
9392 Node::TSTypeParameter(n) => &n.metadata,
9393 Node::TSTypeParameterInstantiation(n) => &n.metadata,
9394 Node::TSUnionType(n) => &n.metadata,
9395 Node::TSIntersectionType(n) => &n.metadata,
9396 Node::TSTypeQuery(n) => &n.metadata,
9397 Node::TSConditionalType(n) => &n.metadata,
9398 Node::TSTypeLiteral(n) => &n.metadata,
9399 Node::TSPropertySignature(n) => &n.metadata,
9400 Node::TSMethodSignature(n) => &n.metadata,
9401 Node::TSIndexSignature(n) => &n.metadata,
9402 Node::TSCallSignatureDeclaration(n) => &n.metadata,
9403 Node::TSModifiers(n) => &n.metadata,
9404 Node::CoverEmptyArgs(n) => &n.metadata,
9405 Node::CoverTrailingComma(n) => &n.metadata,
9406 Node::CoverInitializer(n) => &n.metadata,
9407 Node::CoverRestElement(n) => &n.metadata,
9408 Node::CoverTypedIdentifier(n) => &n.metadata,
9409 Node::SHBuiltin(n) => &n.metadata,
9410 Node::ImplicitCheckedCast(n) => &n.metadata,
9411 }
9412 }
9413
9414 pub fn node_id(&self) -> NodeId {
9416 self.metadata().id.get()
9417 }
9418
9419 pub fn range(&self) -> hermes_support::location::SMRange {
9421 self.metadata().range.get()
9422 }
9423
9424 pub fn is_function_like(&self) -> bool {
9426 let k = self.kind() as u32;
9427 (NodeKind::_FunctionLike_First as u32) < k && k < (NodeKind::_FunctionLike_Last as u32)
9428 }
9429
9430 pub fn is_statement(&self) -> bool {
9432 let k = self.kind() as u32;
9433 (NodeKind::_Statement_First as u32) < k && k < (NodeKind::_Statement_Last as u32)
9434 }
9435
9436 pub fn is_loop_statement(&self) -> bool {
9438 let k = self.kind() as u32;
9439 (NodeKind::_LoopStatement_First as u32) < k && k < (NodeKind::_LoopStatement_Last as u32)
9440 }
9441
9442 pub fn is_call_expression_like(&self) -> bool {
9444 let k = self.kind() as u32;
9445 (NodeKind::_CallExpressionLike_First as u32) < k && k < (NodeKind::_CallExpressionLike_Last as u32)
9446 }
9447
9448 pub fn is_member_expression_like(&self) -> bool {
9450 let k = self.kind() as u32;
9451 (NodeKind::_MemberExpressionLike_First as u32) < k && k < (NodeKind::_MemberExpressionLike_Last as u32)
9452 }
9453
9454 pub fn is_class_like(&self) -> bool {
9456 let k = self.kind() as u32;
9457 (NodeKind::_ClassLike_First as u32) < k && k < (NodeKind::_ClassLike_Last as u32)
9458 }
9459
9460 pub fn is_pattern(&self) -> bool {
9462 let k = self.kind() as u32;
9463 (NodeKind::_Pattern_First as u32) < k && k < (NodeKind::_Pattern_Last as u32)
9464 }
9465
9466 pub fn is_match_pattern(&self) -> bool {
9468 let k = self.kind() as u32;
9469 (NodeKind::_MatchPattern_First as u32) < k && k < (NodeKind::_MatchPattern_Last as u32)
9470 }
9471
9472 pub fn is_jsx(&self) -> bool {
9474 let k = self.kind() as u32;
9475 (NodeKind::_JSX_First as u32) < k && k < (NodeKind::_JSX_Last as u32)
9476 }
9477
9478 pub fn is_flow(&self) -> bool {
9480 let k = self.kind() as u32;
9481 (NodeKind::_Flow_First as u32) < k && k < (NodeKind::_Flow_Last as u32)
9482 }
9483
9484 pub fn is_ts(&self) -> bool {
9486 let k = self.kind() as u32;
9487 (NodeKind::_TS_First as u32) < k && k < (NodeKind::_TS_Last as u32)
9488 }
9489
9490 pub fn is_cover(&self) -> bool {
9492 let k = self.kind() as u32;
9493 (NodeKind::_Cover_First as u32) < k && k < (NodeKind::_Cover_Last as u32)
9494 }
9495
9496 pub fn as_empty(&self) -> Option<&Empty<'gc>> {
9498 if let Node::Empty(n) = self { Some(n) } else { None }
9499 }
9500
9501 pub fn as_metadata(&self) -> Option<&Metadata<'gc>> {
9503 if let Node::Metadata(n) = self { Some(n) } else { None }
9504 }
9505
9506 pub fn as_program(&self) -> Option<&Program<'gc>> {
9508 if let Node::Program(n) = self { Some(n) } else { None }
9509 }
9510
9511 pub fn as_function_expression(&self) -> Option<&FunctionExpression<'gc>> {
9513 if let Node::FunctionExpression(n) = self { Some(n) } else { None }
9514 }
9515
9516 pub fn as_arrow_function_expression(&self) -> Option<&ArrowFunctionExpression<'gc>> {
9518 if let Node::ArrowFunctionExpression(n) = self { Some(n) } else { None }
9519 }
9520
9521 pub fn as_function_declaration(&self) -> Option<&FunctionDeclaration<'gc>> {
9523 if let Node::FunctionDeclaration(n) = self { Some(n) } else { None }
9524 }
9525
9526 pub fn as_component_declaration(&self) -> Option<&ComponentDeclaration<'gc>> {
9528 if let Node::ComponentDeclaration(n) = self { Some(n) } else { None }
9529 }
9530
9531 pub fn as_hook_declaration(&self) -> Option<&HookDeclaration<'gc>> {
9533 if let Node::HookDeclaration(n) = self { Some(n) } else { None }
9534 }
9535
9536 pub fn as_match_statement(&self) -> Option<&MatchStatement<'gc>> {
9538 if let Node::MatchStatement(n) = self { Some(n) } else { None }
9539 }
9540
9541 pub fn as_while_statement(&self) -> Option<&WhileStatement<'gc>> {
9543 if let Node::WhileStatement(n) = self { Some(n) } else { None }
9544 }
9545
9546 pub fn as_do_while_statement(&self) -> Option<&DoWhileStatement<'gc>> {
9548 if let Node::DoWhileStatement(n) = self { Some(n) } else { None }
9549 }
9550
9551 pub fn as_for_in_statement(&self) -> Option<&ForInStatement<'gc>> {
9553 if let Node::ForInStatement(n) = self { Some(n) } else { None }
9554 }
9555
9556 pub fn as_for_of_statement(&self) -> Option<&ForOfStatement<'gc>> {
9558 if let Node::ForOfStatement(n) = self { Some(n) } else { None }
9559 }
9560
9561 pub fn as_for_statement(&self) -> Option<&ForStatement<'gc>> {
9563 if let Node::ForStatement(n) = self { Some(n) } else { None }
9564 }
9565
9566 pub fn as_debugger_statement(&self) -> Option<&DebuggerStatement<'gc>> {
9568 if let Node::DebuggerStatement(n) = self { Some(n) } else { None }
9569 }
9570
9571 pub fn as_empty_statement(&self) -> Option<&EmptyStatement<'gc>> {
9573 if let Node::EmptyStatement(n) = self { Some(n) } else { None }
9574 }
9575
9576 pub fn as_block_statement(&self) -> Option<&BlockStatement<'gc>> {
9578 if let Node::BlockStatement(n) = self { Some(n) } else { None }
9579 }
9580
9581 pub fn as_static_block(&self) -> Option<&StaticBlock<'gc>> {
9583 if let Node::StaticBlock(n) = self { Some(n) } else { None }
9584 }
9585
9586 pub fn as_break_statement(&self) -> Option<&BreakStatement<'gc>> {
9588 if let Node::BreakStatement(n) = self { Some(n) } else { None }
9589 }
9590
9591 pub fn as_continue_statement(&self) -> Option<&ContinueStatement<'gc>> {
9593 if let Node::ContinueStatement(n) = self { Some(n) } else { None }
9594 }
9595
9596 pub fn as_throw_statement(&self) -> Option<&ThrowStatement<'gc>> {
9598 if let Node::ThrowStatement(n) = self { Some(n) } else { None }
9599 }
9600
9601 pub fn as_return_statement(&self) -> Option<&ReturnStatement<'gc>> {
9603 if let Node::ReturnStatement(n) = self { Some(n) } else { None }
9604 }
9605
9606 pub fn as_with_statement(&self) -> Option<&WithStatement<'gc>> {
9608 if let Node::WithStatement(n) = self { Some(n) } else { None }
9609 }
9610
9611 pub fn as_switch_statement(&self) -> Option<&SwitchStatement<'gc>> {
9613 if let Node::SwitchStatement(n) = self { Some(n) } else { None }
9614 }
9615
9616 pub fn as_labeled_statement(&self) -> Option<&LabeledStatement<'gc>> {
9618 if let Node::LabeledStatement(n) = self { Some(n) } else { None }
9619 }
9620
9621 pub fn as_expression_statement(&self) -> Option<&ExpressionStatement<'gc>> {
9623 if let Node::ExpressionStatement(n) = self { Some(n) } else { None }
9624 }
9625
9626 pub fn as_try_statement(&self) -> Option<&TryStatement<'gc>> {
9628 if let Node::TryStatement(n) = self { Some(n) } else { None }
9629 }
9630
9631 pub fn as_if_statement(&self) -> Option<&IfStatement<'gc>> {
9633 if let Node::IfStatement(n) = self { Some(n) } else { None }
9634 }
9635
9636 pub fn as_null_literal(&self) -> Option<&NullLiteral<'gc>> {
9638 if let Node::NullLiteral(n) = self { Some(n) } else { None }
9639 }
9640
9641 pub fn as_boolean_literal(&self) -> Option<&BooleanLiteral<'gc>> {
9643 if let Node::BooleanLiteral(n) = self { Some(n) } else { None }
9644 }
9645
9646 pub fn as_string_literal(&self) -> Option<&StringLiteral<'gc>> {
9648 if let Node::StringLiteral(n) = self { Some(n) } else { None }
9649 }
9650
9651 pub fn as_numeric_literal(&self) -> Option<&NumericLiteral<'gc>> {
9653 if let Node::NumericLiteral(n) = self { Some(n) } else { None }
9654 }
9655
9656 pub fn as_reg_exp_literal(&self) -> Option<&RegExpLiteral<'gc>> {
9658 if let Node::RegExpLiteral(n) = self { Some(n) } else { None }
9659 }
9660
9661 pub fn as_big_int_literal(&self) -> Option<&BigIntLiteral<'gc>> {
9663 if let Node::BigIntLiteral(n) = self { Some(n) } else { None }
9664 }
9665
9666 pub fn as_this_expression(&self) -> Option<&ThisExpression<'gc>> {
9668 if let Node::ThisExpression(n) = self { Some(n) } else { None }
9669 }
9670
9671 pub fn as_super(&self) -> Option<&Super<'gc>> {
9673 if let Node::Super(n) = self { Some(n) } else { None }
9674 }
9675
9676 pub fn as_sequence_expression(&self) -> Option<&SequenceExpression<'gc>> {
9678 if let Node::SequenceExpression(n) = self { Some(n) } else { None }
9679 }
9680
9681 pub fn as_object_expression(&self) -> Option<&ObjectExpression<'gc>> {
9683 if let Node::ObjectExpression(n) = self { Some(n) } else { None }
9684 }
9685
9686 pub fn as_array_expression(&self) -> Option<&ArrayExpression<'gc>> {
9688 if let Node::ArrayExpression(n) = self { Some(n) } else { None }
9689 }
9690
9691 pub fn as_spread_element(&self) -> Option<&SpreadElement<'gc>> {
9693 if let Node::SpreadElement(n) = self { Some(n) } else { None }
9694 }
9695
9696 pub fn as_new_expression(&self) -> Option<&NewExpression<'gc>> {
9698 if let Node::NewExpression(n) = self { Some(n) } else { None }
9699 }
9700
9701 pub fn as_yield_expression(&self) -> Option<&YieldExpression<'gc>> {
9703 if let Node::YieldExpression(n) = self { Some(n) } else { None }
9704 }
9705
9706 pub fn as_await_expression(&self) -> Option<&AwaitExpression<'gc>> {
9708 if let Node::AwaitExpression(n) = self { Some(n) } else { None }
9709 }
9710
9711 pub fn as_import_expression(&self) -> Option<&ImportExpression<'gc>> {
9713 if let Node::ImportExpression(n) = self { Some(n) } else { None }
9714 }
9715
9716 pub fn as_call_expression(&self) -> Option<&CallExpression<'gc>> {
9718 if let Node::CallExpression(n) = self { Some(n) } else { None }
9719 }
9720
9721 pub fn as_optional_call_expression(&self) -> Option<&OptionalCallExpression<'gc>> {
9723 if let Node::OptionalCallExpression(n) = self { Some(n) } else { None }
9724 }
9725
9726 pub fn as_assignment_expression(&self) -> Option<&AssignmentExpression<'gc>> {
9728 if let Node::AssignmentExpression(n) = self { Some(n) } else { None }
9729 }
9730
9731 pub fn as_unary_expression(&self) -> Option<&UnaryExpression<'gc>> {
9733 if let Node::UnaryExpression(n) = self { Some(n) } else { None }
9734 }
9735
9736 pub fn as_update_expression(&self) -> Option<&UpdateExpression<'gc>> {
9738 if let Node::UpdateExpression(n) = self { Some(n) } else { None }
9739 }
9740
9741 pub fn as_member_expression(&self) -> Option<&MemberExpression<'gc>> {
9743 if let Node::MemberExpression(n) = self { Some(n) } else { None }
9744 }
9745
9746 pub fn as_optional_member_expression(&self) -> Option<&OptionalMemberExpression<'gc>> {
9748 if let Node::OptionalMemberExpression(n) = self { Some(n) } else { None }
9749 }
9750
9751 pub fn as_logical_expression(&self) -> Option<&LogicalExpression<'gc>> {
9753 if let Node::LogicalExpression(n) = self { Some(n) } else { None }
9754 }
9755
9756 pub fn as_conditional_expression(&self) -> Option<&ConditionalExpression<'gc>> {
9758 if let Node::ConditionalExpression(n) = self { Some(n) } else { None }
9759 }
9760
9761 pub fn as_binary_expression(&self) -> Option<&BinaryExpression<'gc>> {
9763 if let Node::BinaryExpression(n) = self { Some(n) } else { None }
9764 }
9765
9766 pub fn as_directive(&self) -> Option<&Directive<'gc>> {
9768 if let Node::Directive(n) = self { Some(n) } else { None }
9769 }
9770
9771 pub fn as_directive_literal(&self) -> Option<&DirectiveLiteral<'gc>> {
9773 if let Node::DirectiveLiteral(n) = self { Some(n) } else { None }
9774 }
9775
9776 pub fn as_identifier(&self) -> Option<&Identifier<'gc>> {
9778 if let Node::Identifier(n) = self { Some(n) } else { None }
9779 }
9780
9781 pub fn as_private_name(&self) -> Option<&PrivateName<'gc>> {
9783 if let Node::PrivateName(n) = self { Some(n) } else { None }
9784 }
9785
9786 pub fn as_meta_property(&self) -> Option<&MetaProperty<'gc>> {
9788 if let Node::MetaProperty(n) = self { Some(n) } else { None }
9789 }
9790
9791 pub fn as_switch_case(&self) -> Option<&SwitchCase<'gc>> {
9793 if let Node::SwitchCase(n) = self { Some(n) } else { None }
9794 }
9795
9796 pub fn as_catch_clause(&self) -> Option<&CatchClause<'gc>> {
9798 if let Node::CatchClause(n) = self { Some(n) } else { None }
9799 }
9800
9801 pub fn as_variable_declarator(&self) -> Option<&VariableDeclarator<'gc>> {
9803 if let Node::VariableDeclarator(n) = self { Some(n) } else { None }
9804 }
9805
9806 pub fn as_variable_declaration(&self) -> Option<&VariableDeclaration<'gc>> {
9808 if let Node::VariableDeclaration(n) = self { Some(n) } else { None }
9809 }
9810
9811 pub fn as_template_literal(&self) -> Option<&TemplateLiteral<'gc>> {
9813 if let Node::TemplateLiteral(n) = self { Some(n) } else { None }
9814 }
9815
9816 pub fn as_tagged_template_expression(&self) -> Option<&TaggedTemplateExpression<'gc>> {
9818 if let Node::TaggedTemplateExpression(n) = self { Some(n) } else { None }
9819 }
9820
9821 pub fn as_template_element(&self) -> Option<&TemplateElement<'gc>> {
9823 if let Node::TemplateElement(n) = self { Some(n) } else { None }
9824 }
9825
9826 pub fn as_property(&self) -> Option<&Property<'gc>> {
9828 if let Node::Property(n) = self { Some(n) } else { None }
9829 }
9830
9831 pub fn as_decorator(&self) -> Option<&Decorator<'gc>> {
9833 if let Node::Decorator(n) = self { Some(n) } else { None }
9834 }
9835
9836 pub fn as_class_declaration(&self) -> Option<&ClassDeclaration<'gc>> {
9838 if let Node::ClassDeclaration(n) = self { Some(n) } else { None }
9839 }
9840
9841 pub fn as_class_expression(&self) -> Option<&ClassExpression<'gc>> {
9843 if let Node::ClassExpression(n) = self { Some(n) } else { None }
9844 }
9845
9846 pub fn as_class_body(&self) -> Option<&ClassBody<'gc>> {
9848 if let Node::ClassBody(n) = self { Some(n) } else { None }
9849 }
9850
9851 pub fn as_class_property(&self) -> Option<&ClassProperty<'gc>> {
9853 if let Node::ClassProperty(n) = self { Some(n) } else { None }
9854 }
9855
9856 pub fn as_class_private_property(&self) -> Option<&ClassPrivateProperty<'gc>> {
9858 if let Node::ClassPrivateProperty(n) = self { Some(n) } else { None }
9859 }
9860
9861 pub fn as_method_definition(&self) -> Option<&MethodDefinition<'gc>> {
9863 if let Node::MethodDefinition(n) = self { Some(n) } else { None }
9864 }
9865
9866 pub fn as_import_declaration(&self) -> Option<&ImportDeclaration<'gc>> {
9868 if let Node::ImportDeclaration(n) = self { Some(n) } else { None }
9869 }
9870
9871 pub fn as_import_specifier(&self) -> Option<&ImportSpecifier<'gc>> {
9873 if let Node::ImportSpecifier(n) = self { Some(n) } else { None }
9874 }
9875
9876 pub fn as_import_default_specifier(&self) -> Option<&ImportDefaultSpecifier<'gc>> {
9878 if let Node::ImportDefaultSpecifier(n) = self { Some(n) } else { None }
9879 }
9880
9881 pub fn as_import_namespace_specifier(&self) -> Option<&ImportNamespaceSpecifier<'gc>> {
9883 if let Node::ImportNamespaceSpecifier(n) = self { Some(n) } else { None }
9884 }
9885
9886 pub fn as_import_attribute(&self) -> Option<&ImportAttribute<'gc>> {
9888 if let Node::ImportAttribute(n) = self { Some(n) } else { None }
9889 }
9890
9891 pub fn as_export_named_declaration(&self) -> Option<&ExportNamedDeclaration<'gc>> {
9893 if let Node::ExportNamedDeclaration(n) = self { Some(n) } else { None }
9894 }
9895
9896 pub fn as_export_specifier(&self) -> Option<&ExportSpecifier<'gc>> {
9898 if let Node::ExportSpecifier(n) = self { Some(n) } else { None }
9899 }
9900
9901 pub fn as_export_namespace_specifier(&self) -> Option<&ExportNamespaceSpecifier<'gc>> {
9903 if let Node::ExportNamespaceSpecifier(n) = self { Some(n) } else { None }
9904 }
9905
9906 pub fn as_export_default_declaration(&self) -> Option<&ExportDefaultDeclaration<'gc>> {
9908 if let Node::ExportDefaultDeclaration(n) = self { Some(n) } else { None }
9909 }
9910
9911 pub fn as_export_all_declaration(&self) -> Option<&ExportAllDeclaration<'gc>> {
9913 if let Node::ExportAllDeclaration(n) = self { Some(n) } else { None }
9914 }
9915
9916 pub fn as_object_pattern(&self) -> Option<&ObjectPattern<'gc>> {
9918 if let Node::ObjectPattern(n) = self { Some(n) } else { None }
9919 }
9920
9921 pub fn as_array_pattern(&self) -> Option<&ArrayPattern<'gc>> {
9923 if let Node::ArrayPattern(n) = self { Some(n) } else { None }
9924 }
9925
9926 pub fn as_rest_element(&self) -> Option<&RestElement<'gc>> {
9928 if let Node::RestElement(n) = self { Some(n) } else { None }
9929 }
9930
9931 pub fn as_assignment_pattern(&self) -> Option<&AssignmentPattern<'gc>> {
9933 if let Node::AssignmentPattern(n) = self { Some(n) } else { None }
9934 }
9935
9936 pub fn as_match_statement_case(&self) -> Option<&MatchStatementCase<'gc>> {
9938 if let Node::MatchStatementCase(n) = self { Some(n) } else { None }
9939 }
9940
9941 pub fn as_match_expression(&self) -> Option<&MatchExpression<'gc>> {
9943 if let Node::MatchExpression(n) = self { Some(n) } else { None }
9944 }
9945
9946 pub fn as_match_expression_case(&self) -> Option<&MatchExpressionCase<'gc>> {
9948 if let Node::MatchExpressionCase(n) = self { Some(n) } else { None }
9949 }
9950
9951 pub fn as_match_wildcard_pattern(&self) -> Option<&MatchWildcardPattern<'gc>> {
9953 if let Node::MatchWildcardPattern(n) = self { Some(n) } else { None }
9954 }
9955
9956 pub fn as_match_literal_pattern(&self) -> Option<&MatchLiteralPattern<'gc>> {
9958 if let Node::MatchLiteralPattern(n) = self { Some(n) } else { None }
9959 }
9960
9961 pub fn as_match_unary_pattern(&self) -> Option<&MatchUnaryPattern<'gc>> {
9963 if let Node::MatchUnaryPattern(n) = self { Some(n) } else { None }
9964 }
9965
9966 pub fn as_match_identifier_pattern(&self) -> Option<&MatchIdentifierPattern<'gc>> {
9968 if let Node::MatchIdentifierPattern(n) = self { Some(n) } else { None }
9969 }
9970
9971 pub fn as_match_binding_pattern(&self) -> Option<&MatchBindingPattern<'gc>> {
9973 if let Node::MatchBindingPattern(n) = self { Some(n) } else { None }
9974 }
9975
9976 pub fn as_match_object_pattern(&self) -> Option<&MatchObjectPattern<'gc>> {
9978 if let Node::MatchObjectPattern(n) = self { Some(n) } else { None }
9979 }
9980
9981 pub fn as_match_array_pattern(&self) -> Option<&MatchArrayPattern<'gc>> {
9983 if let Node::MatchArrayPattern(n) = self { Some(n) } else { None }
9984 }
9985
9986 pub fn as_match_or_pattern(&self) -> Option<&MatchOrPattern<'gc>> {
9988 if let Node::MatchOrPattern(n) = self { Some(n) } else { None }
9989 }
9990
9991 pub fn as_match_as_pattern(&self) -> Option<&MatchAsPattern<'gc>> {
9993 if let Node::MatchAsPattern(n) = self { Some(n) } else { None }
9994 }
9995
9996 pub fn as_match_member_pattern(&self) -> Option<&MatchMemberPattern<'gc>> {
9998 if let Node::MatchMemberPattern(n) = self { Some(n) } else { None }
9999 }
10000
10001 pub fn as_match_instance_pattern(&self) -> Option<&MatchInstancePattern<'gc>> {
10003 if let Node::MatchInstancePattern(n) = self { Some(n) } else { None }
10004 }
10005
10006 pub fn as_match_object_pattern_property(&self) -> Option<&MatchObjectPatternProperty<'gc>> {
10009 if let Node::MatchObjectPatternProperty(n) = self { Some(n) } else { None }
10010 }
10011
10012 pub fn as_match_instance_object_pattern(&self) -> Option<&MatchInstanceObjectPattern<'gc>> {
10015 if let Node::MatchInstanceObjectPattern(n) = self { Some(n) } else { None }
10016 }
10017
10018 pub fn as_match_rest_pattern(&self) -> Option<&MatchRestPattern<'gc>> {
10020 if let Node::MatchRestPattern(n) = self { Some(n) } else { None }
10021 }
10022
10023 pub fn as_jsx_identifier(&self) -> Option<&JSXIdentifier<'gc>> {
10025 if let Node::JSXIdentifier(n) = self { Some(n) } else { None }
10026 }
10027
10028 pub fn as_jsx_member_expression(&self) -> Option<&JSXMemberExpression<'gc>> {
10030 if let Node::JSXMemberExpression(n) = self { Some(n) } else { None }
10031 }
10032
10033 pub fn as_jsx_namespaced_name(&self) -> Option<&JSXNamespacedName<'gc>> {
10035 if let Node::JSXNamespacedName(n) = self { Some(n) } else { None }
10036 }
10037
10038 pub fn as_jsx_empty_expression(&self) -> Option<&JSXEmptyExpression<'gc>> {
10040 if let Node::JSXEmptyExpression(n) = self { Some(n) } else { None }
10041 }
10042
10043 pub fn as_jsx_expression_container(&self) -> Option<&JSXExpressionContainer<'gc>> {
10045 if let Node::JSXExpressionContainer(n) = self { Some(n) } else { None }
10046 }
10047
10048 pub fn as_jsx_spread_child(&self) -> Option<&JSXSpreadChild<'gc>> {
10050 if let Node::JSXSpreadChild(n) = self { Some(n) } else { None }
10051 }
10052
10053 pub fn as_jsx_opening_element(&self) -> Option<&JSXOpeningElement<'gc>> {
10055 if let Node::JSXOpeningElement(n) = self { Some(n) } else { None }
10056 }
10057
10058 pub fn as_jsx_closing_element(&self) -> Option<&JSXClosingElement<'gc>> {
10060 if let Node::JSXClosingElement(n) = self { Some(n) } else { None }
10061 }
10062
10063 pub fn as_jsx_attribute(&self) -> Option<&JSXAttribute<'gc>> {
10065 if let Node::JSXAttribute(n) = self { Some(n) } else { None }
10066 }
10067
10068 pub fn as_jsx_spread_attribute(&self) -> Option<&JSXSpreadAttribute<'gc>> {
10070 if let Node::JSXSpreadAttribute(n) = self { Some(n) } else { None }
10071 }
10072
10073 pub fn as_jsx_string_literal(&self) -> Option<&JSXStringLiteral<'gc>> {
10075 if let Node::JSXStringLiteral(n) = self { Some(n) } else { None }
10076 }
10077
10078 pub fn as_jsx_text(&self) -> Option<&JSXText<'gc>> {
10080 if let Node::JSXText(n) = self { Some(n) } else { None }
10081 }
10082
10083 pub fn as_jsx_element(&self) -> Option<&JSXElement<'gc>> {
10085 if let Node::JSXElement(n) = self { Some(n) } else { None }
10086 }
10087
10088 pub fn as_jsx_fragment(&self) -> Option<&JSXFragment<'gc>> {
10090 if let Node::JSXFragment(n) = self { Some(n) } else { None }
10091 }
10092
10093 pub fn as_jsx_opening_fragment(&self) -> Option<&JSXOpeningFragment<'gc>> {
10095 if let Node::JSXOpeningFragment(n) = self { Some(n) } else { None }
10096 }
10097
10098 pub fn as_jsx_closing_fragment(&self) -> Option<&JSXClosingFragment<'gc>> {
10100 if let Node::JSXClosingFragment(n) = self { Some(n) } else { None }
10101 }
10102
10103 pub fn as_exists_type_annotation(&self) -> Option<&ExistsTypeAnnotation<'gc>> {
10105 if let Node::ExistsTypeAnnotation(n) = self { Some(n) } else { None }
10106 }
10107
10108 pub fn as_empty_type_annotation(&self) -> Option<&EmptyTypeAnnotation<'gc>> {
10110 if let Node::EmptyTypeAnnotation(n) = self { Some(n) } else { None }
10111 }
10112
10113 pub fn as_string_type_annotation(&self) -> Option<&StringTypeAnnotation<'gc>> {
10115 if let Node::StringTypeAnnotation(n) = self { Some(n) } else { None }
10116 }
10117
10118 pub fn as_number_type_annotation(&self) -> Option<&NumberTypeAnnotation<'gc>> {
10120 if let Node::NumberTypeAnnotation(n) = self { Some(n) } else { None }
10121 }
10122
10123 pub fn as_string_literal_type_annotation(&self) -> Option<&StringLiteralTypeAnnotation<'gc>> {
10126 if let Node::StringLiteralTypeAnnotation(n) = self { Some(n) } else { None }
10127 }
10128
10129 pub fn as_number_literal_type_annotation(&self) -> Option<&NumberLiteralTypeAnnotation<'gc>> {
10132 if let Node::NumberLiteralTypeAnnotation(n) = self { Some(n) } else { None }
10133 }
10134
10135 pub fn as_big_int_literal_type_annotation(&self) -> Option<&BigIntLiteralTypeAnnotation<'gc>> {
10138 if let Node::BigIntLiteralTypeAnnotation(n) = self { Some(n) } else { None }
10139 }
10140
10141 pub fn as_boolean_type_annotation(&self) -> Option<&BooleanTypeAnnotation<'gc>> {
10143 if let Node::BooleanTypeAnnotation(n) = self { Some(n) } else { None }
10144 }
10145
10146 pub fn as_boolean_literal_type_annotation(&self) -> Option<&BooleanLiteralTypeAnnotation<'gc>> {
10149 if let Node::BooleanLiteralTypeAnnotation(n) = self { Some(n) } else { None }
10150 }
10151
10152 pub fn as_null_literal_type_annotation(&self) -> Option<&NullLiteralTypeAnnotation<'gc>> {
10155 if let Node::NullLiteralTypeAnnotation(n) = self { Some(n) } else { None }
10156 }
10157
10158 pub fn as_symbol_type_annotation(&self) -> Option<&SymbolTypeAnnotation<'gc>> {
10160 if let Node::SymbolTypeAnnotation(n) = self { Some(n) } else { None }
10161 }
10162
10163 pub fn as_any_type_annotation(&self) -> Option<&AnyTypeAnnotation<'gc>> {
10165 if let Node::AnyTypeAnnotation(n) = self { Some(n) } else { None }
10166 }
10167
10168 pub fn as_mixed_type_annotation(&self) -> Option<&MixedTypeAnnotation<'gc>> {
10170 if let Node::MixedTypeAnnotation(n) = self { Some(n) } else { None }
10171 }
10172
10173 pub fn as_big_int_type_annotation(&self) -> Option<&BigIntTypeAnnotation<'gc>> {
10175 if let Node::BigIntTypeAnnotation(n) = self { Some(n) } else { None }
10176 }
10177
10178 pub fn as_void_type_annotation(&self) -> Option<&VoidTypeAnnotation<'gc>> {
10180 if let Node::VoidTypeAnnotation(n) = self { Some(n) } else { None }
10181 }
10182
10183 pub fn as_never_type_annotation(&self) -> Option<&NeverTypeAnnotation<'gc>> {
10185 if let Node::NeverTypeAnnotation(n) = self { Some(n) } else { None }
10186 }
10187
10188 pub fn as_unknown_type_annotation(&self) -> Option<&UnknownTypeAnnotation<'gc>> {
10190 if let Node::UnknownTypeAnnotation(n) = self { Some(n) } else { None }
10191 }
10192
10193 pub fn as_undefined_type_annotation(&self) -> Option<&UndefinedTypeAnnotation<'gc>> {
10195 if let Node::UndefinedTypeAnnotation(n) = self { Some(n) } else { None }
10196 }
10197
10198 pub fn as_function_type_annotation(&self) -> Option<&FunctionTypeAnnotation<'gc>> {
10200 if let Node::FunctionTypeAnnotation(n) = self { Some(n) } else { None }
10201 }
10202
10203 pub fn as_hook_type_annotation(&self) -> Option<&HookTypeAnnotation<'gc>> {
10205 if let Node::HookTypeAnnotation(n) = self { Some(n) } else { None }
10206 }
10207
10208 pub fn as_function_type_param(&self) -> Option<&FunctionTypeParam<'gc>> {
10210 if let Node::FunctionTypeParam(n) = self { Some(n) } else { None }
10211 }
10212
10213 pub fn as_component_type_annotation(&self) -> Option<&ComponentTypeAnnotation<'gc>> {
10215 if let Node::ComponentTypeAnnotation(n) = self { Some(n) } else { None }
10216 }
10217
10218 pub fn as_component_type_parameter(&self) -> Option<&ComponentTypeParameter<'gc>> {
10220 if let Node::ComponentTypeParameter(n) = self { Some(n) } else { None }
10221 }
10222
10223 pub fn as_nullable_type_annotation(&self) -> Option<&NullableTypeAnnotation<'gc>> {
10225 if let Node::NullableTypeAnnotation(n) = self { Some(n) } else { None }
10226 }
10227
10228 pub fn as_qualified_type_identifier(&self) -> Option<&QualifiedTypeIdentifier<'gc>> {
10230 if let Node::QualifiedTypeIdentifier(n) = self { Some(n) } else { None }
10231 }
10232
10233 pub fn as_typeof_type_annotation(&self) -> Option<&TypeofTypeAnnotation<'gc>> {
10235 if let Node::TypeofTypeAnnotation(n) = self { Some(n) } else { None }
10236 }
10237
10238 pub fn as_keyof_type_annotation(&self) -> Option<&KeyofTypeAnnotation<'gc>> {
10240 if let Node::KeyofTypeAnnotation(n) = self { Some(n) } else { None }
10241 }
10242
10243 pub fn as_type_operator(&self) -> Option<&TypeOperator<'gc>> {
10245 if let Node::TypeOperator(n) = self { Some(n) } else { None }
10246 }
10247
10248 pub fn as_qualified_typeof_identifier(&self) -> Option<&QualifiedTypeofIdentifier<'gc>> {
10251 if let Node::QualifiedTypeofIdentifier(n) = self { Some(n) } else { None }
10252 }
10253
10254 pub fn as_tuple_type_annotation(&self) -> Option<&TupleTypeAnnotation<'gc>> {
10256 if let Node::TupleTypeAnnotation(n) = self { Some(n) } else { None }
10257 }
10258
10259 pub fn as_tuple_type_spread_element(&self) -> Option<&TupleTypeSpreadElement<'gc>> {
10261 if let Node::TupleTypeSpreadElement(n) = self { Some(n) } else { None }
10262 }
10263
10264 pub fn as_tuple_type_labeled_element(&self) -> Option<&TupleTypeLabeledElement<'gc>> {
10266 if let Node::TupleTypeLabeledElement(n) = self { Some(n) } else { None }
10267 }
10268
10269 pub fn as_array_type_annotation(&self) -> Option<&ArrayTypeAnnotation<'gc>> {
10271 if let Node::ArrayTypeAnnotation(n) = self { Some(n) } else { None }
10272 }
10273
10274 pub fn as_infer_type_annotation(&self) -> Option<&InferTypeAnnotation<'gc>> {
10276 if let Node::InferTypeAnnotation(n) = self { Some(n) } else { None }
10277 }
10278
10279 pub fn as_union_type_annotation(&self) -> Option<&UnionTypeAnnotation<'gc>> {
10281 if let Node::UnionTypeAnnotation(n) = self { Some(n) } else { None }
10282 }
10283
10284 pub fn as_intersection_type_annotation(&self) -> Option<&IntersectionTypeAnnotation<'gc>> {
10287 if let Node::IntersectionTypeAnnotation(n) = self { Some(n) } else { None }
10288 }
10289
10290 pub fn as_generic_type_annotation(&self) -> Option<&GenericTypeAnnotation<'gc>> {
10292 if let Node::GenericTypeAnnotation(n) = self { Some(n) } else { None }
10293 }
10294
10295 pub fn as_indexed_access_type(&self) -> Option<&IndexedAccessType<'gc>> {
10297 if let Node::IndexedAccessType(n) = self { Some(n) } else { None }
10298 }
10299
10300 pub fn as_optional_indexed_access_type(&self) -> Option<&OptionalIndexedAccessType<'gc>> {
10303 if let Node::OptionalIndexedAccessType(n) = self { Some(n) } else { None }
10304 }
10305
10306 pub fn as_conditional_type_annotation(&self) -> Option<&ConditionalTypeAnnotation<'gc>> {
10309 if let Node::ConditionalTypeAnnotation(n) = self { Some(n) } else { None }
10310 }
10311
10312 pub fn as_type_predicate(&self) -> Option<&TypePredicate<'gc>> {
10314 if let Node::TypePredicate(n) = self { Some(n) } else { None }
10315 }
10316
10317 pub fn as_interface_type_annotation(&self) -> Option<&InterfaceTypeAnnotation<'gc>> {
10319 if let Node::InterfaceTypeAnnotation(n) = self { Some(n) } else { None }
10320 }
10321
10322 pub fn as_type_alias(&self) -> Option<&TypeAlias<'gc>> {
10324 if let Node::TypeAlias(n) = self { Some(n) } else { None }
10325 }
10326
10327 pub fn as_opaque_type(&self) -> Option<&OpaqueType<'gc>> {
10329 if let Node::OpaqueType(n) = self { Some(n) } else { None }
10330 }
10331
10332 pub fn as_interface_declaration(&self) -> Option<&InterfaceDeclaration<'gc>> {
10334 if let Node::InterfaceDeclaration(n) = self { Some(n) } else { None }
10335 }
10336
10337 pub fn as_declare_type_alias(&self) -> Option<&DeclareTypeAlias<'gc>> {
10339 if let Node::DeclareTypeAlias(n) = self { Some(n) } else { None }
10340 }
10341
10342 pub fn as_declare_opaque_type(&self) -> Option<&DeclareOpaqueType<'gc>> {
10344 if let Node::DeclareOpaqueType(n) = self { Some(n) } else { None }
10345 }
10346
10347 pub fn as_declare_interface(&self) -> Option<&DeclareInterface<'gc>> {
10349 if let Node::DeclareInterface(n) = self { Some(n) } else { None }
10350 }
10351
10352 pub fn as_declare_class(&self) -> Option<&DeclareClass<'gc>> {
10354 if let Node::DeclareClass(n) = self { Some(n) } else { None }
10355 }
10356
10357 pub fn as_declare_function(&self) -> Option<&DeclareFunction<'gc>> {
10359 if let Node::DeclareFunction(n) = self { Some(n) } else { None }
10360 }
10361
10362 pub fn as_declare_hook(&self) -> Option<&DeclareHook<'gc>> {
10364 if let Node::DeclareHook(n) = self { Some(n) } else { None }
10365 }
10366
10367 pub fn as_declare_component(&self) -> Option<&DeclareComponent<'gc>> {
10369 if let Node::DeclareComponent(n) = self { Some(n) } else { None }
10370 }
10371
10372 pub fn as_declare_variable(&self) -> Option<&DeclareVariable<'gc>> {
10374 if let Node::DeclareVariable(n) = self { Some(n) } else { None }
10375 }
10376
10377 pub fn as_declare_enum(&self) -> Option<&DeclareEnum<'gc>> {
10379 if let Node::DeclareEnum(n) = self { Some(n) } else { None }
10380 }
10381
10382 pub fn as_declare_export_declaration(&self) -> Option<&DeclareExportDeclaration<'gc>> {
10384 if let Node::DeclareExportDeclaration(n) = self { Some(n) } else { None }
10385 }
10386
10387 pub fn as_declare_export_all_declaration(&self) -> Option<&DeclareExportAllDeclaration<'gc>> {
10390 if let Node::DeclareExportAllDeclaration(n) = self { Some(n) } else { None }
10391 }
10392
10393 pub fn as_declare_module(&self) -> Option<&DeclareModule<'gc>> {
10395 if let Node::DeclareModule(n) = self { Some(n) } else { None }
10396 }
10397
10398 pub fn as_declare_namespace(&self) -> Option<&DeclareNamespace<'gc>> {
10400 if let Node::DeclareNamespace(n) = self { Some(n) } else { None }
10401 }
10402
10403 pub fn as_declare_module_exports(&self) -> Option<&DeclareModuleExports<'gc>> {
10405 if let Node::DeclareModuleExports(n) = self { Some(n) } else { None }
10406 }
10407
10408 pub fn as_interface_extends(&self) -> Option<&InterfaceExtends<'gc>> {
10410 if let Node::InterfaceExtends(n) = self { Some(n) } else { None }
10411 }
10412
10413 pub fn as_class_implements(&self) -> Option<&ClassImplements<'gc>> {
10415 if let Node::ClassImplements(n) = self { Some(n) } else { None }
10416 }
10417
10418 pub fn as_type_annotation(&self) -> Option<&TypeAnnotation<'gc>> {
10420 if let Node::TypeAnnotation(n) = self { Some(n) } else { None }
10421 }
10422
10423 pub fn as_object_type_annotation(&self) -> Option<&ObjectTypeAnnotation<'gc>> {
10425 if let Node::ObjectTypeAnnotation(n) = self { Some(n) } else { None }
10426 }
10427
10428 pub fn as_object_type_property(&self) -> Option<&ObjectTypeProperty<'gc>> {
10430 if let Node::ObjectTypeProperty(n) = self { Some(n) } else { None }
10431 }
10432
10433 pub fn as_object_type_spread_property(&self) -> Option<&ObjectTypeSpreadProperty<'gc>> {
10435 if let Node::ObjectTypeSpreadProperty(n) = self { Some(n) } else { None }
10436 }
10437
10438 pub fn as_object_type_internal_slot(&self) -> Option<&ObjectTypeInternalSlot<'gc>> {
10440 if let Node::ObjectTypeInternalSlot(n) = self { Some(n) } else { None }
10441 }
10442
10443 pub fn as_object_type_call_property(&self) -> Option<&ObjectTypeCallProperty<'gc>> {
10445 if let Node::ObjectTypeCallProperty(n) = self { Some(n) } else { None }
10446 }
10447
10448 pub fn as_object_type_indexer(&self) -> Option<&ObjectTypeIndexer<'gc>> {
10450 if let Node::ObjectTypeIndexer(n) = self { Some(n) } else { None }
10451 }
10452
10453 pub fn as_object_type_mapped_type_property(&self) -> Option<&ObjectTypeMappedTypeProperty<'gc>> {
10456 if let Node::ObjectTypeMappedTypeProperty(n) = self { Some(n) } else { None }
10457 }
10458
10459 pub fn as_variance(&self) -> Option<&Variance<'gc>> {
10461 if let Node::Variance(n) = self { Some(n) } else { None }
10462 }
10463
10464 pub fn as_type_parameter_declaration(&self) -> Option<&TypeParameterDeclaration<'gc>> {
10466 if let Node::TypeParameterDeclaration(n) = self { Some(n) } else { None }
10467 }
10468
10469 pub fn as_type_parameter(&self) -> Option<&TypeParameter<'gc>> {
10471 if let Node::TypeParameter(n) = self { Some(n) } else { None }
10472 }
10473
10474 pub fn as_type_parameter_instantiation(&self) -> Option<&TypeParameterInstantiation<'gc>> {
10477 if let Node::TypeParameterInstantiation(n) = self { Some(n) } else { None }
10478 }
10479
10480 pub fn as_type_cast_expression(&self) -> Option<&TypeCastExpression<'gc>> {
10482 if let Node::TypeCastExpression(n) = self { Some(n) } else { None }
10483 }
10484
10485 pub fn as_as_expression(&self) -> Option<&AsExpression<'gc>> {
10487 if let Node::AsExpression(n) = self { Some(n) } else { None }
10488 }
10489
10490 pub fn as_as_const_expression(&self) -> Option<&AsConstExpression<'gc>> {
10492 if let Node::AsConstExpression(n) = self { Some(n) } else { None }
10493 }
10494
10495 pub fn as_inferred_predicate(&self) -> Option<&InferredPredicate<'gc>> {
10497 if let Node::InferredPredicate(n) = self { Some(n) } else { None }
10498 }
10499
10500 pub fn as_declared_predicate(&self) -> Option<&DeclaredPredicate<'gc>> {
10502 if let Node::DeclaredPredicate(n) = self { Some(n) } else { None }
10503 }
10504
10505 pub fn as_enum_declaration(&self) -> Option<&EnumDeclaration<'gc>> {
10507 if let Node::EnumDeclaration(n) = self { Some(n) } else { None }
10508 }
10509
10510 pub fn as_enum_string_body(&self) -> Option<&EnumStringBody<'gc>> {
10512 if let Node::EnumStringBody(n) = self { Some(n) } else { None }
10513 }
10514
10515 pub fn as_enum_number_body(&self) -> Option<&EnumNumberBody<'gc>> {
10517 if let Node::EnumNumberBody(n) = self { Some(n) } else { None }
10518 }
10519
10520 pub fn as_enum_big_int_body(&self) -> Option<&EnumBigIntBody<'gc>> {
10522 if let Node::EnumBigIntBody(n) = self { Some(n) } else { None }
10523 }
10524
10525 pub fn as_enum_boolean_body(&self) -> Option<&EnumBooleanBody<'gc>> {
10527 if let Node::EnumBooleanBody(n) = self { Some(n) } else { None }
10528 }
10529
10530 pub fn as_enum_symbol_body(&self) -> Option<&EnumSymbolBody<'gc>> {
10532 if let Node::EnumSymbolBody(n) = self { Some(n) } else { None }
10533 }
10534
10535 pub fn as_enum_defaulted_member(&self) -> Option<&EnumDefaultedMember<'gc>> {
10537 if let Node::EnumDefaultedMember(n) = self { Some(n) } else { None }
10538 }
10539
10540 pub fn as_enum_string_member(&self) -> Option<&EnumStringMember<'gc>> {
10542 if let Node::EnumStringMember(n) = self { Some(n) } else { None }
10543 }
10544
10545 pub fn as_enum_number_member(&self) -> Option<&EnumNumberMember<'gc>> {
10547 if let Node::EnumNumberMember(n) = self { Some(n) } else { None }
10548 }
10549
10550 pub fn as_enum_big_int_member(&self) -> Option<&EnumBigIntMember<'gc>> {
10552 if let Node::EnumBigIntMember(n) = self { Some(n) } else { None }
10553 }
10554
10555 pub fn as_enum_boolean_member(&self) -> Option<&EnumBooleanMember<'gc>> {
10557 if let Node::EnumBooleanMember(n) = self { Some(n) } else { None }
10558 }
10559
10560 pub fn as_component_parameter(&self) -> Option<&ComponentParameter<'gc>> {
10562 if let Node::ComponentParameter(n) = self { Some(n) } else { None }
10563 }
10564
10565 pub fn as_record_declaration(&self) -> Option<&RecordDeclaration<'gc>> {
10567 if let Node::RecordDeclaration(n) = self { Some(n) } else { None }
10568 }
10569
10570 pub fn as_record_declaration_implements(&self) -> Option<&RecordDeclarationImplements<'gc>> {
10573 if let Node::RecordDeclarationImplements(n) = self { Some(n) } else { None }
10574 }
10575
10576 pub fn as_record_declaration_body(&self) -> Option<&RecordDeclarationBody<'gc>> {
10578 if let Node::RecordDeclarationBody(n) = self { Some(n) } else { None }
10579 }
10580
10581 pub fn as_record_declaration_property(&self) -> Option<&RecordDeclarationProperty<'gc>> {
10584 if let Node::RecordDeclarationProperty(n) = self { Some(n) } else { None }
10585 }
10586
10587 pub fn as_record_declaration_static_property(&self) -> Option<&RecordDeclarationStaticProperty<'gc>> {
10590 if let Node::RecordDeclarationStaticProperty(n) = self { Some(n) } else { None }
10591 }
10592
10593 pub fn as_record_expression(&self) -> Option<&RecordExpression<'gc>> {
10595 if let Node::RecordExpression(n) = self { Some(n) } else { None }
10596 }
10597
10598 pub fn as_record_expression_properties(&self) -> Option<&RecordExpressionProperties<'gc>> {
10601 if let Node::RecordExpressionProperties(n) = self { Some(n) } else { None }
10602 }
10603
10604 pub fn as_ts_type_annotation(&self) -> Option<&TSTypeAnnotation<'gc>> {
10606 if let Node::TSTypeAnnotation(n) = self { Some(n) } else { None }
10607 }
10608
10609 pub fn as_ts_any_keyword(&self) -> Option<&TSAnyKeyword<'gc>> {
10611 if let Node::TSAnyKeyword(n) = self { Some(n) } else { None }
10612 }
10613
10614 pub fn as_ts_number_keyword(&self) -> Option<&TSNumberKeyword<'gc>> {
10616 if let Node::TSNumberKeyword(n) = self { Some(n) } else { None }
10617 }
10618
10619 pub fn as_ts_boolean_keyword(&self) -> Option<&TSBooleanKeyword<'gc>> {
10621 if let Node::TSBooleanKeyword(n) = self { Some(n) } else { None }
10622 }
10623
10624 pub fn as_ts_string_keyword(&self) -> Option<&TSStringKeyword<'gc>> {
10626 if let Node::TSStringKeyword(n) = self { Some(n) } else { None }
10627 }
10628
10629 pub fn as_ts_symbol_keyword(&self) -> Option<&TSSymbolKeyword<'gc>> {
10631 if let Node::TSSymbolKeyword(n) = self { Some(n) } else { None }
10632 }
10633
10634 pub fn as_ts_void_keyword(&self) -> Option<&TSVoidKeyword<'gc>> {
10636 if let Node::TSVoidKeyword(n) = self { Some(n) } else { None }
10637 }
10638
10639 pub fn as_ts_undefined_keyword(&self) -> Option<&TSUndefinedKeyword<'gc>> {
10641 if let Node::TSUndefinedKeyword(n) = self { Some(n) } else { None }
10642 }
10643
10644 pub fn as_ts_unknown_keyword(&self) -> Option<&TSUnknownKeyword<'gc>> {
10646 if let Node::TSUnknownKeyword(n) = self { Some(n) } else { None }
10647 }
10648
10649 pub fn as_ts_never_keyword(&self) -> Option<&TSNeverKeyword<'gc>> {
10651 if let Node::TSNeverKeyword(n) = self { Some(n) } else { None }
10652 }
10653
10654 pub fn as_ts_big_int_keyword(&self) -> Option<&TSBigIntKeyword<'gc>> {
10656 if let Node::TSBigIntKeyword(n) = self { Some(n) } else { None }
10657 }
10658
10659 pub fn as_ts_this_type(&self) -> Option<&TSThisType<'gc>> {
10661 if let Node::TSThisType(n) = self { Some(n) } else { None }
10662 }
10663
10664 pub fn as_ts_literal_type(&self) -> Option<&TSLiteralType<'gc>> {
10666 if let Node::TSLiteralType(n) = self { Some(n) } else { None }
10667 }
10668
10669 pub fn as_ts_indexed_access_type(&self) -> Option<&TSIndexedAccessType<'gc>> {
10671 if let Node::TSIndexedAccessType(n) = self { Some(n) } else { None }
10672 }
10673
10674 pub fn as_ts_array_type(&self) -> Option<&TSArrayType<'gc>> {
10676 if let Node::TSArrayType(n) = self { Some(n) } else { None }
10677 }
10678
10679 pub fn as_ts_type_reference(&self) -> Option<&TSTypeReference<'gc>> {
10681 if let Node::TSTypeReference(n) = self { Some(n) } else { None }
10682 }
10683
10684 pub fn as_ts_qualified_name(&self) -> Option<&TSQualifiedName<'gc>> {
10686 if let Node::TSQualifiedName(n) = self { Some(n) } else { None }
10687 }
10688
10689 pub fn as_ts_function_type(&self) -> Option<&TSFunctionType<'gc>> {
10691 if let Node::TSFunctionType(n) = self { Some(n) } else { None }
10692 }
10693
10694 pub fn as_ts_constructor_type(&self) -> Option<&TSConstructorType<'gc>> {
10696 if let Node::TSConstructorType(n) = self { Some(n) } else { None }
10697 }
10698
10699 pub fn as_ts_type_predicate(&self) -> Option<&TSTypePredicate<'gc>> {
10701 if let Node::TSTypePredicate(n) = self { Some(n) } else { None }
10702 }
10703
10704 pub fn as_ts_tuple_type(&self) -> Option<&TSTupleType<'gc>> {
10706 if let Node::TSTupleType(n) = self { Some(n) } else { None }
10707 }
10708
10709 pub fn as_ts_type_assertion(&self) -> Option<&TSTypeAssertion<'gc>> {
10711 if let Node::TSTypeAssertion(n) = self { Some(n) } else { None }
10712 }
10713
10714 pub fn as_ts_as_expression(&self) -> Option<&TSAsExpression<'gc>> {
10716 if let Node::TSAsExpression(n) = self { Some(n) } else { None }
10717 }
10718
10719 pub fn as_ts_parameter_property(&self) -> Option<&TSParameterProperty<'gc>> {
10721 if let Node::TSParameterProperty(n) = self { Some(n) } else { None }
10722 }
10723
10724 pub fn as_ts_type_alias_declaration(&self) -> Option<&TSTypeAliasDeclaration<'gc>> {
10726 if let Node::TSTypeAliasDeclaration(n) = self { Some(n) } else { None }
10727 }
10728
10729 pub fn as_ts_interface_declaration(&self) -> Option<&TSInterfaceDeclaration<'gc>> {
10731 if let Node::TSInterfaceDeclaration(n) = self { Some(n) } else { None }
10732 }
10733
10734 pub fn as_ts_interface_heritage(&self) -> Option<&TSInterfaceHeritage<'gc>> {
10736 if let Node::TSInterfaceHeritage(n) = self { Some(n) } else { None }
10737 }
10738
10739 pub fn as_ts_interface_body(&self) -> Option<&TSInterfaceBody<'gc>> {
10741 if let Node::TSInterfaceBody(n) = self { Some(n) } else { None }
10742 }
10743
10744 pub fn as_ts_enum_declaration(&self) -> Option<&TSEnumDeclaration<'gc>> {
10746 if let Node::TSEnumDeclaration(n) = self { Some(n) } else { None }
10747 }
10748
10749 pub fn as_ts_enum_member(&self) -> Option<&TSEnumMember<'gc>> {
10751 if let Node::TSEnumMember(n) = self { Some(n) } else { None }
10752 }
10753
10754 pub fn as_ts_module_declaration(&self) -> Option<&TSModuleDeclaration<'gc>> {
10756 if let Node::TSModuleDeclaration(n) = self { Some(n) } else { None }
10757 }
10758
10759 pub fn as_ts_module_block(&self) -> Option<&TSModuleBlock<'gc>> {
10761 if let Node::TSModuleBlock(n) = self { Some(n) } else { None }
10762 }
10763
10764 pub fn as_ts_module_member(&self) -> Option<&TSModuleMember<'gc>> {
10766 if let Node::TSModuleMember(n) = self { Some(n) } else { None }
10767 }
10768
10769 pub fn as_ts_type_parameter_declaration(&self) -> Option<&TSTypeParameterDeclaration<'gc>> {
10772 if let Node::TSTypeParameterDeclaration(n) = self { Some(n) } else { None }
10773 }
10774
10775 pub fn as_ts_type_parameter(&self) -> Option<&TSTypeParameter<'gc>> {
10777 if let Node::TSTypeParameter(n) = self { Some(n) } else { None }
10778 }
10779
10780 pub fn as_ts_type_parameter_instantiation(&self) -> Option<&TSTypeParameterInstantiation<'gc>> {
10783 if let Node::TSTypeParameterInstantiation(n) = self { Some(n) } else { None }
10784 }
10785
10786 pub fn as_ts_union_type(&self) -> Option<&TSUnionType<'gc>> {
10788 if let Node::TSUnionType(n) = self { Some(n) } else { None }
10789 }
10790
10791 pub fn as_ts_intersection_type(&self) -> Option<&TSIntersectionType<'gc>> {
10793 if let Node::TSIntersectionType(n) = self { Some(n) } else { None }
10794 }
10795
10796 pub fn as_ts_type_query(&self) -> Option<&TSTypeQuery<'gc>> {
10798 if let Node::TSTypeQuery(n) = self { Some(n) } else { None }
10799 }
10800
10801 pub fn as_ts_conditional_type(&self) -> Option<&TSConditionalType<'gc>> {
10803 if let Node::TSConditionalType(n) = self { Some(n) } else { None }
10804 }
10805
10806 pub fn as_ts_type_literal(&self) -> Option<&TSTypeLiteral<'gc>> {
10808 if let Node::TSTypeLiteral(n) = self { Some(n) } else { None }
10809 }
10810
10811 pub fn as_ts_property_signature(&self) -> Option<&TSPropertySignature<'gc>> {
10813 if let Node::TSPropertySignature(n) = self { Some(n) } else { None }
10814 }
10815
10816 pub fn as_ts_method_signature(&self) -> Option<&TSMethodSignature<'gc>> {
10818 if let Node::TSMethodSignature(n) = self { Some(n) } else { None }
10819 }
10820
10821 pub fn as_ts_index_signature(&self) -> Option<&TSIndexSignature<'gc>> {
10823 if let Node::TSIndexSignature(n) = self { Some(n) } else { None }
10824 }
10825
10826 pub fn as_ts_call_signature_declaration(&self) -> Option<&TSCallSignatureDeclaration<'gc>> {
10829 if let Node::TSCallSignatureDeclaration(n) = self { Some(n) } else { None }
10830 }
10831
10832 pub fn as_ts_modifiers(&self) -> Option<&TSModifiers<'gc>> {
10834 if let Node::TSModifiers(n) = self { Some(n) } else { None }
10835 }
10836
10837 pub fn as_cover_empty_args(&self) -> Option<&CoverEmptyArgs<'gc>> {
10839 if let Node::CoverEmptyArgs(n) = self { Some(n) } else { None }
10840 }
10841
10842 pub fn as_cover_trailing_comma(&self) -> Option<&CoverTrailingComma<'gc>> {
10844 if let Node::CoverTrailingComma(n) = self { Some(n) } else { None }
10845 }
10846
10847 pub fn as_cover_initializer(&self) -> Option<&CoverInitializer<'gc>> {
10849 if let Node::CoverInitializer(n) = self { Some(n) } else { None }
10850 }
10851
10852 pub fn as_cover_rest_element(&self) -> Option<&CoverRestElement<'gc>> {
10854 if let Node::CoverRestElement(n) = self { Some(n) } else { None }
10855 }
10856
10857 pub fn as_cover_typed_identifier(&self) -> Option<&CoverTypedIdentifier<'gc>> {
10859 if let Node::CoverTypedIdentifier(n) = self { Some(n) } else { None }
10860 }
10861
10862 pub fn as_sh_builtin(&self) -> Option<&SHBuiltin<'gc>> {
10864 if let Node::SHBuiltin(n) = self { Some(n) } else { None }
10865 }
10866
10867 pub fn as_implicit_checked_cast(&self) -> Option<&ImplicitCheckedCast<'gc>> {
10869 if let Node::ImplicitCheckedCast(n) = self { Some(n) } else { None }
10870 }
10871
10872 pub fn visit_children<V: Visitor<'gc> + ?Sized>(&'gc self, v: &mut V) {
10875 match self {
10876 Node::Empty(_) => {}
10877 Node::Metadata(_) => {}
10878 Node::Program(n) => {
10879 for c in n.body.iter() { v.visit_node(c); }
10880 for c in n.decorations.get().iter() { v.visit_node(c); }
10881 for c in n.dummy_param_list.get().iter() { v.visit_node(c); }
10882 }
10883 Node::FunctionExpression(n) => {
10884 if let Some(c) = n.id { v.visit_node(c); }
10885 for c in n.params.iter() { v.visit_node(c); }
10886 v.visit_node(n.body);
10887 if let Some(c) = n.type_parameters { v.visit_node(c); }
10888 if let Some(c) = n.return_type { v.visit_node(c); }
10889 if let Some(c) = n.predicate { v.visit_node(c); }
10890 for c in n.decorations.get().iter() { v.visit_node(c); }
10891 }
10892 Node::ArrowFunctionExpression(n) => {
10893 for c in n.params.iter() { v.visit_node(c); }
10894 v.visit_node(n.body);
10895 if let Some(c) = n.type_parameters { v.visit_node(c); }
10896 if let Some(c) = n.return_type { v.visit_node(c); }
10897 if let Some(c) = n.predicate { v.visit_node(c); }
10898 for c in n.decorations.get().iter() { v.visit_node(c); }
10899 }
10900 Node::FunctionDeclaration(n) => {
10901 if let Some(c) = n.id { v.visit_node(c); }
10902 for c in n.params.iter() { v.visit_node(c); }
10903 v.visit_node(n.body);
10904 if let Some(c) = n.type_parameters { v.visit_node(c); }
10905 if let Some(c) = n.return_type { v.visit_node(c); }
10906 if let Some(c) = n.predicate { v.visit_node(c); }
10907 for c in n.decorations.get().iter() { v.visit_node(c); }
10908 }
10909 Node::ComponentDeclaration(n) => {
10910 v.visit_node(n.id);
10911 for c in n.params.iter() { v.visit_node(c); }
10912 v.visit_node(n.body);
10913 if let Some(c) = n.type_parameters { v.visit_node(c); }
10914 if let Some(c) = n.renders_type { v.visit_node(c); }
10915 for c in n.decorations.get().iter() { v.visit_node(c); }
10916 }
10917 Node::HookDeclaration(n) => {
10918 v.visit_node(n.id);
10919 for c in n.params.iter() { v.visit_node(c); }
10920 v.visit_node(n.body);
10921 if let Some(c) = n.type_parameters { v.visit_node(c); }
10922 if let Some(c) = n.return_type { v.visit_node(c); }
10923 for c in n.decorations.get().iter() { v.visit_node(c); }
10924 }
10925 Node::MatchStatement(n) => {
10926 v.visit_node(n.argument);
10927 for c in n.cases.iter() { v.visit_node(c); }
10928 }
10929 Node::WhileStatement(n) => {
10930 v.visit_node(n.body);
10931 v.visit_node(n.test);
10932 }
10933 Node::DoWhileStatement(n) => {
10934 v.visit_node(n.body);
10935 v.visit_node(n.test);
10936 }
10937 Node::ForInStatement(n) => {
10938 v.visit_node(n.left);
10939 v.visit_node(n.right);
10940 v.visit_node(n.body);
10941 }
10942 Node::ForOfStatement(n) => {
10943 v.visit_node(n.left);
10944 v.visit_node(n.right);
10945 v.visit_node(n.body);
10946 }
10947 Node::ForStatement(n) => {
10948 if let Some(c) = n.init { v.visit_node(c); }
10949 if let Some(c) = n.test { v.visit_node(c); }
10950 if let Some(c) = n.update { v.visit_node(c); }
10951 v.visit_node(n.body);
10952 }
10953 Node::DebuggerStatement(_) => {}
10954 Node::EmptyStatement(_) => {}
10955 Node::BlockStatement(n) => {
10956 for c in n.body.iter() { v.visit_node(c); }
10957 }
10958 Node::StaticBlock(n) => {
10959 for c in n.body.iter() { v.visit_node(c); }
10960 }
10961 Node::BreakStatement(n) => {
10962 if let Some(c) = n.label { v.visit_node(c); }
10963 }
10964 Node::ContinueStatement(n) => {
10965 if let Some(c) = n.label { v.visit_node(c); }
10966 }
10967 Node::ThrowStatement(n) => {
10968 v.visit_node(n.argument);
10969 }
10970 Node::ReturnStatement(n) => {
10971 if let Some(c) = n.argument { v.visit_node(c); }
10972 }
10973 Node::WithStatement(n) => {
10974 v.visit_node(n.object);
10975 v.visit_node(n.body);
10976 }
10977 Node::SwitchStatement(n) => {
10978 v.visit_node(n.discriminant);
10979 for c in n.cases.iter() { v.visit_node(c); }
10980 }
10981 Node::LabeledStatement(n) => {
10982 v.visit_node(n.label);
10983 v.visit_node(n.body);
10984 }
10985 Node::ExpressionStatement(n) => {
10986 v.visit_node(n.expression);
10987 }
10988 Node::TryStatement(n) => {
10989 v.visit_node(n.block);
10990 if let Some(c) = n.handler { v.visit_node(c); }
10991 if let Some(c) = n.finalizer { v.visit_node(c); }
10992 }
10993 Node::IfStatement(n) => {
10994 v.visit_node(n.test);
10995 v.visit_node(n.consequent);
10996 if let Some(c) = n.alternate { v.visit_node(c); }
10997 }
10998 Node::NullLiteral(_) => {}
10999 Node::BooleanLiteral(_) => {}
11000 Node::StringLiteral(_) => {}
11001 Node::NumericLiteral(_) => {}
11002 Node::RegExpLiteral(_) => {}
11003 Node::BigIntLiteral(_) => {}
11004 Node::ThisExpression(_) => {}
11005 Node::Super(_) => {}
11006 Node::SequenceExpression(n) => {
11007 for c in n.expressions.iter() { v.visit_node(c); }
11008 }
11009 Node::ObjectExpression(n) => {
11010 for c in n.properties.iter() { v.visit_node(c); }
11011 }
11012 Node::ArrayExpression(n) => {
11013 for c in n.elements.iter() { v.visit_node(c); }
11014 }
11015 Node::SpreadElement(n) => {
11016 v.visit_node(n.argument);
11017 }
11018 Node::NewExpression(n) => {
11019 v.visit_node(n.callee);
11020 if let Some(c) = n.type_arguments { v.visit_node(c); }
11021 for c in n.arguments.iter() { v.visit_node(c); }
11022 }
11023 Node::YieldExpression(n) => {
11024 if let Some(c) = n.argument { v.visit_node(c); }
11025 }
11026 Node::AwaitExpression(n) => {
11027 v.visit_node(n.argument);
11028 }
11029 Node::ImportExpression(n) => {
11030 v.visit_node(n.source);
11031 if let Some(c) = n.options { v.visit_node(c); }
11032 }
11033 Node::CallExpression(n) => {
11034 v.visit_node(n.callee);
11035 if let Some(c) = n.type_arguments { v.visit_node(c); }
11036 for c in n.arguments.iter() { v.visit_node(c); }
11037 }
11038 Node::OptionalCallExpression(n) => {
11039 v.visit_node(n.callee);
11040 if let Some(c) = n.type_arguments { v.visit_node(c); }
11041 for c in n.arguments.iter() { v.visit_node(c); }
11042 }
11043 Node::AssignmentExpression(n) => {
11044 v.visit_node(n.left);
11045 v.visit_node(n.right);
11046 }
11047 Node::UnaryExpression(n) => {
11048 v.visit_node(n.argument);
11049 }
11050 Node::UpdateExpression(n) => {
11051 v.visit_node(n.argument);
11052 }
11053 Node::MemberExpression(n) => {
11054 v.visit_node(n.object);
11055 v.visit_node(n.property);
11056 }
11057 Node::OptionalMemberExpression(n) => {
11058 v.visit_node(n.object);
11059 v.visit_node(n.property);
11060 }
11061 Node::LogicalExpression(n) => {
11062 v.visit_node(n.left);
11063 v.visit_node(n.right);
11064 }
11065 Node::ConditionalExpression(n) => {
11066 v.visit_node(n.test);
11067 v.visit_node(n.alternate);
11068 v.visit_node(n.consequent);
11069 }
11070 Node::BinaryExpression(n) => {
11071 v.visit_node(n.left);
11072 v.visit_node(n.right);
11073 }
11074 Node::Directive(n) => {
11075 v.visit_node(n.value);
11076 }
11077 Node::DirectiveLiteral(_) => {}
11078 Node::Identifier(n) => {
11079 if let Some(c) = n.type_annotation { v.visit_node(c); }
11080 }
11081 Node::PrivateName(n) => {
11082 v.visit_node(n.id);
11083 }
11084 Node::MetaProperty(n) => {
11085 v.visit_node(n.meta);
11086 v.visit_node(n.property);
11087 }
11088 Node::SwitchCase(n) => {
11089 if let Some(c) = n.test { v.visit_node(c); }
11090 for c in n.consequent.iter() { v.visit_node(c); }
11091 }
11092 Node::CatchClause(n) => {
11093 if let Some(c) = n.param { v.visit_node(c); }
11094 v.visit_node(n.body);
11095 }
11096 Node::VariableDeclarator(n) => {
11097 if let Some(c) = n.init { v.visit_node(c); }
11098 v.visit_node(n.id);
11099 }
11100 Node::VariableDeclaration(n) => {
11101 for c in n.declarations.iter() { v.visit_node(c); }
11102 }
11103 Node::TemplateLiteral(n) => {
11104 for c in n.quasis.iter() { v.visit_node(c); }
11105 for c in n.expressions.iter() { v.visit_node(c); }
11106 }
11107 Node::TaggedTemplateExpression(n) => {
11108 v.visit_node(n.tag);
11109 v.visit_node(n.quasi);
11110 }
11111 Node::TemplateElement(_) => {}
11112 Node::Property(n) => {
11113 v.visit_node(n.key);
11114 v.visit_node(n.value);
11115 }
11116 Node::Decorator(n) => {
11117 v.visit_node(n.expression);
11118 }
11119 Node::ClassDeclaration(n) => {
11120 if let Some(c) = n.id { v.visit_node(c); }
11121 if let Some(c) = n.type_parameters { v.visit_node(c); }
11122 if let Some(c) = n.super_class { v.visit_node(c); }
11123 if let Some(c) = n.super_type_arguments { v.visit_node(c); }
11124 for c in n.implements.iter() { v.visit_node(c); }
11125 for c in n.decorators.iter() { v.visit_node(c); }
11126 v.visit_node(n.body);
11127 }
11128 Node::ClassExpression(n) => {
11129 if let Some(c) = n.id { v.visit_node(c); }
11130 if let Some(c) = n.type_parameters { v.visit_node(c); }
11131 if let Some(c) = n.super_class { v.visit_node(c); }
11132 if let Some(c) = n.super_type_arguments { v.visit_node(c); }
11133 for c in n.implements.iter() { v.visit_node(c); }
11134 for c in n.decorators.iter() { v.visit_node(c); }
11135 v.visit_node(n.body);
11136 }
11137 Node::ClassBody(n) => {
11138 for c in n.body.iter() { v.visit_node(c); }
11139 }
11140 Node::ClassProperty(n) => {
11141 v.visit_node(n.key);
11142 if let Some(c) = n.value { v.visit_node(c); }
11143 for c in n.decorators.iter() { v.visit_node(c); }
11144 if let Some(c) = n.variance { v.visit_node(c); }
11145 if let Some(c) = n.type_annotation { v.visit_node(c); }
11146 if let Some(c) = n.ts_modifiers { v.visit_node(c); }
11147 }
11148 Node::ClassPrivateProperty(n) => {
11149 v.visit_node(n.key);
11150 if let Some(c) = n.value { v.visit_node(c); }
11151 for c in n.decorators.iter() { v.visit_node(c); }
11152 if let Some(c) = n.variance { v.visit_node(c); }
11153 if let Some(c) = n.type_annotation { v.visit_node(c); }
11154 if let Some(c) = n.ts_modifiers { v.visit_node(c); }
11155 }
11156 Node::MethodDefinition(n) => {
11157 v.visit_node(n.key);
11158 v.visit_node(n.value);
11159 for c in n.decorators.iter() { v.visit_node(c); }
11160 }
11161 Node::ImportDeclaration(n) => {
11162 for c in n.specifiers.iter() { v.visit_node(c); }
11163 v.visit_node(n.source);
11164 for c in n.attributes.iter() { v.visit_node(c); }
11165 }
11166 Node::ImportSpecifier(n) => {
11167 v.visit_node(n.imported);
11168 v.visit_node(n.local);
11169 }
11170 Node::ImportDefaultSpecifier(n) => {
11171 v.visit_node(n.local);
11172 }
11173 Node::ImportNamespaceSpecifier(n) => {
11174 v.visit_node(n.local);
11175 }
11176 Node::ImportAttribute(n) => {
11177 v.visit_node(n.key);
11178 v.visit_node(n.value);
11179 }
11180 Node::ExportNamedDeclaration(n) => {
11181 if let Some(c) = n.declaration { v.visit_node(c); }
11182 for c in n.specifiers.iter() { v.visit_node(c); }
11183 if let Some(c) = n.source { v.visit_node(c); }
11184 }
11185 Node::ExportSpecifier(n) => {
11186 v.visit_node(n.exported);
11187 v.visit_node(n.local);
11188 }
11189 Node::ExportNamespaceSpecifier(n) => {
11190 v.visit_node(n.exported);
11191 }
11192 Node::ExportDefaultDeclaration(n) => {
11193 v.visit_node(n.declaration);
11194 }
11195 Node::ExportAllDeclaration(n) => {
11196 v.visit_node(n.source);
11197 }
11198 Node::ObjectPattern(n) => {
11199 for c in n.properties.iter() { v.visit_node(c); }
11200 if let Some(c) = n.type_annotation { v.visit_node(c); }
11201 }
11202 Node::ArrayPattern(n) => {
11203 for c in n.elements.iter() { v.visit_node(c); }
11204 if let Some(c) = n.type_annotation { v.visit_node(c); }
11205 }
11206 Node::RestElement(n) => {
11207 v.visit_node(n.argument);
11208 }
11209 Node::AssignmentPattern(n) => {
11210 v.visit_node(n.left);
11211 v.visit_node(n.right);
11212 }
11213 Node::MatchStatementCase(n) => {
11214 v.visit_node(n.pattern);
11215 v.visit_node(n.body);
11216 if let Some(c) = n.guard { v.visit_node(c); }
11217 }
11218 Node::MatchExpression(n) => {
11219 v.visit_node(n.argument);
11220 for c in n.cases.iter() { v.visit_node(c); }
11221 }
11222 Node::MatchExpressionCase(n) => {
11223 v.visit_node(n.pattern);
11224 v.visit_node(n.body);
11225 if let Some(c) = n.guard { v.visit_node(c); }
11226 }
11227 Node::MatchWildcardPattern(_) => {}
11228 Node::MatchLiteralPattern(n) => {
11229 v.visit_node(n.literal);
11230 }
11231 Node::MatchUnaryPattern(n) => {
11232 v.visit_node(n.argument);
11233 }
11234 Node::MatchIdentifierPattern(n) => {
11235 v.visit_node(n.id);
11236 }
11237 Node::MatchBindingPattern(n) => {
11238 v.visit_node(n.id);
11239 }
11240 Node::MatchObjectPattern(n) => {
11241 for c in n.properties.iter() { v.visit_node(c); }
11242 if let Some(c) = n.rest { v.visit_node(c); }
11243 }
11244 Node::MatchArrayPattern(n) => {
11245 for c in n.elements.iter() { v.visit_node(c); }
11246 if let Some(c) = n.rest { v.visit_node(c); }
11247 }
11248 Node::MatchOrPattern(n) => {
11249 for c in n.patterns.iter() { v.visit_node(c); }
11250 }
11251 Node::MatchAsPattern(n) => {
11252 v.visit_node(n.pattern);
11253 v.visit_node(n.target);
11254 }
11255 Node::MatchMemberPattern(n) => {
11256 v.visit_node(n.base);
11257 v.visit_node(n.property);
11258 }
11259 Node::MatchInstancePattern(n) => {
11260 v.visit_node(n.target_constructor);
11261 v.visit_node(n.properties);
11262 }
11263 Node::MatchObjectPatternProperty(n) => {
11264 v.visit_node(n.key);
11265 v.visit_node(n.pattern);
11266 }
11267 Node::MatchInstanceObjectPattern(n) => {
11268 for c in n.properties.iter() { v.visit_node(c); }
11269 if let Some(c) = n.rest { v.visit_node(c); }
11270 }
11271 Node::MatchRestPattern(n) => {
11272 if let Some(c) = n.argument { v.visit_node(c); }
11273 }
11274 Node::JSXIdentifier(_) => {}
11275 Node::JSXMemberExpression(n) => {
11276 v.visit_node(n.object);
11277 v.visit_node(n.property);
11278 }
11279 Node::JSXNamespacedName(n) => {
11280 v.visit_node(n.namespace);
11281 v.visit_node(n.name);
11282 }
11283 Node::JSXEmptyExpression(_) => {}
11284 Node::JSXExpressionContainer(n) => {
11285 v.visit_node(n.expression);
11286 }
11287 Node::JSXSpreadChild(n) => {
11288 v.visit_node(n.expression);
11289 }
11290 Node::JSXOpeningElement(n) => {
11291 v.visit_node(n.name);
11292 for c in n.attributes.iter() { v.visit_node(c); }
11293 if let Some(c) = n.type_arguments { v.visit_node(c); }
11294 }
11295 Node::JSXClosingElement(n) => {
11296 v.visit_node(n.name);
11297 }
11298 Node::JSXAttribute(n) => {
11299 v.visit_node(n.name);
11300 if let Some(c) = n.value { v.visit_node(c); }
11301 }
11302 Node::JSXSpreadAttribute(n) => {
11303 v.visit_node(n.argument);
11304 }
11305 Node::JSXStringLiteral(_) => {}
11306 Node::JSXText(_) => {}
11307 Node::JSXElement(n) => {
11308 v.visit_node(n.opening_element);
11309 for c in n.children.iter() { v.visit_node(c); }
11310 if let Some(c) = n.closing_element { v.visit_node(c); }
11311 }
11312 Node::JSXFragment(n) => {
11313 v.visit_node(n.opening_fragment);
11314 for c in n.children.iter() { v.visit_node(c); }
11315 v.visit_node(n.closing_fragment);
11316 }
11317 Node::JSXOpeningFragment(_) => {}
11318 Node::JSXClosingFragment(_) => {}
11319 Node::ExistsTypeAnnotation(_) => {}
11320 Node::EmptyTypeAnnotation(_) => {}
11321 Node::StringTypeAnnotation(_) => {}
11322 Node::NumberTypeAnnotation(_) => {}
11323 Node::StringLiteralTypeAnnotation(_) => {}
11324 Node::NumberLiteralTypeAnnotation(_) => {}
11325 Node::BigIntLiteralTypeAnnotation(_) => {}
11326 Node::BooleanTypeAnnotation(_) => {}
11327 Node::BooleanLiteralTypeAnnotation(_) => {}
11328 Node::NullLiteralTypeAnnotation(_) => {}
11329 Node::SymbolTypeAnnotation(_) => {}
11330 Node::AnyTypeAnnotation(_) => {}
11331 Node::MixedTypeAnnotation(_) => {}
11332 Node::BigIntTypeAnnotation(_) => {}
11333 Node::VoidTypeAnnotation(_) => {}
11334 Node::NeverTypeAnnotation(_) => {}
11335 Node::UnknownTypeAnnotation(_) => {}
11336 Node::UndefinedTypeAnnotation(_) => {}
11337 Node::FunctionTypeAnnotation(n) => {
11338 for c in n.params.iter() { v.visit_node(c); }
11339 if let Some(c) = n.this { v.visit_node(c); }
11340 v.visit_node(n.return_type);
11341 if let Some(c) = n.rest { v.visit_node(c); }
11342 if let Some(c) = n.type_parameters { v.visit_node(c); }
11343 }
11344 Node::HookTypeAnnotation(n) => {
11345 for c in n.params.iter() { v.visit_node(c); }
11346 v.visit_node(n.return_type);
11347 if let Some(c) = n.rest { v.visit_node(c); }
11348 if let Some(c) = n.type_parameters { v.visit_node(c); }
11349 }
11350 Node::FunctionTypeParam(n) => {
11351 if let Some(c) = n.name { v.visit_node(c); }
11352 v.visit_node(n.type_annotation);
11353 }
11354 Node::ComponentTypeAnnotation(n) => {
11355 for c in n.params.iter() { v.visit_node(c); }
11356 if let Some(c) = n.rest { v.visit_node(c); }
11357 if let Some(c) = n.type_parameters { v.visit_node(c); }
11358 if let Some(c) = n.renders_type { v.visit_node(c); }
11359 }
11360 Node::ComponentTypeParameter(n) => {
11361 if let Some(c) = n.name { v.visit_node(c); }
11362 v.visit_node(n.type_annotation);
11363 }
11364 Node::NullableTypeAnnotation(n) => {
11365 v.visit_node(n.type_annotation);
11366 }
11367 Node::QualifiedTypeIdentifier(n) => {
11368 v.visit_node(n.qualification);
11369 v.visit_node(n.id);
11370 }
11371 Node::TypeofTypeAnnotation(n) => {
11372 v.visit_node(n.argument);
11373 if let Some(c) = n.type_arguments { v.visit_node(c); }
11374 }
11375 Node::KeyofTypeAnnotation(n) => {
11376 v.visit_node(n.argument);
11377 }
11378 Node::TypeOperator(n) => {
11379 v.visit_node(n.type_annotation);
11380 }
11381 Node::QualifiedTypeofIdentifier(n) => {
11382 v.visit_node(n.qualification);
11383 v.visit_node(n.id);
11384 }
11385 Node::TupleTypeAnnotation(n) => {
11386 for c in n.element_types.iter() { v.visit_node(c); }
11387 }
11388 Node::TupleTypeSpreadElement(n) => {
11389 if let Some(c) = n.label { v.visit_node(c); }
11390 v.visit_node(n.type_annotation);
11391 }
11392 Node::TupleTypeLabeledElement(n) => {
11393 v.visit_node(n.label);
11394 v.visit_node(n.element_type);
11395 if let Some(c) = n.variance { v.visit_node(c); }
11396 }
11397 Node::ArrayTypeAnnotation(n) => {
11398 v.visit_node(n.element_type);
11399 }
11400 Node::InferTypeAnnotation(n) => {
11401 v.visit_node(n.type_parameter);
11402 }
11403 Node::UnionTypeAnnotation(n) => {
11404 for c in n.types.iter() { v.visit_node(c); }
11405 }
11406 Node::IntersectionTypeAnnotation(n) => {
11407 for c in n.types.iter() { v.visit_node(c); }
11408 }
11409 Node::GenericTypeAnnotation(n) => {
11410 v.visit_node(n.id);
11411 if let Some(c) = n.type_parameters { v.visit_node(c); }
11412 }
11413 Node::IndexedAccessType(n) => {
11414 v.visit_node(n.object_type);
11415 v.visit_node(n.index_type);
11416 }
11417 Node::OptionalIndexedAccessType(n) => {
11418 v.visit_node(n.object_type);
11419 v.visit_node(n.index_type);
11420 }
11421 Node::ConditionalTypeAnnotation(n) => {
11422 v.visit_node(n.check_type);
11423 v.visit_node(n.extends_type);
11424 v.visit_node(n.true_type);
11425 v.visit_node(n.false_type);
11426 }
11427 Node::TypePredicate(n) => {
11428 v.visit_node(n.parameter_name);
11429 if let Some(c) = n.type_annotation { v.visit_node(c); }
11430 }
11431 Node::InterfaceTypeAnnotation(n) => {
11432 for c in n.extends.iter() { v.visit_node(c); }
11433 if let Some(c) = n.body { v.visit_node(c); }
11434 }
11435 Node::TypeAlias(n) => {
11436 v.visit_node(n.id);
11437 if let Some(c) = n.type_parameters { v.visit_node(c); }
11438 v.visit_node(n.right);
11439 }
11440 Node::OpaqueType(n) => {
11441 v.visit_node(n.id);
11442 if let Some(c) = n.type_parameters { v.visit_node(c); }
11443 v.visit_node(n.impltype);
11444 if let Some(c) = n.lower_bound { v.visit_node(c); }
11445 if let Some(c) = n.upper_bound { v.visit_node(c); }
11446 if let Some(c) = n.supertype { v.visit_node(c); }
11447 }
11448 Node::InterfaceDeclaration(n) => {
11449 v.visit_node(n.id);
11450 if let Some(c) = n.type_parameters { v.visit_node(c); }
11451 for c in n.extends.iter() { v.visit_node(c); }
11452 v.visit_node(n.body);
11453 }
11454 Node::DeclareTypeAlias(n) => {
11455 v.visit_node(n.id);
11456 if let Some(c) = n.type_parameters { v.visit_node(c); }
11457 v.visit_node(n.right);
11458 }
11459 Node::DeclareOpaqueType(n) => {
11460 v.visit_node(n.id);
11461 if let Some(c) = n.type_parameters { v.visit_node(c); }
11462 if let Some(c) = n.impltype { v.visit_node(c); }
11463 if let Some(c) = n.lower_bound { v.visit_node(c); }
11464 if let Some(c) = n.upper_bound { v.visit_node(c); }
11465 if let Some(c) = n.supertype { v.visit_node(c); }
11466 }
11467 Node::DeclareInterface(n) => {
11468 v.visit_node(n.id);
11469 if let Some(c) = n.type_parameters { v.visit_node(c); }
11470 for c in n.extends.iter() { v.visit_node(c); }
11471 v.visit_node(n.body);
11472 }
11473 Node::DeclareClass(n) => {
11474 v.visit_node(n.id);
11475 if let Some(c) = n.type_parameters { v.visit_node(c); }
11476 for c in n.extends.iter() { v.visit_node(c); }
11477 for c in n.implements.iter() { v.visit_node(c); }
11478 for c in n.mixins.iter() { v.visit_node(c); }
11479 v.visit_node(n.body);
11480 }
11481 Node::DeclareFunction(n) => {
11482 v.visit_node(n.id);
11483 if let Some(c) = n.predicate { v.visit_node(c); }
11484 }
11485 Node::DeclareHook(n) => {
11486 v.visit_node(n.id);
11487 }
11488 Node::DeclareComponent(n) => {
11489 v.visit_node(n.id);
11490 for c in n.params.iter() { v.visit_node(c); }
11491 if let Some(c) = n.rest { v.visit_node(c); }
11492 if let Some(c) = n.type_parameters { v.visit_node(c); }
11493 if let Some(c) = n.renders_type { v.visit_node(c); }
11494 }
11495 Node::DeclareVariable(n) => {
11496 v.visit_node(n.id);
11497 }
11498 Node::DeclareEnum(n) => {
11499 v.visit_node(n.id);
11500 v.visit_node(n.body);
11501 }
11502 Node::DeclareExportDeclaration(n) => {
11503 if let Some(c) = n.declaration { v.visit_node(c); }
11504 for c in n.specifiers.iter() { v.visit_node(c); }
11505 if let Some(c) = n.source { v.visit_node(c); }
11506 }
11507 Node::DeclareExportAllDeclaration(n) => {
11508 v.visit_node(n.source);
11509 }
11510 Node::DeclareModule(n) => {
11511 v.visit_node(n.id);
11512 v.visit_node(n.body);
11513 }
11514 Node::DeclareNamespace(n) => {
11515 v.visit_node(n.id);
11516 v.visit_node(n.body);
11517 }
11518 Node::DeclareModuleExports(n) => {
11519 v.visit_node(n.type_annotation);
11520 }
11521 Node::InterfaceExtends(n) => {
11522 v.visit_node(n.id);
11523 if let Some(c) = n.type_parameters { v.visit_node(c); }
11524 }
11525 Node::ClassImplements(n) => {
11526 v.visit_node(n.id);
11527 if let Some(c) = n.type_parameters { v.visit_node(c); }
11528 }
11529 Node::TypeAnnotation(n) => {
11530 v.visit_node(n.type_annotation);
11531 }
11532 Node::ObjectTypeAnnotation(n) => {
11533 for c in n.properties.iter() { v.visit_node(c); }
11534 for c in n.indexers.iter() { v.visit_node(c); }
11535 for c in n.call_properties.iter() { v.visit_node(c); }
11536 for c in n.internal_slots.iter() { v.visit_node(c); }
11537 }
11538 Node::ObjectTypeProperty(n) => {
11539 v.visit_node(n.key);
11540 v.visit_node(n.value);
11541 if let Some(c) = n.variance { v.visit_node(c); }
11542 }
11543 Node::ObjectTypeSpreadProperty(n) => {
11544 v.visit_node(n.argument);
11545 }
11546 Node::ObjectTypeInternalSlot(n) => {
11547 v.visit_node(n.id);
11548 v.visit_node(n.value);
11549 }
11550 Node::ObjectTypeCallProperty(n) => {
11551 v.visit_node(n.value);
11552 }
11553 Node::ObjectTypeIndexer(n) => {
11554 if let Some(c) = n.id { v.visit_node(c); }
11555 v.visit_node(n.key);
11556 v.visit_node(n.value);
11557 if let Some(c) = n.variance { v.visit_node(c); }
11558 }
11559 Node::ObjectTypeMappedTypeProperty(n) => {
11560 v.visit_node(n.key_tparam);
11561 v.visit_node(n.prop_type);
11562 v.visit_node(n.source_type);
11563 if let Some(c) = n.variance { v.visit_node(c); }
11564 }
11565 Node::Variance(_) => {}
11566 Node::TypeParameterDeclaration(n) => {
11567 for c in n.params.iter() { v.visit_node(c); }
11568 }
11569 Node::TypeParameter(n) => {
11570 if let Some(c) = n.bound { v.visit_node(c); }
11571 if let Some(c) = n.variance { v.visit_node(c); }
11572 if let Some(c) = n.default { v.visit_node(c); }
11573 }
11574 Node::TypeParameterInstantiation(n) => {
11575 for c in n.params.iter() { v.visit_node(c); }
11576 }
11577 Node::TypeCastExpression(n) => {
11578 v.visit_node(n.expression);
11579 v.visit_node(n.type_annotation);
11580 }
11581 Node::AsExpression(n) => {
11582 v.visit_node(n.expression);
11583 v.visit_node(n.type_annotation);
11584 }
11585 Node::AsConstExpression(n) => {
11586 v.visit_node(n.expression);
11587 }
11588 Node::InferredPredicate(_) => {}
11589 Node::DeclaredPredicate(n) => {
11590 v.visit_node(n.value);
11591 }
11592 Node::EnumDeclaration(n) => {
11593 v.visit_node(n.id);
11594 v.visit_node(n.body);
11595 }
11596 Node::EnumStringBody(n) => {
11597 for c in n.members.iter() { v.visit_node(c); }
11598 }
11599 Node::EnumNumberBody(n) => {
11600 for c in n.members.iter() { v.visit_node(c); }
11601 }
11602 Node::EnumBigIntBody(n) => {
11603 for c in n.members.iter() { v.visit_node(c); }
11604 }
11605 Node::EnumBooleanBody(n) => {
11606 for c in n.members.iter() { v.visit_node(c); }
11607 }
11608 Node::EnumSymbolBody(n) => {
11609 for c in n.members.iter() { v.visit_node(c); }
11610 }
11611 Node::EnumDefaultedMember(n) => {
11612 v.visit_node(n.id);
11613 }
11614 Node::EnumStringMember(n) => {
11615 v.visit_node(n.id);
11616 v.visit_node(n.init);
11617 }
11618 Node::EnumNumberMember(n) => {
11619 v.visit_node(n.id);
11620 v.visit_node(n.init);
11621 }
11622 Node::EnumBigIntMember(n) => {
11623 v.visit_node(n.id);
11624 v.visit_node(n.init);
11625 }
11626 Node::EnumBooleanMember(n) => {
11627 v.visit_node(n.id);
11628 v.visit_node(n.init);
11629 }
11630 Node::ComponentParameter(n) => {
11631 v.visit_node(n.name);
11632 v.visit_node(n.local);
11633 }
11634 Node::RecordDeclaration(n) => {
11635 v.visit_node(n.id);
11636 if let Some(c) = n.type_parameters { v.visit_node(c); }
11637 for c in n.implements.iter() { v.visit_node(c); }
11638 v.visit_node(n.body);
11639 }
11640 Node::RecordDeclarationImplements(n) => {
11641 v.visit_node(n.id);
11642 if let Some(c) = n.type_arguments { v.visit_node(c); }
11643 }
11644 Node::RecordDeclarationBody(n) => {
11645 for c in n.elements.iter() { v.visit_node(c); }
11646 }
11647 Node::RecordDeclarationProperty(n) => {
11648 v.visit_node(n.key);
11649 v.visit_node(n.type_annotation);
11650 if let Some(c) = n.default_value { v.visit_node(c); }
11651 }
11652 Node::RecordDeclarationStaticProperty(n) => {
11653 v.visit_node(n.key);
11654 v.visit_node(n.type_annotation);
11655 v.visit_node(n.value);
11656 }
11657 Node::RecordExpression(n) => {
11658 v.visit_node(n.record_constructor);
11659 if let Some(c) = n.type_arguments { v.visit_node(c); }
11660 v.visit_node(n.properties);
11661 }
11662 Node::RecordExpressionProperties(n) => {
11663 for c in n.properties.iter() { v.visit_node(c); }
11664 }
11665 Node::TSTypeAnnotation(n) => {
11666 v.visit_node(n.type_annotation);
11667 }
11668 Node::TSAnyKeyword(_) => {}
11669 Node::TSNumberKeyword(_) => {}
11670 Node::TSBooleanKeyword(_) => {}
11671 Node::TSStringKeyword(_) => {}
11672 Node::TSSymbolKeyword(_) => {}
11673 Node::TSVoidKeyword(_) => {}
11674 Node::TSUndefinedKeyword(_) => {}
11675 Node::TSUnknownKeyword(_) => {}
11676 Node::TSNeverKeyword(_) => {}
11677 Node::TSBigIntKeyword(_) => {}
11678 Node::TSThisType(_) => {}
11679 Node::TSLiteralType(n) => {
11680 v.visit_node(n.literal);
11681 }
11682 Node::TSIndexedAccessType(n) => {
11683 v.visit_node(n.object_type);
11684 v.visit_node(n.index_type);
11685 }
11686 Node::TSArrayType(n) => {
11687 v.visit_node(n.element_type);
11688 }
11689 Node::TSTypeReference(n) => {
11690 v.visit_node(n.type_name);
11691 if let Some(c) = n.type_parameters { v.visit_node(c); }
11692 }
11693 Node::TSQualifiedName(n) => {
11694 v.visit_node(n.left);
11695 if let Some(c) = n.right { v.visit_node(c); }
11696 }
11697 Node::TSFunctionType(n) => {
11698 for c in n.params.iter() { v.visit_node(c); }
11699 v.visit_node(n.return_type);
11700 if let Some(c) = n.type_parameters { v.visit_node(c); }
11701 }
11702 Node::TSConstructorType(n) => {
11703 for c in n.params.iter() { v.visit_node(c); }
11704 v.visit_node(n.return_type);
11705 if let Some(c) = n.type_parameters { v.visit_node(c); }
11706 }
11707 Node::TSTypePredicate(n) => {
11708 v.visit_node(n.parameter_name);
11709 v.visit_node(n.type_annotation);
11710 }
11711 Node::TSTupleType(n) => {
11712 for c in n.element_types.iter() { v.visit_node(c); }
11713 }
11714 Node::TSTypeAssertion(n) => {
11715 v.visit_node(n.type_annotation);
11716 v.visit_node(n.expression);
11717 }
11718 Node::TSAsExpression(n) => {
11719 v.visit_node(n.expression);
11720 v.visit_node(n.type_annotation);
11721 }
11722 Node::TSParameterProperty(n) => {
11723 v.visit_node(n.parameter);
11724 }
11725 Node::TSTypeAliasDeclaration(n) => {
11726 v.visit_node(n.id);
11727 if let Some(c) = n.type_parameters { v.visit_node(c); }
11728 v.visit_node(n.type_annotation);
11729 }
11730 Node::TSInterfaceDeclaration(n) => {
11731 v.visit_node(n.id);
11732 v.visit_node(n.body);
11733 for c in n.extends.iter() { v.visit_node(c); }
11734 if let Some(c) = n.type_parameters { v.visit_node(c); }
11735 }
11736 Node::TSInterfaceHeritage(n) => {
11737 v.visit_node(n.expression);
11738 if let Some(c) = n.type_parameters { v.visit_node(c); }
11739 }
11740 Node::TSInterfaceBody(n) => {
11741 for c in n.body.iter() { v.visit_node(c); }
11742 }
11743 Node::TSEnumDeclaration(n) => {
11744 v.visit_node(n.id);
11745 for c in n.members.iter() { v.visit_node(c); }
11746 }
11747 Node::TSEnumMember(n) => {
11748 v.visit_node(n.id);
11749 if let Some(c) = n.initializer { v.visit_node(c); }
11750 }
11751 Node::TSModuleDeclaration(n) => {
11752 v.visit_node(n.id);
11753 v.visit_node(n.body);
11754 }
11755 Node::TSModuleBlock(n) => {
11756 for c in n.body.iter() { v.visit_node(c); }
11757 }
11758 Node::TSModuleMember(n) => {
11759 v.visit_node(n.id);
11760 if let Some(c) = n.initializer { v.visit_node(c); }
11761 }
11762 Node::TSTypeParameterDeclaration(n) => {
11763 for c in n.params.iter() { v.visit_node(c); }
11764 }
11765 Node::TSTypeParameter(n) => {
11766 v.visit_node(n.name);
11767 if let Some(c) = n.constraint { v.visit_node(c); }
11768 if let Some(c) = n.default { v.visit_node(c); }
11769 }
11770 Node::TSTypeParameterInstantiation(n) => {
11771 for c in n.params.iter() { v.visit_node(c); }
11772 }
11773 Node::TSUnionType(n) => {
11774 for c in n.types.iter() { v.visit_node(c); }
11775 }
11776 Node::TSIntersectionType(n) => {
11777 for c in n.types.iter() { v.visit_node(c); }
11778 }
11779 Node::TSTypeQuery(n) => {
11780 v.visit_node(n.expr_name);
11781 }
11782 Node::TSConditionalType(n) => {
11783 v.visit_node(n.check_type);
11784 v.visit_node(n.extends_type);
11785 v.visit_node(n.true_type);
11786 v.visit_node(n.false_type);
11787 }
11788 Node::TSTypeLiteral(n) => {
11789 for c in n.members.iter() { v.visit_node(c); }
11790 }
11791 Node::TSPropertySignature(n) => {
11792 v.visit_node(n.key);
11793 if let Some(c) = n.type_annotation { v.visit_node(c); }
11794 if let Some(c) = n.initializer { v.visit_node(c); }
11795 }
11796 Node::TSMethodSignature(n) => {
11797 v.visit_node(n.key);
11798 for c in n.params.iter() { v.visit_node(c); }
11799 if let Some(c) = n.return_type { v.visit_node(c); }
11800 }
11801 Node::TSIndexSignature(n) => {
11802 for c in n.parameters.iter() { v.visit_node(c); }
11803 if let Some(c) = n.type_annotation { v.visit_node(c); }
11804 }
11805 Node::TSCallSignatureDeclaration(n) => {
11806 for c in n.params.iter() { v.visit_node(c); }
11807 if let Some(c) = n.return_type { v.visit_node(c); }
11808 }
11809 Node::TSModifiers(_) => {}
11810 Node::CoverEmptyArgs(_) => {}
11811 Node::CoverTrailingComma(_) => {}
11812 Node::CoverInitializer(n) => {
11813 v.visit_node(n.init);
11814 }
11815 Node::CoverRestElement(n) => {
11816 v.visit_node(n.rest);
11817 }
11818 Node::CoverTypedIdentifier(n) => {
11819 v.visit_node(n.left);
11820 if let Some(c) = n.right { v.visit_node(c); }
11821 }
11822 Node::SHBuiltin(_) => {}
11823 Node::ImplicitCheckedCast(n) => {
11824 v.visit_node(n.argument);
11825 }
11826 }
11827 }
11828
11829 pub fn visit_children_mut<V: VisitorMut<'gc>>(
11832 &'gc self,
11833 ctx: &'gc crate::context::GCLock<'_, '_>,
11834 visitor: &mut V,
11835 ) -> TransformResult<&'gc Node<'gc>> {
11836 let builder = builder::Builder::from_node(self);
11837 #[allow(unused_mut)]
11838 match builder {
11839 builder::Builder::Empty(mut b) => b.build(ctx),
11840 builder::Builder::Metadata(mut b) => b.build(ctx),
11841 builder::Builder::Program(mut b) => {
11842 if let TransformResult::Changed(v) =
11843 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11844 b.body(v);
11845 }
11846 b.build(ctx)
11847 }
11848 builder::Builder::FunctionExpression(mut b) => {
11849 if let TransformResult::Changed(v) =
11850 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
11851 b.id(v);
11852 }
11853 if let TransformResult::Changed(v) =
11854 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
11855 b.params(v);
11856 }
11857 if let TransformResult::Changed(v) =
11858 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11859 b.body(v);
11860 }
11861 if let TransformResult::Changed(v) =
11862 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
11863 b.type_parameters(v);
11864 }
11865 if let TransformResult::Changed(v) =
11866 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
11867 b.return_type(v);
11868 }
11869 if let TransformResult::Changed(v) =
11870 b.inner.predicate.visit_child_mut(ctx, visitor, Path::new(self, NodeField::predicate)) {
11871 b.predicate(v);
11872 }
11873 b.build(ctx)
11874 }
11875 builder::Builder::ArrowFunctionExpression(mut b) => {
11876 if let TransformResult::Changed(v) =
11877 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
11878 b.params(v);
11879 }
11880 if let TransformResult::Changed(v) =
11881 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11882 b.body(v);
11883 }
11884 if let TransformResult::Changed(v) =
11885 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
11886 b.type_parameters(v);
11887 }
11888 if let TransformResult::Changed(v) =
11889 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
11890 b.return_type(v);
11891 }
11892 if let TransformResult::Changed(v) =
11893 b.inner.predicate.visit_child_mut(ctx, visitor, Path::new(self, NodeField::predicate)) {
11894 b.predicate(v);
11895 }
11896 b.build(ctx)
11897 }
11898 builder::Builder::FunctionDeclaration(mut b) => {
11899 if let TransformResult::Changed(v) =
11900 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
11901 b.id(v);
11902 }
11903 if let TransformResult::Changed(v) =
11904 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
11905 b.params(v);
11906 }
11907 if let TransformResult::Changed(v) =
11908 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11909 b.body(v);
11910 }
11911 if let TransformResult::Changed(v) =
11912 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
11913 b.type_parameters(v);
11914 }
11915 if let TransformResult::Changed(v) =
11916 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
11917 b.return_type(v);
11918 }
11919 if let TransformResult::Changed(v) =
11920 b.inner.predicate.visit_child_mut(ctx, visitor, Path::new(self, NodeField::predicate)) {
11921 b.predicate(v);
11922 }
11923 b.build(ctx)
11924 }
11925 builder::Builder::ComponentDeclaration(mut b) => {
11926 if let TransformResult::Changed(v) =
11927 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
11928 b.id(v);
11929 }
11930 if let TransformResult::Changed(v) =
11931 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
11932 b.params(v);
11933 }
11934 if let TransformResult::Changed(v) =
11935 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11936 b.body(v);
11937 }
11938 if let TransformResult::Changed(v) =
11939 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
11940 b.type_parameters(v);
11941 }
11942 if let TransformResult::Changed(v) =
11943 b.inner.renders_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::renders_type)) {
11944 b.renders_type(v);
11945 }
11946 b.build(ctx)
11947 }
11948 builder::Builder::HookDeclaration(mut b) => {
11949 if let TransformResult::Changed(v) =
11950 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
11951 b.id(v);
11952 }
11953 if let TransformResult::Changed(v) =
11954 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
11955 b.params(v);
11956 }
11957 if let TransformResult::Changed(v) =
11958 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11959 b.body(v);
11960 }
11961 if let TransformResult::Changed(v) =
11962 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
11963 b.type_parameters(v);
11964 }
11965 if let TransformResult::Changed(v) =
11966 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
11967 b.return_type(v);
11968 }
11969 b.build(ctx)
11970 }
11971 builder::Builder::MatchStatement(mut b) => {
11972 if let TransformResult::Changed(v) =
11973 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
11974 b.argument(v);
11975 }
11976 if let TransformResult::Changed(v) =
11977 b.inner.cases.visit_child_mut(ctx, visitor, Path::new(self, NodeField::cases)) {
11978 b.cases(v);
11979 }
11980 b.build(ctx)
11981 }
11982 builder::Builder::WhileStatement(mut b) => {
11983 if let TransformResult::Changed(v) =
11984 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11985 b.body(v);
11986 }
11987 if let TransformResult::Changed(v) =
11988 b.inner.test.visit_child_mut(ctx, visitor, Path::new(self, NodeField::test)) {
11989 b.test(v);
11990 }
11991 b.build(ctx)
11992 }
11993 builder::Builder::DoWhileStatement(mut b) => {
11994 if let TransformResult::Changed(v) =
11995 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
11996 b.body(v);
11997 }
11998 if let TransformResult::Changed(v) =
11999 b.inner.test.visit_child_mut(ctx, visitor, Path::new(self, NodeField::test)) {
12000 b.test(v);
12001 }
12002 b.build(ctx)
12003 }
12004 builder::Builder::ForInStatement(mut b) => {
12005 if let TransformResult::Changed(v) =
12006 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
12007 b.left(v);
12008 }
12009 if let TransformResult::Changed(v) =
12010 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
12011 b.right(v);
12012 }
12013 if let TransformResult::Changed(v) =
12014 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12015 b.body(v);
12016 }
12017 b.build(ctx)
12018 }
12019 builder::Builder::ForOfStatement(mut b) => {
12020 if let TransformResult::Changed(v) =
12021 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
12022 b.left(v);
12023 }
12024 if let TransformResult::Changed(v) =
12025 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
12026 b.right(v);
12027 }
12028 if let TransformResult::Changed(v) =
12029 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12030 b.body(v);
12031 }
12032 b.build(ctx)
12033 }
12034 builder::Builder::ForStatement(mut b) => {
12035 if let TransformResult::Changed(v) =
12036 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
12037 b.init(v);
12038 }
12039 if let TransformResult::Changed(v) =
12040 b.inner.test.visit_child_mut(ctx, visitor, Path::new(self, NodeField::test)) {
12041 b.test(v);
12042 }
12043 if let TransformResult::Changed(v) =
12044 b.inner.update.visit_child_mut(ctx, visitor, Path::new(self, NodeField::update)) {
12045 b.update(v);
12046 }
12047 if let TransformResult::Changed(v) =
12048 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12049 b.body(v);
12050 }
12051 b.build(ctx)
12052 }
12053 builder::Builder::DebuggerStatement(mut b) => b.build(ctx),
12054 builder::Builder::EmptyStatement(mut b) => b.build(ctx),
12055 builder::Builder::BlockStatement(mut b) => {
12056 if let TransformResult::Changed(v) =
12057 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12058 b.body(v);
12059 }
12060 b.build(ctx)
12061 }
12062 builder::Builder::StaticBlock(mut b) => {
12063 if let TransformResult::Changed(v) =
12064 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12065 b.body(v);
12066 }
12067 b.build(ctx)
12068 }
12069 builder::Builder::BreakStatement(mut b) => {
12070 if let TransformResult::Changed(v) =
12071 b.inner.label.visit_child_mut(ctx, visitor, Path::new(self, NodeField::label)) {
12072 b.label(v);
12073 }
12074 b.build(ctx)
12075 }
12076 builder::Builder::ContinueStatement(mut b) => {
12077 if let TransformResult::Changed(v) =
12078 b.inner.label.visit_child_mut(ctx, visitor, Path::new(self, NodeField::label)) {
12079 b.label(v);
12080 }
12081 b.build(ctx)
12082 }
12083 builder::Builder::ThrowStatement(mut b) => {
12084 if let TransformResult::Changed(v) =
12085 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12086 b.argument(v);
12087 }
12088 b.build(ctx)
12089 }
12090 builder::Builder::ReturnStatement(mut b) => {
12091 if let TransformResult::Changed(v) =
12092 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12093 b.argument(v);
12094 }
12095 b.build(ctx)
12096 }
12097 builder::Builder::WithStatement(mut b) => {
12098 if let TransformResult::Changed(v) =
12099 b.inner.object.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object)) {
12100 b.object(v);
12101 }
12102 if let TransformResult::Changed(v) =
12103 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12104 b.body(v);
12105 }
12106 b.build(ctx)
12107 }
12108 builder::Builder::SwitchStatement(mut b) => {
12109 if let TransformResult::Changed(v) =
12110 b.inner.discriminant.visit_child_mut(ctx, visitor, Path::new(self, NodeField::discriminant)) {
12111 b.discriminant(v);
12112 }
12113 if let TransformResult::Changed(v) =
12114 b.inner.cases.visit_child_mut(ctx, visitor, Path::new(self, NodeField::cases)) {
12115 b.cases(v);
12116 }
12117 b.build(ctx)
12118 }
12119 builder::Builder::LabeledStatement(mut b) => {
12120 if let TransformResult::Changed(v) =
12121 b.inner.label.visit_child_mut(ctx, visitor, Path::new(self, NodeField::label)) {
12122 b.label(v);
12123 }
12124 if let TransformResult::Changed(v) =
12125 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12126 b.body(v);
12127 }
12128 b.build(ctx)
12129 }
12130 builder::Builder::ExpressionStatement(mut b) => {
12131 if let TransformResult::Changed(v) =
12132 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
12133 b.expression(v);
12134 }
12135 b.build(ctx)
12136 }
12137 builder::Builder::TryStatement(mut b) => {
12138 if let TransformResult::Changed(v) =
12139 b.inner.block.visit_child_mut(ctx, visitor, Path::new(self, NodeField::block)) {
12140 b.block(v);
12141 }
12142 if let TransformResult::Changed(v) =
12143 b.inner.handler.visit_child_mut(ctx, visitor, Path::new(self, NodeField::handler)) {
12144 b.handler(v);
12145 }
12146 if let TransformResult::Changed(v) =
12147 b.inner.finalizer.visit_child_mut(ctx, visitor, Path::new(self, NodeField::finalizer)) {
12148 b.finalizer(v);
12149 }
12150 b.build(ctx)
12151 }
12152 builder::Builder::IfStatement(mut b) => {
12153 if let TransformResult::Changed(v) =
12154 b.inner.test.visit_child_mut(ctx, visitor, Path::new(self, NodeField::test)) {
12155 b.test(v);
12156 }
12157 if let TransformResult::Changed(v) =
12158 b.inner.consequent.visit_child_mut(ctx, visitor, Path::new(self, NodeField::consequent)) {
12159 b.consequent(v);
12160 }
12161 if let TransformResult::Changed(v) =
12162 b.inner.alternate.visit_child_mut(ctx, visitor, Path::new(self, NodeField::alternate)) {
12163 b.alternate(v);
12164 }
12165 b.build(ctx)
12166 }
12167 builder::Builder::NullLiteral(mut b) => b.build(ctx),
12168 builder::Builder::BooleanLiteral(mut b) => b.build(ctx),
12169 builder::Builder::StringLiteral(mut b) => b.build(ctx),
12170 builder::Builder::NumericLiteral(mut b) => b.build(ctx),
12171 builder::Builder::RegExpLiteral(mut b) => b.build(ctx),
12172 builder::Builder::BigIntLiteral(mut b) => b.build(ctx),
12173 builder::Builder::ThisExpression(mut b) => b.build(ctx),
12174 builder::Builder::Super(mut b) => b.build(ctx),
12175 builder::Builder::SequenceExpression(mut b) => {
12176 if let TransformResult::Changed(v) =
12177 b.inner.expressions.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expressions)) {
12178 b.expressions(v);
12179 }
12180 b.build(ctx)
12181 }
12182 builder::Builder::ObjectExpression(mut b) => {
12183 if let TransformResult::Changed(v) =
12184 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
12185 b.properties(v);
12186 }
12187 b.build(ctx)
12188 }
12189 builder::Builder::ArrayExpression(mut b) => {
12190 if let TransformResult::Changed(v) =
12191 b.inner.elements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::elements)) {
12192 b.elements(v);
12193 }
12194 b.build(ctx)
12195 }
12196 builder::Builder::SpreadElement(mut b) => {
12197 if let TransformResult::Changed(v) =
12198 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12199 b.argument(v);
12200 }
12201 b.build(ctx)
12202 }
12203 builder::Builder::NewExpression(mut b) => {
12204 if let TransformResult::Changed(v) =
12205 b.inner.callee.visit_child_mut(ctx, visitor, Path::new(self, NodeField::callee)) {
12206 b.callee(v);
12207 }
12208 if let TransformResult::Changed(v) =
12209 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
12210 b.type_arguments(v);
12211 }
12212 if let TransformResult::Changed(v) =
12213 b.inner.arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::arguments)) {
12214 b.arguments(v);
12215 }
12216 b.build(ctx)
12217 }
12218 builder::Builder::YieldExpression(mut b) => {
12219 if let TransformResult::Changed(v) =
12220 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12221 b.argument(v);
12222 }
12223 b.build(ctx)
12224 }
12225 builder::Builder::AwaitExpression(mut b) => {
12226 if let TransformResult::Changed(v) =
12227 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12228 b.argument(v);
12229 }
12230 b.build(ctx)
12231 }
12232 builder::Builder::ImportExpression(mut b) => {
12233 if let TransformResult::Changed(v) =
12234 b.inner.source.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source)) {
12235 b.source(v);
12236 }
12237 if let TransformResult::Changed(v) =
12238 b.inner.options.visit_child_mut(ctx, visitor, Path::new(self, NodeField::options)) {
12239 b.options(v);
12240 }
12241 b.build(ctx)
12242 }
12243 builder::Builder::CallExpression(mut b) => {
12244 if let TransformResult::Changed(v) =
12245 b.inner.callee.visit_child_mut(ctx, visitor, Path::new(self, NodeField::callee)) {
12246 b.callee(v);
12247 }
12248 if let TransformResult::Changed(v) =
12249 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
12250 b.type_arguments(v);
12251 }
12252 if let TransformResult::Changed(v) =
12253 b.inner.arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::arguments)) {
12254 b.arguments(v);
12255 }
12256 b.build(ctx)
12257 }
12258 builder::Builder::OptionalCallExpression(mut b) => {
12259 if let TransformResult::Changed(v) =
12260 b.inner.callee.visit_child_mut(ctx, visitor, Path::new(self, NodeField::callee)) {
12261 b.callee(v);
12262 }
12263 if let TransformResult::Changed(v) =
12264 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
12265 b.type_arguments(v);
12266 }
12267 if let TransformResult::Changed(v) =
12268 b.inner.arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::arguments)) {
12269 b.arguments(v);
12270 }
12271 b.build(ctx)
12272 }
12273 builder::Builder::AssignmentExpression(mut b) => {
12274 if let TransformResult::Changed(v) =
12275 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
12276 b.left(v);
12277 }
12278 if let TransformResult::Changed(v) =
12279 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
12280 b.right(v);
12281 }
12282 b.build(ctx)
12283 }
12284 builder::Builder::UnaryExpression(mut b) => {
12285 if let TransformResult::Changed(v) =
12286 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12287 b.argument(v);
12288 }
12289 b.build(ctx)
12290 }
12291 builder::Builder::UpdateExpression(mut b) => {
12292 if let TransformResult::Changed(v) =
12293 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12294 b.argument(v);
12295 }
12296 b.build(ctx)
12297 }
12298 builder::Builder::MemberExpression(mut b) => {
12299 if let TransformResult::Changed(v) =
12300 b.inner.object.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object)) {
12301 b.object(v);
12302 }
12303 if let TransformResult::Changed(v) =
12304 b.inner.property.visit_child_mut(ctx, visitor, Path::new(self, NodeField::property)) {
12305 b.property(v);
12306 }
12307 b.build(ctx)
12308 }
12309 builder::Builder::OptionalMemberExpression(mut b) => {
12310 if let TransformResult::Changed(v) =
12311 b.inner.object.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object)) {
12312 b.object(v);
12313 }
12314 if let TransformResult::Changed(v) =
12315 b.inner.property.visit_child_mut(ctx, visitor, Path::new(self, NodeField::property)) {
12316 b.property(v);
12317 }
12318 b.build(ctx)
12319 }
12320 builder::Builder::LogicalExpression(mut b) => {
12321 if let TransformResult::Changed(v) =
12322 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
12323 b.left(v);
12324 }
12325 if let TransformResult::Changed(v) =
12326 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
12327 b.right(v);
12328 }
12329 b.build(ctx)
12330 }
12331 builder::Builder::ConditionalExpression(mut b) => {
12332 if let TransformResult::Changed(v) =
12333 b.inner.test.visit_child_mut(ctx, visitor, Path::new(self, NodeField::test)) {
12334 b.test(v);
12335 }
12336 if let TransformResult::Changed(v) =
12337 b.inner.alternate.visit_child_mut(ctx, visitor, Path::new(self, NodeField::alternate)) {
12338 b.alternate(v);
12339 }
12340 if let TransformResult::Changed(v) =
12341 b.inner.consequent.visit_child_mut(ctx, visitor, Path::new(self, NodeField::consequent)) {
12342 b.consequent(v);
12343 }
12344 b.build(ctx)
12345 }
12346 builder::Builder::BinaryExpression(mut b) => {
12347 if let TransformResult::Changed(v) =
12348 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
12349 b.left(v);
12350 }
12351 if let TransformResult::Changed(v) =
12352 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
12353 b.right(v);
12354 }
12355 b.build(ctx)
12356 }
12357 builder::Builder::Directive(mut b) => {
12358 if let TransformResult::Changed(v) =
12359 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12360 b.value(v);
12361 }
12362 b.build(ctx)
12363 }
12364 builder::Builder::DirectiveLiteral(mut b) => b.build(ctx),
12365 builder::Builder::Identifier(mut b) => {
12366 if let TransformResult::Changed(v) =
12367 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
12368 b.type_annotation(v);
12369 }
12370 b.build(ctx)
12371 }
12372 builder::Builder::PrivateName(mut b) => {
12373 if let TransformResult::Changed(v) =
12374 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
12375 b.id(v);
12376 }
12377 b.build(ctx)
12378 }
12379 builder::Builder::MetaProperty(mut b) => {
12380 if let TransformResult::Changed(v) =
12381 b.inner.meta.visit_child_mut(ctx, visitor, Path::new(self, NodeField::meta)) {
12382 b.meta(v);
12383 }
12384 if let TransformResult::Changed(v) =
12385 b.inner.property.visit_child_mut(ctx, visitor, Path::new(self, NodeField::property)) {
12386 b.property(v);
12387 }
12388 b.build(ctx)
12389 }
12390 builder::Builder::SwitchCase(mut b) => {
12391 if let TransformResult::Changed(v) =
12392 b.inner.test.visit_child_mut(ctx, visitor, Path::new(self, NodeField::test)) {
12393 b.test(v);
12394 }
12395 if let TransformResult::Changed(v) =
12396 b.inner.consequent.visit_child_mut(ctx, visitor, Path::new(self, NodeField::consequent)) {
12397 b.consequent(v);
12398 }
12399 b.build(ctx)
12400 }
12401 builder::Builder::CatchClause(mut b) => {
12402 if let TransformResult::Changed(v) =
12403 b.inner.param.visit_child_mut(ctx, visitor, Path::new(self, NodeField::param)) {
12404 b.param(v);
12405 }
12406 if let TransformResult::Changed(v) =
12407 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12408 b.body(v);
12409 }
12410 b.build(ctx)
12411 }
12412 builder::Builder::VariableDeclarator(mut b) => {
12413 if let TransformResult::Changed(v) =
12414 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
12415 b.init(v);
12416 }
12417 if let TransformResult::Changed(v) =
12418 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
12419 b.id(v);
12420 }
12421 b.build(ctx)
12422 }
12423 builder::Builder::VariableDeclaration(mut b) => {
12424 if let TransformResult::Changed(v) =
12425 b.inner.declarations.visit_child_mut(ctx, visitor, Path::new(self, NodeField::declarations)) {
12426 b.declarations(v);
12427 }
12428 b.build(ctx)
12429 }
12430 builder::Builder::TemplateLiteral(mut b) => {
12431 if let TransformResult::Changed(v) =
12432 b.inner.quasis.visit_child_mut(ctx, visitor, Path::new(self, NodeField::quasis)) {
12433 b.quasis(v);
12434 }
12435 if let TransformResult::Changed(v) =
12436 b.inner.expressions.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expressions)) {
12437 b.expressions(v);
12438 }
12439 b.build(ctx)
12440 }
12441 builder::Builder::TaggedTemplateExpression(mut b) => {
12442 if let TransformResult::Changed(v) =
12443 b.inner.tag.visit_child_mut(ctx, visitor, Path::new(self, NodeField::tag)) {
12444 b.tag(v);
12445 }
12446 if let TransformResult::Changed(v) =
12447 b.inner.quasi.visit_child_mut(ctx, visitor, Path::new(self, NodeField::quasi)) {
12448 b.quasi(v);
12449 }
12450 b.build(ctx)
12451 }
12452 builder::Builder::TemplateElement(mut b) => b.build(ctx),
12453 builder::Builder::Property(mut b) => {
12454 if let TransformResult::Changed(v) =
12455 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
12456 b.key(v);
12457 }
12458 if let TransformResult::Changed(v) =
12459 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12460 b.value(v);
12461 }
12462 b.build(ctx)
12463 }
12464 builder::Builder::Decorator(mut b) => {
12465 if let TransformResult::Changed(v) =
12466 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
12467 b.expression(v);
12468 }
12469 b.build(ctx)
12470 }
12471 builder::Builder::ClassDeclaration(mut b) => {
12472 if let TransformResult::Changed(v) =
12473 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
12474 b.id(v);
12475 }
12476 if let TransformResult::Changed(v) =
12477 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
12478 b.type_parameters(v);
12479 }
12480 if let TransformResult::Changed(v) =
12481 b.inner.super_class.visit_child_mut(ctx, visitor, Path::new(self, NodeField::super_class)) {
12482 b.super_class(v);
12483 }
12484 if let TransformResult::Changed(v) =
12485 b.inner.super_type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::super_type_arguments)) {
12486 b.super_type_arguments(v);
12487 }
12488 if let TransformResult::Changed(v) =
12489 b.inner.implements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::implements)) {
12490 b.implements(v);
12491 }
12492 if let TransformResult::Changed(v) =
12493 b.inner.decorators.visit_child_mut(ctx, visitor, Path::new(self, NodeField::decorators)) {
12494 b.decorators(v);
12495 }
12496 if let TransformResult::Changed(v) =
12497 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12498 b.body(v);
12499 }
12500 b.build(ctx)
12501 }
12502 builder::Builder::ClassExpression(mut b) => {
12503 if let TransformResult::Changed(v) =
12504 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
12505 b.id(v);
12506 }
12507 if let TransformResult::Changed(v) =
12508 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
12509 b.type_parameters(v);
12510 }
12511 if let TransformResult::Changed(v) =
12512 b.inner.super_class.visit_child_mut(ctx, visitor, Path::new(self, NodeField::super_class)) {
12513 b.super_class(v);
12514 }
12515 if let TransformResult::Changed(v) =
12516 b.inner.super_type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::super_type_arguments)) {
12517 b.super_type_arguments(v);
12518 }
12519 if let TransformResult::Changed(v) =
12520 b.inner.implements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::implements)) {
12521 b.implements(v);
12522 }
12523 if let TransformResult::Changed(v) =
12524 b.inner.decorators.visit_child_mut(ctx, visitor, Path::new(self, NodeField::decorators)) {
12525 b.decorators(v);
12526 }
12527 if let TransformResult::Changed(v) =
12528 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12529 b.body(v);
12530 }
12531 b.build(ctx)
12532 }
12533 builder::Builder::ClassBody(mut b) => {
12534 if let TransformResult::Changed(v) =
12535 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12536 b.body(v);
12537 }
12538 b.build(ctx)
12539 }
12540 builder::Builder::ClassProperty(mut b) => {
12541 if let TransformResult::Changed(v) =
12542 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
12543 b.key(v);
12544 }
12545 if let TransformResult::Changed(v) =
12546 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12547 b.value(v);
12548 }
12549 if let TransformResult::Changed(v) =
12550 b.inner.decorators.visit_child_mut(ctx, visitor, Path::new(self, NodeField::decorators)) {
12551 b.decorators(v);
12552 }
12553 if let TransformResult::Changed(v) =
12554 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
12555 b.variance(v);
12556 }
12557 if let TransformResult::Changed(v) =
12558 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
12559 b.type_annotation(v);
12560 }
12561 if let TransformResult::Changed(v) =
12562 b.inner.ts_modifiers.visit_child_mut(ctx, visitor, Path::new(self, NodeField::ts_modifiers)) {
12563 b.ts_modifiers(v);
12564 }
12565 b.build(ctx)
12566 }
12567 builder::Builder::ClassPrivateProperty(mut b) => {
12568 if let TransformResult::Changed(v) =
12569 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
12570 b.key(v);
12571 }
12572 if let TransformResult::Changed(v) =
12573 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12574 b.value(v);
12575 }
12576 if let TransformResult::Changed(v) =
12577 b.inner.decorators.visit_child_mut(ctx, visitor, Path::new(self, NodeField::decorators)) {
12578 b.decorators(v);
12579 }
12580 if let TransformResult::Changed(v) =
12581 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
12582 b.variance(v);
12583 }
12584 if let TransformResult::Changed(v) =
12585 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
12586 b.type_annotation(v);
12587 }
12588 if let TransformResult::Changed(v) =
12589 b.inner.ts_modifiers.visit_child_mut(ctx, visitor, Path::new(self, NodeField::ts_modifiers)) {
12590 b.ts_modifiers(v);
12591 }
12592 b.build(ctx)
12593 }
12594 builder::Builder::MethodDefinition(mut b) => {
12595 if let TransformResult::Changed(v) =
12596 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
12597 b.key(v);
12598 }
12599 if let TransformResult::Changed(v) =
12600 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12601 b.value(v);
12602 }
12603 if let TransformResult::Changed(v) =
12604 b.inner.decorators.visit_child_mut(ctx, visitor, Path::new(self, NodeField::decorators)) {
12605 b.decorators(v);
12606 }
12607 b.build(ctx)
12608 }
12609 builder::Builder::ImportDeclaration(mut b) => {
12610 if let TransformResult::Changed(v) =
12611 b.inner.specifiers.visit_child_mut(ctx, visitor, Path::new(self, NodeField::specifiers)) {
12612 b.specifiers(v);
12613 }
12614 if let TransformResult::Changed(v) =
12615 b.inner.source.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source)) {
12616 b.source(v);
12617 }
12618 if let TransformResult::Changed(v) =
12619 b.inner.attributes.visit_child_mut(ctx, visitor, Path::new(self, NodeField::attributes)) {
12620 b.attributes(v);
12621 }
12622 b.build(ctx)
12623 }
12624 builder::Builder::ImportSpecifier(mut b) => {
12625 if let TransformResult::Changed(v) =
12626 b.inner.imported.visit_child_mut(ctx, visitor, Path::new(self, NodeField::imported)) {
12627 b.imported(v);
12628 }
12629 if let TransformResult::Changed(v) =
12630 b.inner.local.visit_child_mut(ctx, visitor, Path::new(self, NodeField::local)) {
12631 b.local(v);
12632 }
12633 b.build(ctx)
12634 }
12635 builder::Builder::ImportDefaultSpecifier(mut b) => {
12636 if let TransformResult::Changed(v) =
12637 b.inner.local.visit_child_mut(ctx, visitor, Path::new(self, NodeField::local)) {
12638 b.local(v);
12639 }
12640 b.build(ctx)
12641 }
12642 builder::Builder::ImportNamespaceSpecifier(mut b) => {
12643 if let TransformResult::Changed(v) =
12644 b.inner.local.visit_child_mut(ctx, visitor, Path::new(self, NodeField::local)) {
12645 b.local(v);
12646 }
12647 b.build(ctx)
12648 }
12649 builder::Builder::ImportAttribute(mut b) => {
12650 if let TransformResult::Changed(v) =
12651 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
12652 b.key(v);
12653 }
12654 if let TransformResult::Changed(v) =
12655 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12656 b.value(v);
12657 }
12658 b.build(ctx)
12659 }
12660 builder::Builder::ExportNamedDeclaration(mut b) => {
12661 if let TransformResult::Changed(v) =
12662 b.inner.declaration.visit_child_mut(ctx, visitor, Path::new(self, NodeField::declaration)) {
12663 b.declaration(v);
12664 }
12665 if let TransformResult::Changed(v) =
12666 b.inner.specifiers.visit_child_mut(ctx, visitor, Path::new(self, NodeField::specifiers)) {
12667 b.specifiers(v);
12668 }
12669 if let TransformResult::Changed(v) =
12670 b.inner.source.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source)) {
12671 b.source(v);
12672 }
12673 b.build(ctx)
12674 }
12675 builder::Builder::ExportSpecifier(mut b) => {
12676 if let TransformResult::Changed(v) =
12677 b.inner.exported.visit_child_mut(ctx, visitor, Path::new(self, NodeField::exported)) {
12678 b.exported(v);
12679 }
12680 if let TransformResult::Changed(v) =
12681 b.inner.local.visit_child_mut(ctx, visitor, Path::new(self, NodeField::local)) {
12682 b.local(v);
12683 }
12684 b.build(ctx)
12685 }
12686 builder::Builder::ExportNamespaceSpecifier(mut b) => {
12687 if let TransformResult::Changed(v) =
12688 b.inner.exported.visit_child_mut(ctx, visitor, Path::new(self, NodeField::exported)) {
12689 b.exported(v);
12690 }
12691 b.build(ctx)
12692 }
12693 builder::Builder::ExportDefaultDeclaration(mut b) => {
12694 if let TransformResult::Changed(v) =
12695 b.inner.declaration.visit_child_mut(ctx, visitor, Path::new(self, NodeField::declaration)) {
12696 b.declaration(v);
12697 }
12698 b.build(ctx)
12699 }
12700 builder::Builder::ExportAllDeclaration(mut b) => {
12701 if let TransformResult::Changed(v) =
12702 b.inner.source.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source)) {
12703 b.source(v);
12704 }
12705 b.build(ctx)
12706 }
12707 builder::Builder::ObjectPattern(mut b) => {
12708 if let TransformResult::Changed(v) =
12709 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
12710 b.properties(v);
12711 }
12712 if let TransformResult::Changed(v) =
12713 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
12714 b.type_annotation(v);
12715 }
12716 b.build(ctx)
12717 }
12718 builder::Builder::ArrayPattern(mut b) => {
12719 if let TransformResult::Changed(v) =
12720 b.inner.elements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::elements)) {
12721 b.elements(v);
12722 }
12723 if let TransformResult::Changed(v) =
12724 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
12725 b.type_annotation(v);
12726 }
12727 b.build(ctx)
12728 }
12729 builder::Builder::RestElement(mut b) => {
12730 if let TransformResult::Changed(v) =
12731 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12732 b.argument(v);
12733 }
12734 b.build(ctx)
12735 }
12736 builder::Builder::AssignmentPattern(mut b) => {
12737 if let TransformResult::Changed(v) =
12738 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
12739 b.left(v);
12740 }
12741 if let TransformResult::Changed(v) =
12742 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
12743 b.right(v);
12744 }
12745 b.build(ctx)
12746 }
12747 builder::Builder::MatchStatementCase(mut b) => {
12748 if let TransformResult::Changed(v) =
12749 b.inner.pattern.visit_child_mut(ctx, visitor, Path::new(self, NodeField::pattern)) {
12750 b.pattern(v);
12751 }
12752 if let TransformResult::Changed(v) =
12753 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12754 b.body(v);
12755 }
12756 if let TransformResult::Changed(v) =
12757 b.inner.guard.visit_child_mut(ctx, visitor, Path::new(self, NodeField::guard)) {
12758 b.guard(v);
12759 }
12760 b.build(ctx)
12761 }
12762 builder::Builder::MatchExpression(mut b) => {
12763 if let TransformResult::Changed(v) =
12764 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12765 b.argument(v);
12766 }
12767 if let TransformResult::Changed(v) =
12768 b.inner.cases.visit_child_mut(ctx, visitor, Path::new(self, NodeField::cases)) {
12769 b.cases(v);
12770 }
12771 b.build(ctx)
12772 }
12773 builder::Builder::MatchExpressionCase(mut b) => {
12774 if let TransformResult::Changed(v) =
12775 b.inner.pattern.visit_child_mut(ctx, visitor, Path::new(self, NodeField::pattern)) {
12776 b.pattern(v);
12777 }
12778 if let TransformResult::Changed(v) =
12779 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
12780 b.body(v);
12781 }
12782 if let TransformResult::Changed(v) =
12783 b.inner.guard.visit_child_mut(ctx, visitor, Path::new(self, NodeField::guard)) {
12784 b.guard(v);
12785 }
12786 b.build(ctx)
12787 }
12788 builder::Builder::MatchWildcardPattern(mut b) => b.build(ctx),
12789 builder::Builder::MatchLiteralPattern(mut b) => {
12790 if let TransformResult::Changed(v) =
12791 b.inner.literal.visit_child_mut(ctx, visitor, Path::new(self, NodeField::literal)) {
12792 b.literal(v);
12793 }
12794 b.build(ctx)
12795 }
12796 builder::Builder::MatchUnaryPattern(mut b) => {
12797 if let TransformResult::Changed(v) =
12798 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12799 b.argument(v);
12800 }
12801 b.build(ctx)
12802 }
12803 builder::Builder::MatchIdentifierPattern(mut b) => {
12804 if let TransformResult::Changed(v) =
12805 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
12806 b.id(v);
12807 }
12808 b.build(ctx)
12809 }
12810 builder::Builder::MatchBindingPattern(mut b) => {
12811 if let TransformResult::Changed(v) =
12812 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
12813 b.id(v);
12814 }
12815 b.build(ctx)
12816 }
12817 builder::Builder::MatchObjectPattern(mut b) => {
12818 if let TransformResult::Changed(v) =
12819 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
12820 b.properties(v);
12821 }
12822 if let TransformResult::Changed(v) =
12823 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
12824 b.rest(v);
12825 }
12826 b.build(ctx)
12827 }
12828 builder::Builder::MatchArrayPattern(mut b) => {
12829 if let TransformResult::Changed(v) =
12830 b.inner.elements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::elements)) {
12831 b.elements(v);
12832 }
12833 if let TransformResult::Changed(v) =
12834 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
12835 b.rest(v);
12836 }
12837 b.build(ctx)
12838 }
12839 builder::Builder::MatchOrPattern(mut b) => {
12840 if let TransformResult::Changed(v) =
12841 b.inner.patterns.visit_child_mut(ctx, visitor, Path::new(self, NodeField::patterns)) {
12842 b.patterns(v);
12843 }
12844 b.build(ctx)
12845 }
12846 builder::Builder::MatchAsPattern(mut b) => {
12847 if let TransformResult::Changed(v) =
12848 b.inner.pattern.visit_child_mut(ctx, visitor, Path::new(self, NodeField::pattern)) {
12849 b.pattern(v);
12850 }
12851 if let TransformResult::Changed(v) =
12852 b.inner.target.visit_child_mut(ctx, visitor, Path::new(self, NodeField::target)) {
12853 b.target(v);
12854 }
12855 b.build(ctx)
12856 }
12857 builder::Builder::MatchMemberPattern(mut b) => {
12858 if let TransformResult::Changed(v) =
12859 b.inner.base.visit_child_mut(ctx, visitor, Path::new(self, NodeField::base)) {
12860 b.base(v);
12861 }
12862 if let TransformResult::Changed(v) =
12863 b.inner.property.visit_child_mut(ctx, visitor, Path::new(self, NodeField::property)) {
12864 b.property(v);
12865 }
12866 b.build(ctx)
12867 }
12868 builder::Builder::MatchInstancePattern(mut b) => {
12869 if let TransformResult::Changed(v) =
12870 b.inner.target_constructor.visit_child_mut(ctx, visitor, Path::new(self, NodeField::target_constructor)) {
12871 b.target_constructor(v);
12872 }
12873 if let TransformResult::Changed(v) =
12874 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
12875 b.properties(v);
12876 }
12877 b.build(ctx)
12878 }
12879 builder::Builder::MatchObjectPatternProperty(mut b) => {
12880 if let TransformResult::Changed(v) =
12881 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
12882 b.key(v);
12883 }
12884 if let TransformResult::Changed(v) =
12885 b.inner.pattern.visit_child_mut(ctx, visitor, Path::new(self, NodeField::pattern)) {
12886 b.pattern(v);
12887 }
12888 b.build(ctx)
12889 }
12890 builder::Builder::MatchInstanceObjectPattern(mut b) => {
12891 if let TransformResult::Changed(v) =
12892 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
12893 b.properties(v);
12894 }
12895 if let TransformResult::Changed(v) =
12896 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
12897 b.rest(v);
12898 }
12899 b.build(ctx)
12900 }
12901 builder::Builder::MatchRestPattern(mut b) => {
12902 if let TransformResult::Changed(v) =
12903 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12904 b.argument(v);
12905 }
12906 b.build(ctx)
12907 }
12908 builder::Builder::JSXIdentifier(mut b) => b.build(ctx),
12909 builder::Builder::JSXMemberExpression(mut b) => {
12910 if let TransformResult::Changed(v) =
12911 b.inner.object.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object)) {
12912 b.object(v);
12913 }
12914 if let TransformResult::Changed(v) =
12915 b.inner.property.visit_child_mut(ctx, visitor, Path::new(self, NodeField::property)) {
12916 b.property(v);
12917 }
12918 b.build(ctx)
12919 }
12920 builder::Builder::JSXNamespacedName(mut b) => {
12921 if let TransformResult::Changed(v) =
12922 b.inner.namespace.visit_child_mut(ctx, visitor, Path::new(self, NodeField::namespace)) {
12923 b.namespace(v);
12924 }
12925 if let TransformResult::Changed(v) =
12926 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
12927 b.name(v);
12928 }
12929 b.build(ctx)
12930 }
12931 builder::Builder::JSXEmptyExpression(mut b) => b.build(ctx),
12932 builder::Builder::JSXExpressionContainer(mut b) => {
12933 if let TransformResult::Changed(v) =
12934 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
12935 b.expression(v);
12936 }
12937 b.build(ctx)
12938 }
12939 builder::Builder::JSXSpreadChild(mut b) => {
12940 if let TransformResult::Changed(v) =
12941 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
12942 b.expression(v);
12943 }
12944 b.build(ctx)
12945 }
12946 builder::Builder::JSXOpeningElement(mut b) => {
12947 if let TransformResult::Changed(v) =
12948 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
12949 b.name(v);
12950 }
12951 if let TransformResult::Changed(v) =
12952 b.inner.attributes.visit_child_mut(ctx, visitor, Path::new(self, NodeField::attributes)) {
12953 b.attributes(v);
12954 }
12955 if let TransformResult::Changed(v) =
12956 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
12957 b.type_arguments(v);
12958 }
12959 b.build(ctx)
12960 }
12961 builder::Builder::JSXClosingElement(mut b) => {
12962 if let TransformResult::Changed(v) =
12963 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
12964 b.name(v);
12965 }
12966 b.build(ctx)
12967 }
12968 builder::Builder::JSXAttribute(mut b) => {
12969 if let TransformResult::Changed(v) =
12970 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
12971 b.name(v);
12972 }
12973 if let TransformResult::Changed(v) =
12974 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
12975 b.value(v);
12976 }
12977 b.build(ctx)
12978 }
12979 builder::Builder::JSXSpreadAttribute(mut b) => {
12980 if let TransformResult::Changed(v) =
12981 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
12982 b.argument(v);
12983 }
12984 b.build(ctx)
12985 }
12986 builder::Builder::JSXStringLiteral(mut b) => b.build(ctx),
12987 builder::Builder::JSXText(mut b) => b.build(ctx),
12988 builder::Builder::JSXElement(mut b) => {
12989 if let TransformResult::Changed(v) =
12990 b.inner.opening_element.visit_child_mut(ctx, visitor, Path::new(self, NodeField::opening_element)) {
12991 b.opening_element(v);
12992 }
12993 if let TransformResult::Changed(v) =
12994 b.inner.children.visit_child_mut(ctx, visitor, Path::new(self, NodeField::children)) {
12995 b.children(v);
12996 }
12997 if let TransformResult::Changed(v) =
12998 b.inner.closing_element.visit_child_mut(ctx, visitor, Path::new(self, NodeField::closing_element)) {
12999 b.closing_element(v);
13000 }
13001 b.build(ctx)
13002 }
13003 builder::Builder::JSXFragment(mut b) => {
13004 if let TransformResult::Changed(v) =
13005 b.inner.opening_fragment.visit_child_mut(ctx, visitor, Path::new(self, NodeField::opening_fragment)) {
13006 b.opening_fragment(v);
13007 }
13008 if let TransformResult::Changed(v) =
13009 b.inner.children.visit_child_mut(ctx, visitor, Path::new(self, NodeField::children)) {
13010 b.children(v);
13011 }
13012 if let TransformResult::Changed(v) =
13013 b.inner.closing_fragment.visit_child_mut(ctx, visitor, Path::new(self, NodeField::closing_fragment)) {
13014 b.closing_fragment(v);
13015 }
13016 b.build(ctx)
13017 }
13018 builder::Builder::JSXOpeningFragment(mut b) => b.build(ctx),
13019 builder::Builder::JSXClosingFragment(mut b) => b.build(ctx),
13020 builder::Builder::ExistsTypeAnnotation(mut b) => b.build(ctx),
13021 builder::Builder::EmptyTypeAnnotation(mut b) => b.build(ctx),
13022 builder::Builder::StringTypeAnnotation(mut b) => b.build(ctx),
13023 builder::Builder::NumberTypeAnnotation(mut b) => b.build(ctx),
13024 builder::Builder::StringLiteralTypeAnnotation(mut b) => b.build(ctx),
13025 builder::Builder::NumberLiteralTypeAnnotation(mut b) => b.build(ctx),
13026 builder::Builder::BigIntLiteralTypeAnnotation(mut b) => b.build(ctx),
13027 builder::Builder::BooleanTypeAnnotation(mut b) => b.build(ctx),
13028 builder::Builder::BooleanLiteralTypeAnnotation(mut b) => b.build(ctx),
13029 builder::Builder::NullLiteralTypeAnnotation(mut b) => b.build(ctx),
13030 builder::Builder::SymbolTypeAnnotation(mut b) => b.build(ctx),
13031 builder::Builder::AnyTypeAnnotation(mut b) => b.build(ctx),
13032 builder::Builder::MixedTypeAnnotation(mut b) => b.build(ctx),
13033 builder::Builder::BigIntTypeAnnotation(mut b) => b.build(ctx),
13034 builder::Builder::VoidTypeAnnotation(mut b) => b.build(ctx),
13035 builder::Builder::NeverTypeAnnotation(mut b) => b.build(ctx),
13036 builder::Builder::UnknownTypeAnnotation(mut b) => b.build(ctx),
13037 builder::Builder::UndefinedTypeAnnotation(mut b) => b.build(ctx),
13038 builder::Builder::FunctionTypeAnnotation(mut b) => {
13039 if let TransformResult::Changed(v) =
13040 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
13041 b.params(v);
13042 }
13043 if let TransformResult::Changed(v) =
13044 b.inner.this.visit_child_mut(ctx, visitor, Path::new(self, NodeField::this)) {
13045 b.this(v);
13046 }
13047 if let TransformResult::Changed(v) =
13048 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
13049 b.return_type(v);
13050 }
13051 if let TransformResult::Changed(v) =
13052 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
13053 b.rest(v);
13054 }
13055 if let TransformResult::Changed(v) =
13056 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13057 b.type_parameters(v);
13058 }
13059 b.build(ctx)
13060 }
13061 builder::Builder::HookTypeAnnotation(mut b) => {
13062 if let TransformResult::Changed(v) =
13063 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
13064 b.params(v);
13065 }
13066 if let TransformResult::Changed(v) =
13067 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
13068 b.return_type(v);
13069 }
13070 if let TransformResult::Changed(v) =
13071 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
13072 b.rest(v);
13073 }
13074 if let TransformResult::Changed(v) =
13075 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13076 b.type_parameters(v);
13077 }
13078 b.build(ctx)
13079 }
13080 builder::Builder::FunctionTypeParam(mut b) => {
13081 if let TransformResult::Changed(v) =
13082 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
13083 b.name(v);
13084 }
13085 if let TransformResult::Changed(v) =
13086 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13087 b.type_annotation(v);
13088 }
13089 b.build(ctx)
13090 }
13091 builder::Builder::ComponentTypeAnnotation(mut b) => {
13092 if let TransformResult::Changed(v) =
13093 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
13094 b.params(v);
13095 }
13096 if let TransformResult::Changed(v) =
13097 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
13098 b.rest(v);
13099 }
13100 if let TransformResult::Changed(v) =
13101 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13102 b.type_parameters(v);
13103 }
13104 if let TransformResult::Changed(v) =
13105 b.inner.renders_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::renders_type)) {
13106 b.renders_type(v);
13107 }
13108 b.build(ctx)
13109 }
13110 builder::Builder::ComponentTypeParameter(mut b) => {
13111 if let TransformResult::Changed(v) =
13112 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
13113 b.name(v);
13114 }
13115 if let TransformResult::Changed(v) =
13116 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13117 b.type_annotation(v);
13118 }
13119 b.build(ctx)
13120 }
13121 builder::Builder::NullableTypeAnnotation(mut b) => {
13122 if let TransformResult::Changed(v) =
13123 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13124 b.type_annotation(v);
13125 }
13126 b.build(ctx)
13127 }
13128 builder::Builder::QualifiedTypeIdentifier(mut b) => {
13129 if let TransformResult::Changed(v) =
13130 b.inner.qualification.visit_child_mut(ctx, visitor, Path::new(self, NodeField::qualification)) {
13131 b.qualification(v);
13132 }
13133 if let TransformResult::Changed(v) =
13134 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13135 b.id(v);
13136 }
13137 b.build(ctx)
13138 }
13139 builder::Builder::TypeofTypeAnnotation(mut b) => {
13140 if let TransformResult::Changed(v) =
13141 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
13142 b.argument(v);
13143 }
13144 if let TransformResult::Changed(v) =
13145 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
13146 b.type_arguments(v);
13147 }
13148 b.build(ctx)
13149 }
13150 builder::Builder::KeyofTypeAnnotation(mut b) => {
13151 if let TransformResult::Changed(v) =
13152 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
13153 b.argument(v);
13154 }
13155 b.build(ctx)
13156 }
13157 builder::Builder::TypeOperator(mut b) => {
13158 if let TransformResult::Changed(v) =
13159 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13160 b.type_annotation(v);
13161 }
13162 b.build(ctx)
13163 }
13164 builder::Builder::QualifiedTypeofIdentifier(mut b) => {
13165 if let TransformResult::Changed(v) =
13166 b.inner.qualification.visit_child_mut(ctx, visitor, Path::new(self, NodeField::qualification)) {
13167 b.qualification(v);
13168 }
13169 if let TransformResult::Changed(v) =
13170 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13171 b.id(v);
13172 }
13173 b.build(ctx)
13174 }
13175 builder::Builder::TupleTypeAnnotation(mut b) => {
13176 if let TransformResult::Changed(v) =
13177 b.inner.element_types.visit_child_mut(ctx, visitor, Path::new(self, NodeField::element_types)) {
13178 b.element_types(v);
13179 }
13180 b.build(ctx)
13181 }
13182 builder::Builder::TupleTypeSpreadElement(mut b) => {
13183 if let TransformResult::Changed(v) =
13184 b.inner.label.visit_child_mut(ctx, visitor, Path::new(self, NodeField::label)) {
13185 b.label(v);
13186 }
13187 if let TransformResult::Changed(v) =
13188 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13189 b.type_annotation(v);
13190 }
13191 b.build(ctx)
13192 }
13193 builder::Builder::TupleTypeLabeledElement(mut b) => {
13194 if let TransformResult::Changed(v) =
13195 b.inner.label.visit_child_mut(ctx, visitor, Path::new(self, NodeField::label)) {
13196 b.label(v);
13197 }
13198 if let TransformResult::Changed(v) =
13199 b.inner.element_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::element_type)) {
13200 b.element_type(v);
13201 }
13202 if let TransformResult::Changed(v) =
13203 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
13204 b.variance(v);
13205 }
13206 b.build(ctx)
13207 }
13208 builder::Builder::ArrayTypeAnnotation(mut b) => {
13209 if let TransformResult::Changed(v) =
13210 b.inner.element_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::element_type)) {
13211 b.element_type(v);
13212 }
13213 b.build(ctx)
13214 }
13215 builder::Builder::InferTypeAnnotation(mut b) => {
13216 if let TransformResult::Changed(v) =
13217 b.inner.type_parameter.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameter)) {
13218 b.type_parameter(v);
13219 }
13220 b.build(ctx)
13221 }
13222 builder::Builder::UnionTypeAnnotation(mut b) => {
13223 if let TransformResult::Changed(v) =
13224 b.inner.types.visit_child_mut(ctx, visitor, Path::new(self, NodeField::types)) {
13225 b.types(v);
13226 }
13227 b.build(ctx)
13228 }
13229 builder::Builder::IntersectionTypeAnnotation(mut b) => {
13230 if let TransformResult::Changed(v) =
13231 b.inner.types.visit_child_mut(ctx, visitor, Path::new(self, NodeField::types)) {
13232 b.types(v);
13233 }
13234 b.build(ctx)
13235 }
13236 builder::Builder::GenericTypeAnnotation(mut b) => {
13237 if let TransformResult::Changed(v) =
13238 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13239 b.id(v);
13240 }
13241 if let TransformResult::Changed(v) =
13242 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13243 b.type_parameters(v);
13244 }
13245 b.build(ctx)
13246 }
13247 builder::Builder::IndexedAccessType(mut b) => {
13248 if let TransformResult::Changed(v) =
13249 b.inner.object_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object_type)) {
13250 b.object_type(v);
13251 }
13252 if let TransformResult::Changed(v) =
13253 b.inner.index_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::index_type)) {
13254 b.index_type(v);
13255 }
13256 b.build(ctx)
13257 }
13258 builder::Builder::OptionalIndexedAccessType(mut b) => {
13259 if let TransformResult::Changed(v) =
13260 b.inner.object_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object_type)) {
13261 b.object_type(v);
13262 }
13263 if let TransformResult::Changed(v) =
13264 b.inner.index_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::index_type)) {
13265 b.index_type(v);
13266 }
13267 b.build(ctx)
13268 }
13269 builder::Builder::ConditionalTypeAnnotation(mut b) => {
13270 if let TransformResult::Changed(v) =
13271 b.inner.check_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::check_type)) {
13272 b.check_type(v);
13273 }
13274 if let TransformResult::Changed(v) =
13275 b.inner.extends_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends_type)) {
13276 b.extends_type(v);
13277 }
13278 if let TransformResult::Changed(v) =
13279 b.inner.true_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::true_type)) {
13280 b.true_type(v);
13281 }
13282 if let TransformResult::Changed(v) =
13283 b.inner.false_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::false_type)) {
13284 b.false_type(v);
13285 }
13286 b.build(ctx)
13287 }
13288 builder::Builder::TypePredicate(mut b) => {
13289 if let TransformResult::Changed(v) =
13290 b.inner.parameter_name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::parameter_name)) {
13291 b.parameter_name(v);
13292 }
13293 if let TransformResult::Changed(v) =
13294 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13295 b.type_annotation(v);
13296 }
13297 b.build(ctx)
13298 }
13299 builder::Builder::InterfaceTypeAnnotation(mut b) => {
13300 if let TransformResult::Changed(v) =
13301 b.inner.extends.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends)) {
13302 b.extends(v);
13303 }
13304 if let TransformResult::Changed(v) =
13305 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13306 b.body(v);
13307 }
13308 b.build(ctx)
13309 }
13310 builder::Builder::TypeAlias(mut b) => {
13311 if let TransformResult::Changed(v) =
13312 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13313 b.id(v);
13314 }
13315 if let TransformResult::Changed(v) =
13316 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13317 b.type_parameters(v);
13318 }
13319 if let TransformResult::Changed(v) =
13320 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
13321 b.right(v);
13322 }
13323 b.build(ctx)
13324 }
13325 builder::Builder::OpaqueType(mut b) => {
13326 if let TransformResult::Changed(v) =
13327 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13328 b.id(v);
13329 }
13330 if let TransformResult::Changed(v) =
13331 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13332 b.type_parameters(v);
13333 }
13334 if let TransformResult::Changed(v) =
13335 b.inner.impltype.visit_child_mut(ctx, visitor, Path::new(self, NodeField::impltype)) {
13336 b.impltype(v);
13337 }
13338 if let TransformResult::Changed(v) =
13339 b.inner.lower_bound.visit_child_mut(ctx, visitor, Path::new(self, NodeField::lower_bound)) {
13340 b.lower_bound(v);
13341 }
13342 if let TransformResult::Changed(v) =
13343 b.inner.upper_bound.visit_child_mut(ctx, visitor, Path::new(self, NodeField::upper_bound)) {
13344 b.upper_bound(v);
13345 }
13346 if let TransformResult::Changed(v) =
13347 b.inner.supertype.visit_child_mut(ctx, visitor, Path::new(self, NodeField::supertype)) {
13348 b.supertype(v);
13349 }
13350 b.build(ctx)
13351 }
13352 builder::Builder::InterfaceDeclaration(mut b) => {
13353 if let TransformResult::Changed(v) =
13354 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13355 b.id(v);
13356 }
13357 if let TransformResult::Changed(v) =
13358 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13359 b.type_parameters(v);
13360 }
13361 if let TransformResult::Changed(v) =
13362 b.inner.extends.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends)) {
13363 b.extends(v);
13364 }
13365 if let TransformResult::Changed(v) =
13366 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13367 b.body(v);
13368 }
13369 b.build(ctx)
13370 }
13371 builder::Builder::DeclareTypeAlias(mut b) => {
13372 if let TransformResult::Changed(v) =
13373 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13374 b.id(v);
13375 }
13376 if let TransformResult::Changed(v) =
13377 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13378 b.type_parameters(v);
13379 }
13380 if let TransformResult::Changed(v) =
13381 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
13382 b.right(v);
13383 }
13384 b.build(ctx)
13385 }
13386 builder::Builder::DeclareOpaqueType(mut b) => {
13387 if let TransformResult::Changed(v) =
13388 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13389 b.id(v);
13390 }
13391 if let TransformResult::Changed(v) =
13392 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13393 b.type_parameters(v);
13394 }
13395 if let TransformResult::Changed(v) =
13396 b.inner.impltype.visit_child_mut(ctx, visitor, Path::new(self, NodeField::impltype)) {
13397 b.impltype(v);
13398 }
13399 if let TransformResult::Changed(v) =
13400 b.inner.lower_bound.visit_child_mut(ctx, visitor, Path::new(self, NodeField::lower_bound)) {
13401 b.lower_bound(v);
13402 }
13403 if let TransformResult::Changed(v) =
13404 b.inner.upper_bound.visit_child_mut(ctx, visitor, Path::new(self, NodeField::upper_bound)) {
13405 b.upper_bound(v);
13406 }
13407 if let TransformResult::Changed(v) =
13408 b.inner.supertype.visit_child_mut(ctx, visitor, Path::new(self, NodeField::supertype)) {
13409 b.supertype(v);
13410 }
13411 b.build(ctx)
13412 }
13413 builder::Builder::DeclareInterface(mut b) => {
13414 if let TransformResult::Changed(v) =
13415 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13416 b.id(v);
13417 }
13418 if let TransformResult::Changed(v) =
13419 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13420 b.type_parameters(v);
13421 }
13422 if let TransformResult::Changed(v) =
13423 b.inner.extends.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends)) {
13424 b.extends(v);
13425 }
13426 if let TransformResult::Changed(v) =
13427 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13428 b.body(v);
13429 }
13430 b.build(ctx)
13431 }
13432 builder::Builder::DeclareClass(mut b) => {
13433 if let TransformResult::Changed(v) =
13434 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13435 b.id(v);
13436 }
13437 if let TransformResult::Changed(v) =
13438 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13439 b.type_parameters(v);
13440 }
13441 if let TransformResult::Changed(v) =
13442 b.inner.extends.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends)) {
13443 b.extends(v);
13444 }
13445 if let TransformResult::Changed(v) =
13446 b.inner.implements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::implements)) {
13447 b.implements(v);
13448 }
13449 if let TransformResult::Changed(v) =
13450 b.inner.mixins.visit_child_mut(ctx, visitor, Path::new(self, NodeField::mixins)) {
13451 b.mixins(v);
13452 }
13453 if let TransformResult::Changed(v) =
13454 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13455 b.body(v);
13456 }
13457 b.build(ctx)
13458 }
13459 builder::Builder::DeclareFunction(mut b) => {
13460 if let TransformResult::Changed(v) =
13461 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13462 b.id(v);
13463 }
13464 if let TransformResult::Changed(v) =
13465 b.inner.predicate.visit_child_mut(ctx, visitor, Path::new(self, NodeField::predicate)) {
13466 b.predicate(v);
13467 }
13468 b.build(ctx)
13469 }
13470 builder::Builder::DeclareHook(mut b) => {
13471 if let TransformResult::Changed(v) =
13472 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13473 b.id(v);
13474 }
13475 b.build(ctx)
13476 }
13477 builder::Builder::DeclareComponent(mut b) => {
13478 if let TransformResult::Changed(v) =
13479 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13480 b.id(v);
13481 }
13482 if let TransformResult::Changed(v) =
13483 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
13484 b.params(v);
13485 }
13486 if let TransformResult::Changed(v) =
13487 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
13488 b.rest(v);
13489 }
13490 if let TransformResult::Changed(v) =
13491 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13492 b.type_parameters(v);
13493 }
13494 if let TransformResult::Changed(v) =
13495 b.inner.renders_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::renders_type)) {
13496 b.renders_type(v);
13497 }
13498 b.build(ctx)
13499 }
13500 builder::Builder::DeclareVariable(mut b) => {
13501 if let TransformResult::Changed(v) =
13502 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13503 b.id(v);
13504 }
13505 b.build(ctx)
13506 }
13507 builder::Builder::DeclareEnum(mut b) => {
13508 if let TransformResult::Changed(v) =
13509 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13510 b.id(v);
13511 }
13512 if let TransformResult::Changed(v) =
13513 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13514 b.body(v);
13515 }
13516 b.build(ctx)
13517 }
13518 builder::Builder::DeclareExportDeclaration(mut b) => {
13519 if let TransformResult::Changed(v) =
13520 b.inner.declaration.visit_child_mut(ctx, visitor, Path::new(self, NodeField::declaration)) {
13521 b.declaration(v);
13522 }
13523 if let TransformResult::Changed(v) =
13524 b.inner.specifiers.visit_child_mut(ctx, visitor, Path::new(self, NodeField::specifiers)) {
13525 b.specifiers(v);
13526 }
13527 if let TransformResult::Changed(v) =
13528 b.inner.source.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source)) {
13529 b.source(v);
13530 }
13531 b.build(ctx)
13532 }
13533 builder::Builder::DeclareExportAllDeclaration(mut b) => {
13534 if let TransformResult::Changed(v) =
13535 b.inner.source.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source)) {
13536 b.source(v);
13537 }
13538 b.build(ctx)
13539 }
13540 builder::Builder::DeclareModule(mut b) => {
13541 if let TransformResult::Changed(v) =
13542 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13543 b.id(v);
13544 }
13545 if let TransformResult::Changed(v) =
13546 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13547 b.body(v);
13548 }
13549 b.build(ctx)
13550 }
13551 builder::Builder::DeclareNamespace(mut b) => {
13552 if let TransformResult::Changed(v) =
13553 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13554 b.id(v);
13555 }
13556 if let TransformResult::Changed(v) =
13557 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13558 b.body(v);
13559 }
13560 b.build(ctx)
13561 }
13562 builder::Builder::DeclareModuleExports(mut b) => {
13563 if let TransformResult::Changed(v) =
13564 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13565 b.type_annotation(v);
13566 }
13567 b.build(ctx)
13568 }
13569 builder::Builder::InterfaceExtends(mut b) => {
13570 if let TransformResult::Changed(v) =
13571 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13572 b.id(v);
13573 }
13574 if let TransformResult::Changed(v) =
13575 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13576 b.type_parameters(v);
13577 }
13578 b.build(ctx)
13579 }
13580 builder::Builder::ClassImplements(mut b) => {
13581 if let TransformResult::Changed(v) =
13582 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13583 b.id(v);
13584 }
13585 if let TransformResult::Changed(v) =
13586 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13587 b.type_parameters(v);
13588 }
13589 b.build(ctx)
13590 }
13591 builder::Builder::TypeAnnotation(mut b) => {
13592 if let TransformResult::Changed(v) =
13593 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13594 b.type_annotation(v);
13595 }
13596 b.build(ctx)
13597 }
13598 builder::Builder::ObjectTypeAnnotation(mut b) => {
13599 if let TransformResult::Changed(v) =
13600 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
13601 b.properties(v);
13602 }
13603 if let TransformResult::Changed(v) =
13604 b.inner.indexers.visit_child_mut(ctx, visitor, Path::new(self, NodeField::indexers)) {
13605 b.indexers(v);
13606 }
13607 if let TransformResult::Changed(v) =
13608 b.inner.call_properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::call_properties)) {
13609 b.call_properties(v);
13610 }
13611 if let TransformResult::Changed(v) =
13612 b.inner.internal_slots.visit_child_mut(ctx, visitor, Path::new(self, NodeField::internal_slots)) {
13613 b.internal_slots(v);
13614 }
13615 b.build(ctx)
13616 }
13617 builder::Builder::ObjectTypeProperty(mut b) => {
13618 if let TransformResult::Changed(v) =
13619 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
13620 b.key(v);
13621 }
13622 if let TransformResult::Changed(v) =
13623 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
13624 b.value(v);
13625 }
13626 if let TransformResult::Changed(v) =
13627 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
13628 b.variance(v);
13629 }
13630 b.build(ctx)
13631 }
13632 builder::Builder::ObjectTypeSpreadProperty(mut b) => {
13633 if let TransformResult::Changed(v) =
13634 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
13635 b.argument(v);
13636 }
13637 b.build(ctx)
13638 }
13639 builder::Builder::ObjectTypeInternalSlot(mut b) => {
13640 if let TransformResult::Changed(v) =
13641 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13642 b.id(v);
13643 }
13644 if let TransformResult::Changed(v) =
13645 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
13646 b.value(v);
13647 }
13648 b.build(ctx)
13649 }
13650 builder::Builder::ObjectTypeCallProperty(mut b) => {
13651 if let TransformResult::Changed(v) =
13652 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
13653 b.value(v);
13654 }
13655 b.build(ctx)
13656 }
13657 builder::Builder::ObjectTypeIndexer(mut b) => {
13658 if let TransformResult::Changed(v) =
13659 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13660 b.id(v);
13661 }
13662 if let TransformResult::Changed(v) =
13663 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
13664 b.key(v);
13665 }
13666 if let TransformResult::Changed(v) =
13667 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
13668 b.value(v);
13669 }
13670 if let TransformResult::Changed(v) =
13671 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
13672 b.variance(v);
13673 }
13674 b.build(ctx)
13675 }
13676 builder::Builder::ObjectTypeMappedTypeProperty(mut b) => {
13677 if let TransformResult::Changed(v) =
13678 b.inner.key_tparam.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key_tparam)) {
13679 b.key_tparam(v);
13680 }
13681 if let TransformResult::Changed(v) =
13682 b.inner.prop_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::prop_type)) {
13683 b.prop_type(v);
13684 }
13685 if let TransformResult::Changed(v) =
13686 b.inner.source_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::source_type)) {
13687 b.source_type(v);
13688 }
13689 if let TransformResult::Changed(v) =
13690 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
13691 b.variance(v);
13692 }
13693 b.build(ctx)
13694 }
13695 builder::Builder::Variance(mut b) => b.build(ctx),
13696 builder::Builder::TypeParameterDeclaration(mut b) => {
13697 if let TransformResult::Changed(v) =
13698 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
13699 b.params(v);
13700 }
13701 b.build(ctx)
13702 }
13703 builder::Builder::TypeParameter(mut b) => {
13704 if let TransformResult::Changed(v) =
13705 b.inner.bound.visit_child_mut(ctx, visitor, Path::new(self, NodeField::bound)) {
13706 b.bound(v);
13707 }
13708 if let TransformResult::Changed(v) =
13709 b.inner.variance.visit_child_mut(ctx, visitor, Path::new(self, NodeField::variance)) {
13710 b.variance(v);
13711 }
13712 if let TransformResult::Changed(v) =
13713 b.inner.default.visit_child_mut(ctx, visitor, Path::new(self, NodeField::default)) {
13714 b.default(v);
13715 }
13716 b.build(ctx)
13717 }
13718 builder::Builder::TypeParameterInstantiation(mut b) => {
13719 if let TransformResult::Changed(v) =
13720 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
13721 b.params(v);
13722 }
13723 b.build(ctx)
13724 }
13725 builder::Builder::TypeCastExpression(mut b) => {
13726 if let TransformResult::Changed(v) =
13727 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
13728 b.expression(v);
13729 }
13730 if let TransformResult::Changed(v) =
13731 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13732 b.type_annotation(v);
13733 }
13734 b.build(ctx)
13735 }
13736 builder::Builder::AsExpression(mut b) => {
13737 if let TransformResult::Changed(v) =
13738 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
13739 b.expression(v);
13740 }
13741 if let TransformResult::Changed(v) =
13742 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13743 b.type_annotation(v);
13744 }
13745 b.build(ctx)
13746 }
13747 builder::Builder::AsConstExpression(mut b) => {
13748 if let TransformResult::Changed(v) =
13749 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
13750 b.expression(v);
13751 }
13752 b.build(ctx)
13753 }
13754 builder::Builder::InferredPredicate(mut b) => b.build(ctx),
13755 builder::Builder::DeclaredPredicate(mut b) => {
13756 if let TransformResult::Changed(v) =
13757 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
13758 b.value(v);
13759 }
13760 b.build(ctx)
13761 }
13762 builder::Builder::EnumDeclaration(mut b) => {
13763 if let TransformResult::Changed(v) =
13764 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13765 b.id(v);
13766 }
13767 if let TransformResult::Changed(v) =
13768 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13769 b.body(v);
13770 }
13771 b.build(ctx)
13772 }
13773 builder::Builder::EnumStringBody(mut b) => {
13774 if let TransformResult::Changed(v) =
13775 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
13776 b.members(v);
13777 }
13778 b.build(ctx)
13779 }
13780 builder::Builder::EnumNumberBody(mut b) => {
13781 if let TransformResult::Changed(v) =
13782 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
13783 b.members(v);
13784 }
13785 b.build(ctx)
13786 }
13787 builder::Builder::EnumBigIntBody(mut b) => {
13788 if let TransformResult::Changed(v) =
13789 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
13790 b.members(v);
13791 }
13792 b.build(ctx)
13793 }
13794 builder::Builder::EnumBooleanBody(mut b) => {
13795 if let TransformResult::Changed(v) =
13796 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
13797 b.members(v);
13798 }
13799 b.build(ctx)
13800 }
13801 builder::Builder::EnumSymbolBody(mut b) => {
13802 if let TransformResult::Changed(v) =
13803 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
13804 b.members(v);
13805 }
13806 b.build(ctx)
13807 }
13808 builder::Builder::EnumDefaultedMember(mut b) => {
13809 if let TransformResult::Changed(v) =
13810 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13811 b.id(v);
13812 }
13813 b.build(ctx)
13814 }
13815 builder::Builder::EnumStringMember(mut b) => {
13816 if let TransformResult::Changed(v) =
13817 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13818 b.id(v);
13819 }
13820 if let TransformResult::Changed(v) =
13821 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
13822 b.init(v);
13823 }
13824 b.build(ctx)
13825 }
13826 builder::Builder::EnumNumberMember(mut b) => {
13827 if let TransformResult::Changed(v) =
13828 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13829 b.id(v);
13830 }
13831 if let TransformResult::Changed(v) =
13832 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
13833 b.init(v);
13834 }
13835 b.build(ctx)
13836 }
13837 builder::Builder::EnumBigIntMember(mut b) => {
13838 if let TransformResult::Changed(v) =
13839 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13840 b.id(v);
13841 }
13842 if let TransformResult::Changed(v) =
13843 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
13844 b.init(v);
13845 }
13846 b.build(ctx)
13847 }
13848 builder::Builder::EnumBooleanMember(mut b) => {
13849 if let TransformResult::Changed(v) =
13850 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13851 b.id(v);
13852 }
13853 if let TransformResult::Changed(v) =
13854 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
13855 b.init(v);
13856 }
13857 b.build(ctx)
13858 }
13859 builder::Builder::ComponentParameter(mut b) => {
13860 if let TransformResult::Changed(v) =
13861 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
13862 b.name(v);
13863 }
13864 if let TransformResult::Changed(v) =
13865 b.inner.local.visit_child_mut(ctx, visitor, Path::new(self, NodeField::local)) {
13866 b.local(v);
13867 }
13868 b.build(ctx)
13869 }
13870 builder::Builder::RecordDeclaration(mut b) => {
13871 if let TransformResult::Changed(v) =
13872 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13873 b.id(v);
13874 }
13875 if let TransformResult::Changed(v) =
13876 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
13877 b.type_parameters(v);
13878 }
13879 if let TransformResult::Changed(v) =
13880 b.inner.implements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::implements)) {
13881 b.implements(v);
13882 }
13883 if let TransformResult::Changed(v) =
13884 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
13885 b.body(v);
13886 }
13887 b.build(ctx)
13888 }
13889 builder::Builder::RecordDeclarationImplements(mut b) => {
13890 if let TransformResult::Changed(v) =
13891 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
13892 b.id(v);
13893 }
13894 if let TransformResult::Changed(v) =
13895 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
13896 b.type_arguments(v);
13897 }
13898 b.build(ctx)
13899 }
13900 builder::Builder::RecordDeclarationBody(mut b) => {
13901 if let TransformResult::Changed(v) =
13902 b.inner.elements.visit_child_mut(ctx, visitor, Path::new(self, NodeField::elements)) {
13903 b.elements(v);
13904 }
13905 b.build(ctx)
13906 }
13907 builder::Builder::RecordDeclarationProperty(mut b) => {
13908 if let TransformResult::Changed(v) =
13909 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
13910 b.key(v);
13911 }
13912 if let TransformResult::Changed(v) =
13913 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13914 b.type_annotation(v);
13915 }
13916 if let TransformResult::Changed(v) =
13917 b.inner.default_value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::default_value)) {
13918 b.default_value(v);
13919 }
13920 b.build(ctx)
13921 }
13922 builder::Builder::RecordDeclarationStaticProperty(mut b) => {
13923 if let TransformResult::Changed(v) =
13924 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
13925 b.key(v);
13926 }
13927 if let TransformResult::Changed(v) =
13928 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13929 b.type_annotation(v);
13930 }
13931 if let TransformResult::Changed(v) =
13932 b.inner.value.visit_child_mut(ctx, visitor, Path::new(self, NodeField::value)) {
13933 b.value(v);
13934 }
13935 b.build(ctx)
13936 }
13937 builder::Builder::RecordExpression(mut b) => {
13938 if let TransformResult::Changed(v) =
13939 b.inner.record_constructor.visit_child_mut(ctx, visitor, Path::new(self, NodeField::record_constructor)) {
13940 b.record_constructor(v);
13941 }
13942 if let TransformResult::Changed(v) =
13943 b.inner.type_arguments.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_arguments)) {
13944 b.type_arguments(v);
13945 }
13946 if let TransformResult::Changed(v) =
13947 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
13948 b.properties(v);
13949 }
13950 b.build(ctx)
13951 }
13952 builder::Builder::RecordExpressionProperties(mut b) => {
13953 if let TransformResult::Changed(v) =
13954 b.inner.properties.visit_child_mut(ctx, visitor, Path::new(self, NodeField::properties)) {
13955 b.properties(v);
13956 }
13957 b.build(ctx)
13958 }
13959 builder::Builder::TSTypeAnnotation(mut b) => {
13960 if let TransformResult::Changed(v) =
13961 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
13962 b.type_annotation(v);
13963 }
13964 b.build(ctx)
13965 }
13966 builder::Builder::TSAnyKeyword(mut b) => b.build(ctx),
13967 builder::Builder::TSNumberKeyword(mut b) => b.build(ctx),
13968 builder::Builder::TSBooleanKeyword(mut b) => b.build(ctx),
13969 builder::Builder::TSStringKeyword(mut b) => b.build(ctx),
13970 builder::Builder::TSSymbolKeyword(mut b) => b.build(ctx),
13971 builder::Builder::TSVoidKeyword(mut b) => b.build(ctx),
13972 builder::Builder::TSUndefinedKeyword(mut b) => b.build(ctx),
13973 builder::Builder::TSUnknownKeyword(mut b) => b.build(ctx),
13974 builder::Builder::TSNeverKeyword(mut b) => b.build(ctx),
13975 builder::Builder::TSBigIntKeyword(mut b) => b.build(ctx),
13976 builder::Builder::TSThisType(mut b) => b.build(ctx),
13977 builder::Builder::TSLiteralType(mut b) => {
13978 if let TransformResult::Changed(v) =
13979 b.inner.literal.visit_child_mut(ctx, visitor, Path::new(self, NodeField::literal)) {
13980 b.literal(v);
13981 }
13982 b.build(ctx)
13983 }
13984 builder::Builder::TSIndexedAccessType(mut b) => {
13985 if let TransformResult::Changed(v) =
13986 b.inner.object_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::object_type)) {
13987 b.object_type(v);
13988 }
13989 if let TransformResult::Changed(v) =
13990 b.inner.index_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::index_type)) {
13991 b.index_type(v);
13992 }
13993 b.build(ctx)
13994 }
13995 builder::Builder::TSArrayType(mut b) => {
13996 if let TransformResult::Changed(v) =
13997 b.inner.element_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::element_type)) {
13998 b.element_type(v);
13999 }
14000 b.build(ctx)
14001 }
14002 builder::Builder::TSTypeReference(mut b) => {
14003 if let TransformResult::Changed(v) =
14004 b.inner.type_name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_name)) {
14005 b.type_name(v);
14006 }
14007 if let TransformResult::Changed(v) =
14008 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
14009 b.type_parameters(v);
14010 }
14011 b.build(ctx)
14012 }
14013 builder::Builder::TSQualifiedName(mut b) => {
14014 if let TransformResult::Changed(v) =
14015 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
14016 b.left(v);
14017 }
14018 if let TransformResult::Changed(v) =
14019 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
14020 b.right(v);
14021 }
14022 b.build(ctx)
14023 }
14024 builder::Builder::TSFunctionType(mut b) => {
14025 if let TransformResult::Changed(v) =
14026 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
14027 b.params(v);
14028 }
14029 if let TransformResult::Changed(v) =
14030 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
14031 b.return_type(v);
14032 }
14033 if let TransformResult::Changed(v) =
14034 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
14035 b.type_parameters(v);
14036 }
14037 b.build(ctx)
14038 }
14039 builder::Builder::TSConstructorType(mut b) => {
14040 if let TransformResult::Changed(v) =
14041 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
14042 b.params(v);
14043 }
14044 if let TransformResult::Changed(v) =
14045 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
14046 b.return_type(v);
14047 }
14048 if let TransformResult::Changed(v) =
14049 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
14050 b.type_parameters(v);
14051 }
14052 b.build(ctx)
14053 }
14054 builder::Builder::TSTypePredicate(mut b) => {
14055 if let TransformResult::Changed(v) =
14056 b.inner.parameter_name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::parameter_name)) {
14057 b.parameter_name(v);
14058 }
14059 if let TransformResult::Changed(v) =
14060 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
14061 b.type_annotation(v);
14062 }
14063 b.build(ctx)
14064 }
14065 builder::Builder::TSTupleType(mut b) => {
14066 if let TransformResult::Changed(v) =
14067 b.inner.element_types.visit_child_mut(ctx, visitor, Path::new(self, NodeField::element_types)) {
14068 b.element_types(v);
14069 }
14070 b.build(ctx)
14071 }
14072 builder::Builder::TSTypeAssertion(mut b) => {
14073 if let TransformResult::Changed(v) =
14074 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
14075 b.type_annotation(v);
14076 }
14077 if let TransformResult::Changed(v) =
14078 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
14079 b.expression(v);
14080 }
14081 b.build(ctx)
14082 }
14083 builder::Builder::TSAsExpression(mut b) => {
14084 if let TransformResult::Changed(v) =
14085 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
14086 b.expression(v);
14087 }
14088 if let TransformResult::Changed(v) =
14089 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
14090 b.type_annotation(v);
14091 }
14092 b.build(ctx)
14093 }
14094 builder::Builder::TSParameterProperty(mut b) => {
14095 if let TransformResult::Changed(v) =
14096 b.inner.parameter.visit_child_mut(ctx, visitor, Path::new(self, NodeField::parameter)) {
14097 b.parameter(v);
14098 }
14099 b.build(ctx)
14100 }
14101 builder::Builder::TSTypeAliasDeclaration(mut b) => {
14102 if let TransformResult::Changed(v) =
14103 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
14104 b.id(v);
14105 }
14106 if let TransformResult::Changed(v) =
14107 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
14108 b.type_parameters(v);
14109 }
14110 if let TransformResult::Changed(v) =
14111 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
14112 b.type_annotation(v);
14113 }
14114 b.build(ctx)
14115 }
14116 builder::Builder::TSInterfaceDeclaration(mut b) => {
14117 if let TransformResult::Changed(v) =
14118 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
14119 b.id(v);
14120 }
14121 if let TransformResult::Changed(v) =
14122 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
14123 b.body(v);
14124 }
14125 if let TransformResult::Changed(v) =
14126 b.inner.extends.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends)) {
14127 b.extends(v);
14128 }
14129 if let TransformResult::Changed(v) =
14130 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
14131 b.type_parameters(v);
14132 }
14133 b.build(ctx)
14134 }
14135 builder::Builder::TSInterfaceHeritage(mut b) => {
14136 if let TransformResult::Changed(v) =
14137 b.inner.expression.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expression)) {
14138 b.expression(v);
14139 }
14140 if let TransformResult::Changed(v) =
14141 b.inner.type_parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_parameters)) {
14142 b.type_parameters(v);
14143 }
14144 b.build(ctx)
14145 }
14146 builder::Builder::TSInterfaceBody(mut b) => {
14147 if let TransformResult::Changed(v) =
14148 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
14149 b.body(v);
14150 }
14151 b.build(ctx)
14152 }
14153 builder::Builder::TSEnumDeclaration(mut b) => {
14154 if let TransformResult::Changed(v) =
14155 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
14156 b.id(v);
14157 }
14158 if let TransformResult::Changed(v) =
14159 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
14160 b.members(v);
14161 }
14162 b.build(ctx)
14163 }
14164 builder::Builder::TSEnumMember(mut b) => {
14165 if let TransformResult::Changed(v) =
14166 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
14167 b.id(v);
14168 }
14169 if let TransformResult::Changed(v) =
14170 b.inner.initializer.visit_child_mut(ctx, visitor, Path::new(self, NodeField::initializer)) {
14171 b.initializer(v);
14172 }
14173 b.build(ctx)
14174 }
14175 builder::Builder::TSModuleDeclaration(mut b) => {
14176 if let TransformResult::Changed(v) =
14177 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
14178 b.id(v);
14179 }
14180 if let TransformResult::Changed(v) =
14181 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
14182 b.body(v);
14183 }
14184 b.build(ctx)
14185 }
14186 builder::Builder::TSModuleBlock(mut b) => {
14187 if let TransformResult::Changed(v) =
14188 b.inner.body.visit_child_mut(ctx, visitor, Path::new(self, NodeField::body)) {
14189 b.body(v);
14190 }
14191 b.build(ctx)
14192 }
14193 builder::Builder::TSModuleMember(mut b) => {
14194 if let TransformResult::Changed(v) =
14195 b.inner.id.visit_child_mut(ctx, visitor, Path::new(self, NodeField::id)) {
14196 b.id(v);
14197 }
14198 if let TransformResult::Changed(v) =
14199 b.inner.initializer.visit_child_mut(ctx, visitor, Path::new(self, NodeField::initializer)) {
14200 b.initializer(v);
14201 }
14202 b.build(ctx)
14203 }
14204 builder::Builder::TSTypeParameterDeclaration(mut b) => {
14205 if let TransformResult::Changed(v) =
14206 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
14207 b.params(v);
14208 }
14209 b.build(ctx)
14210 }
14211 builder::Builder::TSTypeParameter(mut b) => {
14212 if let TransformResult::Changed(v) =
14213 b.inner.name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::name)) {
14214 b.name(v);
14215 }
14216 if let TransformResult::Changed(v) =
14217 b.inner.constraint.visit_child_mut(ctx, visitor, Path::new(self, NodeField::constraint)) {
14218 b.constraint(v);
14219 }
14220 if let TransformResult::Changed(v) =
14221 b.inner.default.visit_child_mut(ctx, visitor, Path::new(self, NodeField::default)) {
14222 b.default(v);
14223 }
14224 b.build(ctx)
14225 }
14226 builder::Builder::TSTypeParameterInstantiation(mut b) => {
14227 if let TransformResult::Changed(v) =
14228 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
14229 b.params(v);
14230 }
14231 b.build(ctx)
14232 }
14233 builder::Builder::TSUnionType(mut b) => {
14234 if let TransformResult::Changed(v) =
14235 b.inner.types.visit_child_mut(ctx, visitor, Path::new(self, NodeField::types)) {
14236 b.types(v);
14237 }
14238 b.build(ctx)
14239 }
14240 builder::Builder::TSIntersectionType(mut b) => {
14241 if let TransformResult::Changed(v) =
14242 b.inner.types.visit_child_mut(ctx, visitor, Path::new(self, NodeField::types)) {
14243 b.types(v);
14244 }
14245 b.build(ctx)
14246 }
14247 builder::Builder::TSTypeQuery(mut b) => {
14248 if let TransformResult::Changed(v) =
14249 b.inner.expr_name.visit_child_mut(ctx, visitor, Path::new(self, NodeField::expr_name)) {
14250 b.expr_name(v);
14251 }
14252 b.build(ctx)
14253 }
14254 builder::Builder::TSConditionalType(mut b) => {
14255 if let TransformResult::Changed(v) =
14256 b.inner.check_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::check_type)) {
14257 b.check_type(v);
14258 }
14259 if let TransformResult::Changed(v) =
14260 b.inner.extends_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::extends_type)) {
14261 b.extends_type(v);
14262 }
14263 if let TransformResult::Changed(v) =
14264 b.inner.true_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::true_type)) {
14265 b.true_type(v);
14266 }
14267 if let TransformResult::Changed(v) =
14268 b.inner.false_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::false_type)) {
14269 b.false_type(v);
14270 }
14271 b.build(ctx)
14272 }
14273 builder::Builder::TSTypeLiteral(mut b) => {
14274 if let TransformResult::Changed(v) =
14275 b.inner.members.visit_child_mut(ctx, visitor, Path::new(self, NodeField::members)) {
14276 b.members(v);
14277 }
14278 b.build(ctx)
14279 }
14280 builder::Builder::TSPropertySignature(mut b) => {
14281 if let TransformResult::Changed(v) =
14282 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
14283 b.key(v);
14284 }
14285 if let TransformResult::Changed(v) =
14286 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
14287 b.type_annotation(v);
14288 }
14289 if let TransformResult::Changed(v) =
14290 b.inner.initializer.visit_child_mut(ctx, visitor, Path::new(self, NodeField::initializer)) {
14291 b.initializer(v);
14292 }
14293 b.build(ctx)
14294 }
14295 builder::Builder::TSMethodSignature(mut b) => {
14296 if let TransformResult::Changed(v) =
14297 b.inner.key.visit_child_mut(ctx, visitor, Path::new(self, NodeField::key)) {
14298 b.key(v);
14299 }
14300 if let TransformResult::Changed(v) =
14301 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
14302 b.params(v);
14303 }
14304 if let TransformResult::Changed(v) =
14305 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
14306 b.return_type(v);
14307 }
14308 b.build(ctx)
14309 }
14310 builder::Builder::TSIndexSignature(mut b) => {
14311 if let TransformResult::Changed(v) =
14312 b.inner.parameters.visit_child_mut(ctx, visitor, Path::new(self, NodeField::parameters)) {
14313 b.parameters(v);
14314 }
14315 if let TransformResult::Changed(v) =
14316 b.inner.type_annotation.visit_child_mut(ctx, visitor, Path::new(self, NodeField::type_annotation)) {
14317 b.type_annotation(v);
14318 }
14319 b.build(ctx)
14320 }
14321 builder::Builder::TSCallSignatureDeclaration(mut b) => {
14322 if let TransformResult::Changed(v) =
14323 b.inner.params.visit_child_mut(ctx, visitor, Path::new(self, NodeField::params)) {
14324 b.params(v);
14325 }
14326 if let TransformResult::Changed(v) =
14327 b.inner.return_type.visit_child_mut(ctx, visitor, Path::new(self, NodeField::return_type)) {
14328 b.return_type(v);
14329 }
14330 b.build(ctx)
14331 }
14332 builder::Builder::TSModifiers(mut b) => b.build(ctx),
14333 builder::Builder::CoverEmptyArgs(mut b) => b.build(ctx),
14334 builder::Builder::CoverTrailingComma(mut b) => b.build(ctx),
14335 builder::Builder::CoverInitializer(mut b) => {
14336 if let TransformResult::Changed(v) =
14337 b.inner.init.visit_child_mut(ctx, visitor, Path::new(self, NodeField::init)) {
14338 b.init(v);
14339 }
14340 b.build(ctx)
14341 }
14342 builder::Builder::CoverRestElement(mut b) => {
14343 if let TransformResult::Changed(v) =
14344 b.inner.rest.visit_child_mut(ctx, visitor, Path::new(self, NodeField::rest)) {
14345 b.rest(v);
14346 }
14347 b.build(ctx)
14348 }
14349 builder::Builder::CoverTypedIdentifier(mut b) => {
14350 if let TransformResult::Changed(v) =
14351 b.inner.left.visit_child_mut(ctx, visitor, Path::new(self, NodeField::left)) {
14352 b.left(v);
14353 }
14354 if let TransformResult::Changed(v) =
14355 b.inner.right.visit_child_mut(ctx, visitor, Path::new(self, NodeField::right)) {
14356 b.right(v);
14357 }
14358 b.build(ctx)
14359 }
14360 builder::Builder::SHBuiltin(mut b) => b.build(ctx),
14361 builder::Builder::ImplicitCheckedCast(mut b) => {
14362 if let TransformResult::Changed(v) =
14363 b.inner.argument.visit_child_mut(ctx, visitor, Path::new(self, NodeField::argument)) {
14364 b.argument(v);
14365 }
14366 b.build(ctx)
14367 }
14368 }
14369 }
14370
14371 pub fn mark_lists<F: FnMut(&NodeList<'gc>)>(&'gc self, cb: &mut F) {
14374 match self {
14375 Node::Program(n) => { cb(&n.body); cb(&n.decorations.get()); cb(&n.dummy_param_list.get()); }
14376 Node::FunctionExpression(n) => { cb(&n.params); cb(&n.decorations.get()); }
14377 Node::ArrowFunctionExpression(n) => { cb(&n.params); cb(&n.decorations.get()); }
14378 Node::FunctionDeclaration(n) => { cb(&n.params); cb(&n.decorations.get()); }
14379 Node::ComponentDeclaration(n) => { cb(&n.params); cb(&n.decorations.get()); }
14380 Node::HookDeclaration(n) => { cb(&n.params); cb(&n.decorations.get()); }
14381 Node::MatchStatement(n) => { cb(&n.cases); }
14382 Node::BlockStatement(n) => { cb(&n.body); }
14383 Node::StaticBlock(n) => { cb(&n.body); }
14384 Node::SwitchStatement(n) => { cb(&n.cases); }
14385 Node::SequenceExpression(n) => { cb(&n.expressions); }
14386 Node::ObjectExpression(n) => { cb(&n.properties); }
14387 Node::ArrayExpression(n) => { cb(&n.elements); }
14388 Node::NewExpression(n) => { cb(&n.arguments); }
14389 Node::CallExpression(n) => { cb(&n.arguments); }
14390 Node::OptionalCallExpression(n) => { cb(&n.arguments); }
14391 Node::SwitchCase(n) => { cb(&n.consequent); }
14392 Node::VariableDeclaration(n) => { cb(&n.declarations); }
14393 Node::TemplateLiteral(n) => { cb(&n.quasis); cb(&n.expressions); }
14394 Node::ClassDeclaration(n) => { cb(&n.implements); cb(&n.decorators); }
14395 Node::ClassExpression(n) => { cb(&n.implements); cb(&n.decorators); }
14396 Node::ClassBody(n) => { cb(&n.body); }
14397 Node::ClassProperty(n) => { cb(&n.decorators); }
14398 Node::ClassPrivateProperty(n) => { cb(&n.decorators); }
14399 Node::MethodDefinition(n) => { cb(&n.decorators); }
14400 Node::ImportDeclaration(n) => { cb(&n.specifiers); cb(&n.attributes); }
14401 Node::ExportNamedDeclaration(n) => { cb(&n.specifiers); }
14402 Node::ObjectPattern(n) => { cb(&n.properties); }
14403 Node::ArrayPattern(n) => { cb(&n.elements); }
14404 Node::MatchExpression(n) => { cb(&n.cases); }
14405 Node::MatchObjectPattern(n) => { cb(&n.properties); }
14406 Node::MatchArrayPattern(n) => { cb(&n.elements); }
14407 Node::MatchOrPattern(n) => { cb(&n.patterns); }
14408 Node::MatchInstanceObjectPattern(n) => { cb(&n.properties); }
14409 Node::JSXOpeningElement(n) => { cb(&n.attributes); }
14410 Node::JSXElement(n) => { cb(&n.children); }
14411 Node::JSXFragment(n) => { cb(&n.children); }
14412 Node::FunctionTypeAnnotation(n) => { cb(&n.params); }
14413 Node::HookTypeAnnotation(n) => { cb(&n.params); }
14414 Node::ComponentTypeAnnotation(n) => { cb(&n.params); }
14415 Node::TupleTypeAnnotation(n) => { cb(&n.element_types); }
14416 Node::UnionTypeAnnotation(n) => { cb(&n.types); }
14417 Node::IntersectionTypeAnnotation(n) => { cb(&n.types); }
14418 Node::InterfaceTypeAnnotation(n) => { cb(&n.extends); }
14419 Node::InterfaceDeclaration(n) => { cb(&n.extends); }
14420 Node::DeclareInterface(n) => { cb(&n.extends); }
14421 Node::DeclareClass(n) => { cb(&n.extends); cb(&n.implements); cb(&n.mixins); }
14422 Node::DeclareComponent(n) => { cb(&n.params); }
14423 Node::DeclareExportDeclaration(n) => { cb(&n.specifiers); }
14424 Node::ObjectTypeAnnotation(n) => { cb(&n.properties); cb(&n.indexers); cb(&n.call_properties); cb(&n.internal_slots); }
14425 Node::TypeParameterDeclaration(n) => { cb(&n.params); }
14426 Node::TypeParameterInstantiation(n) => { cb(&n.params); }
14427 Node::EnumStringBody(n) => { cb(&n.members); }
14428 Node::EnumNumberBody(n) => { cb(&n.members); }
14429 Node::EnumBigIntBody(n) => { cb(&n.members); }
14430 Node::EnumBooleanBody(n) => { cb(&n.members); }
14431 Node::EnumSymbolBody(n) => { cb(&n.members); }
14432 Node::RecordDeclaration(n) => { cb(&n.implements); }
14433 Node::RecordDeclarationBody(n) => { cb(&n.elements); }
14434 Node::RecordExpressionProperties(n) => { cb(&n.properties); }
14435 Node::TSFunctionType(n) => { cb(&n.params); }
14436 Node::TSConstructorType(n) => { cb(&n.params); }
14437 Node::TSTupleType(n) => { cb(&n.element_types); }
14438 Node::TSInterfaceDeclaration(n) => { cb(&n.extends); }
14439 Node::TSInterfaceBody(n) => { cb(&n.body); }
14440 Node::TSEnumDeclaration(n) => { cb(&n.members); }
14441 Node::TSModuleBlock(n) => { cb(&n.body); }
14442 Node::TSTypeParameterDeclaration(n) => { cb(&n.params); }
14443 Node::TSTypeParameterInstantiation(n) => { cb(&n.params); }
14444 Node::TSUnionType(n) => { cb(&n.types); }
14445 Node::TSIntersectionType(n) => { cb(&n.types); }
14446 Node::TSTypeLiteral(n) => { cb(&n.members); }
14447 Node::TSMethodSignature(n) => { cb(&n.params); }
14448 Node::TSIndexSignature(n) => { cb(&n.parameters); }
14449 Node::TSCallSignatureDeclaration(n) => { cb(&n.params); }
14450 _ => {}
14451 }
14452 }
14453
14454 pub fn node_type_str(&self) -> &'static str {
14456 match self {
14457 Node::Empty(_) => "Empty",
14458 Node::Metadata(_) => "Metadata",
14459 Node::Program(_) => "Program",
14460 Node::FunctionExpression(_) => "FunctionExpression",
14461 Node::ArrowFunctionExpression(_) => "ArrowFunctionExpression",
14462 Node::FunctionDeclaration(_) => "FunctionDeclaration",
14463 Node::ComponentDeclaration(_) => "ComponentDeclaration",
14464 Node::HookDeclaration(_) => "HookDeclaration",
14465 Node::MatchStatement(_) => "MatchStatement",
14466 Node::WhileStatement(_) => "WhileStatement",
14467 Node::DoWhileStatement(_) => "DoWhileStatement",
14468 Node::ForInStatement(_) => "ForInStatement",
14469 Node::ForOfStatement(_) => "ForOfStatement",
14470 Node::ForStatement(_) => "ForStatement",
14471 Node::DebuggerStatement(_) => "DebuggerStatement",
14472 Node::EmptyStatement(_) => "EmptyStatement",
14473 Node::BlockStatement(_) => "BlockStatement",
14474 Node::StaticBlock(_) => "StaticBlock",
14475 Node::BreakStatement(_) => "BreakStatement",
14476 Node::ContinueStatement(_) => "ContinueStatement",
14477 Node::ThrowStatement(_) => "ThrowStatement",
14478 Node::ReturnStatement(_) => "ReturnStatement",
14479 Node::WithStatement(_) => "WithStatement",
14480 Node::SwitchStatement(_) => "SwitchStatement",
14481 Node::LabeledStatement(_) => "LabeledStatement",
14482 Node::ExpressionStatement(_) => "ExpressionStatement",
14483 Node::TryStatement(_) => "TryStatement",
14484 Node::IfStatement(_) => "IfStatement",
14485 Node::NullLiteral(_) => "NullLiteral",
14486 Node::BooleanLiteral(_) => "BooleanLiteral",
14487 Node::StringLiteral(_) => "StringLiteral",
14488 Node::NumericLiteral(_) => "NumericLiteral",
14489 Node::RegExpLiteral(_) => "RegExpLiteral",
14490 Node::BigIntLiteral(_) => "BigIntLiteral",
14491 Node::ThisExpression(_) => "ThisExpression",
14492 Node::Super(_) => "Super",
14493 Node::SequenceExpression(_) => "SequenceExpression",
14494 Node::ObjectExpression(_) => "ObjectExpression",
14495 Node::ArrayExpression(_) => "ArrayExpression",
14496 Node::SpreadElement(_) => "SpreadElement",
14497 Node::NewExpression(_) => "NewExpression",
14498 Node::YieldExpression(_) => "YieldExpression",
14499 Node::AwaitExpression(_) => "AwaitExpression",
14500 Node::ImportExpression(_) => "ImportExpression",
14501 Node::CallExpression(_) => "CallExpression",
14502 Node::OptionalCallExpression(_) => "OptionalCallExpression",
14503 Node::AssignmentExpression(_) => "AssignmentExpression",
14504 Node::UnaryExpression(_) => "UnaryExpression",
14505 Node::UpdateExpression(_) => "UpdateExpression",
14506 Node::MemberExpression(_) => "MemberExpression",
14507 Node::OptionalMemberExpression(_) => "OptionalMemberExpression",
14508 Node::LogicalExpression(_) => "LogicalExpression",
14509 Node::ConditionalExpression(_) => "ConditionalExpression",
14510 Node::BinaryExpression(_) => "BinaryExpression",
14511 Node::Directive(_) => "Directive",
14512 Node::DirectiveLiteral(_) => "DirectiveLiteral",
14513 Node::Identifier(_) => "Identifier",
14514 Node::PrivateName(_) => "PrivateName",
14515 Node::MetaProperty(_) => "MetaProperty",
14516 Node::SwitchCase(_) => "SwitchCase",
14517 Node::CatchClause(_) => "CatchClause",
14518 Node::VariableDeclarator(_) => "VariableDeclarator",
14519 Node::VariableDeclaration(_) => "VariableDeclaration",
14520 Node::TemplateLiteral(_) => "TemplateLiteral",
14521 Node::TaggedTemplateExpression(_) => "TaggedTemplateExpression",
14522 Node::TemplateElement(_) => "TemplateElement",
14523 Node::Property(_) => "Property",
14524 Node::Decorator(_) => "Decorator",
14525 Node::ClassDeclaration(_) => "ClassDeclaration",
14526 Node::ClassExpression(_) => "ClassExpression",
14527 Node::ClassBody(_) => "ClassBody",
14528 Node::ClassProperty(_) => "ClassProperty",
14529 Node::ClassPrivateProperty(_) => "ClassPrivateProperty",
14530 Node::MethodDefinition(_) => "MethodDefinition",
14531 Node::ImportDeclaration(_) => "ImportDeclaration",
14532 Node::ImportSpecifier(_) => "ImportSpecifier",
14533 Node::ImportDefaultSpecifier(_) => "ImportDefaultSpecifier",
14534 Node::ImportNamespaceSpecifier(_) => "ImportNamespaceSpecifier",
14535 Node::ImportAttribute(_) => "ImportAttribute",
14536 Node::ExportNamedDeclaration(_) => "ExportNamedDeclaration",
14537 Node::ExportSpecifier(_) => "ExportSpecifier",
14538 Node::ExportNamespaceSpecifier(_) => "ExportNamespaceSpecifier",
14539 Node::ExportDefaultDeclaration(_) => "ExportDefaultDeclaration",
14540 Node::ExportAllDeclaration(_) => "ExportAllDeclaration",
14541 Node::ObjectPattern(_) => "ObjectPattern",
14542 Node::ArrayPattern(_) => "ArrayPattern",
14543 Node::RestElement(_) => "RestElement",
14544 Node::AssignmentPattern(_) => "AssignmentPattern",
14545 Node::MatchStatementCase(_) => "MatchStatementCase",
14546 Node::MatchExpression(_) => "MatchExpression",
14547 Node::MatchExpressionCase(_) => "MatchExpressionCase",
14548 Node::MatchWildcardPattern(_) => "MatchWildcardPattern",
14549 Node::MatchLiteralPattern(_) => "MatchLiteralPattern",
14550 Node::MatchUnaryPattern(_) => "MatchUnaryPattern",
14551 Node::MatchIdentifierPattern(_) => "MatchIdentifierPattern",
14552 Node::MatchBindingPattern(_) => "MatchBindingPattern",
14553 Node::MatchObjectPattern(_) => "MatchObjectPattern",
14554 Node::MatchArrayPattern(_) => "MatchArrayPattern",
14555 Node::MatchOrPattern(_) => "MatchOrPattern",
14556 Node::MatchAsPattern(_) => "MatchAsPattern",
14557 Node::MatchMemberPattern(_) => "MatchMemberPattern",
14558 Node::MatchInstancePattern(_) => "MatchInstancePattern",
14559 Node::MatchObjectPatternProperty(_) => "MatchObjectPatternProperty",
14560 Node::MatchInstanceObjectPattern(_) => "MatchInstanceObjectPattern",
14561 Node::MatchRestPattern(_) => "MatchRestPattern",
14562 Node::JSXIdentifier(_) => "JSXIdentifier",
14563 Node::JSXMemberExpression(_) => "JSXMemberExpression",
14564 Node::JSXNamespacedName(_) => "JSXNamespacedName",
14565 Node::JSXEmptyExpression(_) => "JSXEmptyExpression",
14566 Node::JSXExpressionContainer(_) => "JSXExpressionContainer",
14567 Node::JSXSpreadChild(_) => "JSXSpreadChild",
14568 Node::JSXOpeningElement(_) => "JSXOpeningElement",
14569 Node::JSXClosingElement(_) => "JSXClosingElement",
14570 Node::JSXAttribute(_) => "JSXAttribute",
14571 Node::JSXSpreadAttribute(_) => "JSXSpreadAttribute",
14572 Node::JSXStringLiteral(_) => "JSXStringLiteral",
14573 Node::JSXText(_) => "JSXText",
14574 Node::JSXElement(_) => "JSXElement",
14575 Node::JSXFragment(_) => "JSXFragment",
14576 Node::JSXOpeningFragment(_) => "JSXOpeningFragment",
14577 Node::JSXClosingFragment(_) => "JSXClosingFragment",
14578 Node::ExistsTypeAnnotation(_) => "ExistsTypeAnnotation",
14579 Node::EmptyTypeAnnotation(_) => "EmptyTypeAnnotation",
14580 Node::StringTypeAnnotation(_) => "StringTypeAnnotation",
14581 Node::NumberTypeAnnotation(_) => "NumberTypeAnnotation",
14582 Node::StringLiteralTypeAnnotation(_) => "StringLiteralTypeAnnotation",
14583 Node::NumberLiteralTypeAnnotation(_) => "NumberLiteralTypeAnnotation",
14584 Node::BigIntLiteralTypeAnnotation(_) => "BigIntLiteralTypeAnnotation",
14585 Node::BooleanTypeAnnotation(_) => "BooleanTypeAnnotation",
14586 Node::BooleanLiteralTypeAnnotation(_) => "BooleanLiteralTypeAnnotation",
14587 Node::NullLiteralTypeAnnotation(_) => "NullLiteralTypeAnnotation",
14588 Node::SymbolTypeAnnotation(_) => "SymbolTypeAnnotation",
14589 Node::AnyTypeAnnotation(_) => "AnyTypeAnnotation",
14590 Node::MixedTypeAnnotation(_) => "MixedTypeAnnotation",
14591 Node::BigIntTypeAnnotation(_) => "BigIntTypeAnnotation",
14592 Node::VoidTypeAnnotation(_) => "VoidTypeAnnotation",
14593 Node::NeverTypeAnnotation(_) => "NeverTypeAnnotation",
14594 Node::UnknownTypeAnnotation(_) => "UnknownTypeAnnotation",
14595 Node::UndefinedTypeAnnotation(_) => "UndefinedTypeAnnotation",
14596 Node::FunctionTypeAnnotation(_) => "FunctionTypeAnnotation",
14597 Node::HookTypeAnnotation(_) => "HookTypeAnnotation",
14598 Node::FunctionTypeParam(_) => "FunctionTypeParam",
14599 Node::ComponentTypeAnnotation(_) => "ComponentTypeAnnotation",
14600 Node::ComponentTypeParameter(_) => "ComponentTypeParameter",
14601 Node::NullableTypeAnnotation(_) => "NullableTypeAnnotation",
14602 Node::QualifiedTypeIdentifier(_) => "QualifiedTypeIdentifier",
14603 Node::TypeofTypeAnnotation(_) => "TypeofTypeAnnotation",
14604 Node::KeyofTypeAnnotation(_) => "KeyofTypeAnnotation",
14605 Node::TypeOperator(_) => "TypeOperator",
14606 Node::QualifiedTypeofIdentifier(_) => "QualifiedTypeofIdentifier",
14607 Node::TupleTypeAnnotation(_) => "TupleTypeAnnotation",
14608 Node::TupleTypeSpreadElement(_) => "TupleTypeSpreadElement",
14609 Node::TupleTypeLabeledElement(_) => "TupleTypeLabeledElement",
14610 Node::ArrayTypeAnnotation(_) => "ArrayTypeAnnotation",
14611 Node::InferTypeAnnotation(_) => "InferTypeAnnotation",
14612 Node::UnionTypeAnnotation(_) => "UnionTypeAnnotation",
14613 Node::IntersectionTypeAnnotation(_) => "IntersectionTypeAnnotation",
14614 Node::GenericTypeAnnotation(_) => "GenericTypeAnnotation",
14615 Node::IndexedAccessType(_) => "IndexedAccessType",
14616 Node::OptionalIndexedAccessType(_) => "OptionalIndexedAccessType",
14617 Node::ConditionalTypeAnnotation(_) => "ConditionalTypeAnnotation",
14618 Node::TypePredicate(_) => "TypePredicate",
14619 Node::InterfaceTypeAnnotation(_) => "InterfaceTypeAnnotation",
14620 Node::TypeAlias(_) => "TypeAlias",
14621 Node::OpaqueType(_) => "OpaqueType",
14622 Node::InterfaceDeclaration(_) => "InterfaceDeclaration",
14623 Node::DeclareTypeAlias(_) => "DeclareTypeAlias",
14624 Node::DeclareOpaqueType(_) => "DeclareOpaqueType",
14625 Node::DeclareInterface(_) => "DeclareInterface",
14626 Node::DeclareClass(_) => "DeclareClass",
14627 Node::DeclareFunction(_) => "DeclareFunction",
14628 Node::DeclareHook(_) => "DeclareHook",
14629 Node::DeclareComponent(_) => "DeclareComponent",
14630 Node::DeclareVariable(_) => "DeclareVariable",
14631 Node::DeclareEnum(_) => "DeclareEnum",
14632 Node::DeclareExportDeclaration(_) => "DeclareExportDeclaration",
14633 Node::DeclareExportAllDeclaration(_) => "DeclareExportAllDeclaration",
14634 Node::DeclareModule(_) => "DeclareModule",
14635 Node::DeclareNamespace(_) => "DeclareNamespace",
14636 Node::DeclareModuleExports(_) => "DeclareModuleExports",
14637 Node::InterfaceExtends(_) => "InterfaceExtends",
14638 Node::ClassImplements(_) => "ClassImplements",
14639 Node::TypeAnnotation(_) => "TypeAnnotation",
14640 Node::ObjectTypeAnnotation(_) => "ObjectTypeAnnotation",
14641 Node::ObjectTypeProperty(_) => "ObjectTypeProperty",
14642 Node::ObjectTypeSpreadProperty(_) => "ObjectTypeSpreadProperty",
14643 Node::ObjectTypeInternalSlot(_) => "ObjectTypeInternalSlot",
14644 Node::ObjectTypeCallProperty(_) => "ObjectTypeCallProperty",
14645 Node::ObjectTypeIndexer(_) => "ObjectTypeIndexer",
14646 Node::ObjectTypeMappedTypeProperty(_) => "ObjectTypeMappedTypeProperty",
14647 Node::Variance(_) => "Variance",
14648 Node::TypeParameterDeclaration(_) => "TypeParameterDeclaration",
14649 Node::TypeParameter(_) => "TypeParameter",
14650 Node::TypeParameterInstantiation(_) => "TypeParameterInstantiation",
14651 Node::TypeCastExpression(_) => "TypeCastExpression",
14652 Node::AsExpression(_) => "AsExpression",
14653 Node::AsConstExpression(_) => "AsConstExpression",
14654 Node::InferredPredicate(_) => "InferredPredicate",
14655 Node::DeclaredPredicate(_) => "DeclaredPredicate",
14656 Node::EnumDeclaration(_) => "EnumDeclaration",
14657 Node::EnumStringBody(_) => "EnumStringBody",
14658 Node::EnumNumberBody(_) => "EnumNumberBody",
14659 Node::EnumBigIntBody(_) => "EnumBigIntBody",
14660 Node::EnumBooleanBody(_) => "EnumBooleanBody",
14661 Node::EnumSymbolBody(_) => "EnumSymbolBody",
14662 Node::EnumDefaultedMember(_) => "EnumDefaultedMember",
14663 Node::EnumStringMember(_) => "EnumStringMember",
14664 Node::EnumNumberMember(_) => "EnumNumberMember",
14665 Node::EnumBigIntMember(_) => "EnumBigIntMember",
14666 Node::EnumBooleanMember(_) => "EnumBooleanMember",
14667 Node::ComponentParameter(_) => "ComponentParameter",
14668 Node::RecordDeclaration(_) => "RecordDeclaration",
14669 Node::RecordDeclarationImplements(_) => "RecordDeclarationImplements",
14670 Node::RecordDeclarationBody(_) => "RecordDeclarationBody",
14671 Node::RecordDeclarationProperty(_) => "RecordDeclarationProperty",
14672 Node::RecordDeclarationStaticProperty(_) => "RecordDeclarationStaticProperty",
14673 Node::RecordExpression(_) => "RecordExpression",
14674 Node::RecordExpressionProperties(_) => "RecordExpressionProperties",
14675 Node::TSTypeAnnotation(_) => "TSTypeAnnotation",
14676 Node::TSAnyKeyword(_) => "TSAnyKeyword",
14677 Node::TSNumberKeyword(_) => "TSNumberKeyword",
14678 Node::TSBooleanKeyword(_) => "TSBooleanKeyword",
14679 Node::TSStringKeyword(_) => "TSStringKeyword",
14680 Node::TSSymbolKeyword(_) => "TSSymbolKeyword",
14681 Node::TSVoidKeyword(_) => "TSVoidKeyword",
14682 Node::TSUndefinedKeyword(_) => "TSUndefinedKeyword",
14683 Node::TSUnknownKeyword(_) => "TSUnknownKeyword",
14684 Node::TSNeverKeyword(_) => "TSNeverKeyword",
14685 Node::TSBigIntKeyword(_) => "TSBigIntKeyword",
14686 Node::TSThisType(_) => "TSThisType",
14687 Node::TSLiteralType(_) => "TSLiteralType",
14688 Node::TSIndexedAccessType(_) => "TSIndexedAccessType",
14689 Node::TSArrayType(_) => "TSArrayType",
14690 Node::TSTypeReference(_) => "TSTypeReference",
14691 Node::TSQualifiedName(_) => "TSQualifiedName",
14692 Node::TSFunctionType(_) => "TSFunctionType",
14693 Node::TSConstructorType(_) => "TSConstructorType",
14694 Node::TSTypePredicate(_) => "TSTypePredicate",
14695 Node::TSTupleType(_) => "TSTupleType",
14696 Node::TSTypeAssertion(_) => "TSTypeAssertion",
14697 Node::TSAsExpression(_) => "TSAsExpression",
14698 Node::TSParameterProperty(_) => "TSParameterProperty",
14699 Node::TSTypeAliasDeclaration(_) => "TSTypeAliasDeclaration",
14700 Node::TSInterfaceDeclaration(_) => "TSInterfaceDeclaration",
14701 Node::TSInterfaceHeritage(_) => "TSInterfaceHeritage",
14702 Node::TSInterfaceBody(_) => "TSInterfaceBody",
14703 Node::TSEnumDeclaration(_) => "TSEnumDeclaration",
14704 Node::TSEnumMember(_) => "TSEnumMember",
14705 Node::TSModuleDeclaration(_) => "TSModuleDeclaration",
14706 Node::TSModuleBlock(_) => "TSModuleBlock",
14707 Node::TSModuleMember(_) => "TSModuleMember",
14708 Node::TSTypeParameterDeclaration(_) => "TSTypeParameterDeclaration",
14709 Node::TSTypeParameter(_) => "TSTypeParameter",
14710 Node::TSTypeParameterInstantiation(_) => "TSTypeParameterInstantiation",
14711 Node::TSUnionType(_) => "TSUnionType",
14712 Node::TSIntersectionType(_) => "TSIntersectionType",
14713 Node::TSTypeQuery(_) => "TSTypeQuery",
14714 Node::TSConditionalType(_) => "TSConditionalType",
14715 Node::TSTypeLiteral(_) => "TSTypeLiteral",
14716 Node::TSPropertySignature(_) => "TSPropertySignature",
14717 Node::TSMethodSignature(_) => "TSMethodSignature",
14718 Node::TSIndexSignature(_) => "TSIndexSignature",
14719 Node::TSCallSignatureDeclaration(_) => "TSCallSignatureDeclaration",
14720 Node::TSModifiers(_) => "TSModifiers",
14721 Node::CoverEmptyArgs(_) => "CoverEmptyArgs",
14722 Node::CoverTrailingComma(_) => "CoverTrailingComma",
14723 Node::CoverInitializer(_) => "CoverInitializer",
14724 Node::CoverRestElement(_) => "CoverRestElement",
14725 Node::CoverTypedIdentifier(_) => "CoverTypedIdentifier",
14726 Node::SHBuiltin(_) => "SHBuiltin",
14727 Node::ImplicitCheckedCast(_) => "ImplicitCheckedCast",
14728 }
14729 }
14730
14731 pub fn dump_children<'a, 'w>(
14734 &'gc self,
14735 d: &mut crate::dump::ESTreeJSONDumper<'a, 'w>,
14736 ) {
14737 match self {
14738 Node::Empty(_) => {}
14739 Node::Metadata(_) => {}
14740 Node::Program(n) => {
14741 d.field_list("body", n.body, false);
14742 }
14743 Node::FunctionExpression(n) => {
14744 d.field_node("id", n.id, false);
14745 d.field_list("params", n.params, false);
14746 d.field_node("body", Some(n.body), false);
14747 d.field_node("typeParameters", n.type_parameters, true);
14748 d.field_node("returnType", n.return_type, true);
14749 d.field_node("predicate", n.predicate, true);
14750 d.field_bool("generator", n.generator.get(), false);
14751 d.field_bool("async", n.r#async.get(), false);
14752 }
14753 Node::ArrowFunctionExpression(n) => {
14754 d.field_list("params", n.params, false);
14755 d.field_node("body", Some(n.body), false);
14756 d.field_node("typeParameters", n.type_parameters, true);
14757 d.field_node("returnType", n.return_type, true);
14758 d.field_node("predicate", n.predicate, true);
14759 d.field_bool("expression", n.expression.get(), false);
14760 d.field_bool("async", n.r#async.get(), false);
14761 }
14762 Node::FunctionDeclaration(n) => {
14763 d.field_node("id", n.id, false);
14764 d.field_list("params", n.params, false);
14765 d.field_node("body", Some(n.body), false);
14766 d.field_node("typeParameters", n.type_parameters, true);
14767 d.field_node("returnType", n.return_type, true);
14768 d.field_node("predicate", n.predicate, true);
14769 d.field_bool("generator", n.generator.get(), false);
14770 d.field_bool("async", n.r#async.get(), false);
14771 }
14772 Node::ComponentDeclaration(n) => {
14773 d.field_node("id", Some(n.id), false);
14774 d.field_list("params", n.params, false);
14775 d.field_node("body", Some(n.body), false);
14776 d.field_node("typeParameters", n.type_parameters, true);
14777 d.field_node("rendersType", n.renders_type, true);
14778 d.field_bool("async", n.r#async.get(), false);
14779 }
14780 Node::HookDeclaration(n) => {
14781 d.field_node("id", Some(n.id), false);
14782 d.field_list("params", n.params, false);
14783 d.field_node("body", Some(n.body), false);
14784 d.field_node("typeParameters", n.type_parameters, true);
14785 d.field_node("returnType", n.return_type, true);
14786 d.field_bool("async", n.r#async.get(), false);
14787 }
14788 Node::MatchStatement(n) => {
14789 d.field_node("argument", Some(n.argument), false);
14790 d.field_list("cases", n.cases, false);
14791 }
14792 Node::WhileStatement(n) => {
14793 d.field_node("body", Some(n.body), false);
14794 d.field_node("test", Some(n.test), false);
14795 }
14796 Node::DoWhileStatement(n) => {
14797 d.field_node("body", Some(n.body), false);
14798 d.field_node("test", Some(n.test), false);
14799 }
14800 Node::ForInStatement(n) => {
14801 d.field_node("left", Some(n.left), false);
14802 d.field_node("right", Some(n.right), false);
14803 d.field_node("body", Some(n.body), false);
14804 }
14805 Node::ForOfStatement(n) => {
14806 d.field_node("left", Some(n.left), false);
14807 d.field_node("right", Some(n.right), false);
14808 d.field_node("body", Some(n.body), false);
14809 d.field_bool("await", n.r#await.get(), false);
14810 }
14811 Node::ForStatement(n) => {
14812 d.field_node("init", n.init, false);
14813 d.field_node("test", n.test, false);
14814 d.field_node("update", n.update, false);
14815 d.field_node("body", Some(n.body), false);
14816 }
14817 Node::DebuggerStatement(_) => {}
14818 Node::EmptyStatement(_) => {}
14819 Node::BlockStatement(n) => {
14820 d.field_list("body", n.body, false);
14821 d.field_bool("implicit", n.implicit.get(), true);
14822 }
14823 Node::StaticBlock(n) => {
14824 d.field_list("body", n.body, false);
14825 }
14826 Node::BreakStatement(n) => {
14827 d.field_node("label", n.label, false);
14828 }
14829 Node::ContinueStatement(n) => {
14830 d.field_node("label", n.label, false);
14831 }
14832 Node::ThrowStatement(n) => {
14833 d.field_node("argument", Some(n.argument), false);
14834 }
14835 Node::ReturnStatement(n) => {
14836 d.field_node("argument", n.argument, false);
14837 }
14838 Node::WithStatement(n) => {
14839 d.field_node("object", Some(n.object), false);
14840 d.field_node("body", Some(n.body), false);
14841 }
14842 Node::SwitchStatement(n) => {
14843 d.field_node("discriminant", Some(n.discriminant), false);
14844 d.field_list("cases", n.cases, false);
14845 }
14846 Node::LabeledStatement(n) => {
14847 d.field_node("label", Some(n.label), false);
14848 d.field_node("body", Some(n.body), false);
14849 }
14850 Node::ExpressionStatement(n) => {
14851 d.field_node("expression", Some(n.expression), false);
14852 d.field_label("directive", n.directive.get(), false);
14853 }
14854 Node::TryStatement(n) => {
14855 d.field_node("block", Some(n.block), false);
14856 d.field_node("handler", n.handler, false);
14857 d.field_node("finalizer", n.finalizer, false);
14858 }
14859 Node::IfStatement(n) => {
14860 d.field_node("test", Some(n.test), false);
14861 d.field_node("consequent", Some(n.consequent), false);
14862 d.field_node("alternate", n.alternate, false);
14863 }
14864 Node::NullLiteral(_) => {}
14865 Node::BooleanLiteral(n) => {
14866 d.field_bool("value", n.value.get(), false);
14867 }
14868 Node::StringLiteral(n) => {
14869 d.field_label("value", n.value.get(), false);
14870 }
14871 Node::NumericLiteral(n) => {
14872 d.field_number("value", n.value.get(), false);
14873 }
14874 Node::RegExpLiteral(n) => {
14875 d.field_label("pattern", n.pattern.get(), false);
14876 d.field_label("flags", n.flags.get(), false);
14877 }
14878 Node::BigIntLiteral(n) => {
14879 d.field_label("bigint", n.bigint.get(), false);
14880 }
14881 Node::ThisExpression(_) => {}
14882 Node::Super(_) => {}
14883 Node::SequenceExpression(n) => {
14884 d.field_list("expressions", n.expressions, false);
14885 }
14886 Node::ObjectExpression(n) => {
14887 d.field_list("properties", n.properties, false);
14888 }
14889 Node::ArrayExpression(n) => {
14890 d.field_list("elements", n.elements, false);
14891 d.field_bool("trailingComma", n.trailing_comma.get(), false);
14892 }
14893 Node::SpreadElement(n) => {
14894 d.field_node("argument", Some(n.argument), false);
14895 }
14896 Node::NewExpression(n) => {
14897 d.field_node("callee", Some(n.callee), false);
14898 d.field_node("typeArguments", n.type_arguments, true);
14899 d.field_list("arguments", n.arguments, false);
14900 }
14901 Node::YieldExpression(n) => {
14902 d.field_node("argument", n.argument, false);
14903 d.field_bool("delegate", n.delegate.get(), false);
14904 }
14905 Node::AwaitExpression(n) => {
14906 d.field_node("argument", Some(n.argument), false);
14907 }
14908 Node::ImportExpression(n) => {
14909 d.field_node("source", Some(n.source), false);
14910 d.field_node("options", n.options, false);
14911 }
14912 Node::CallExpression(n) => {
14913 d.field_node("callee", Some(n.callee), false);
14914 d.field_node("typeArguments", n.type_arguments, true);
14915 d.field_list("arguments", n.arguments, false);
14916 }
14917 Node::OptionalCallExpression(n) => {
14918 d.field_node("callee", Some(n.callee), false);
14919 d.field_node("typeArguments", n.type_arguments, true);
14920 d.field_list("arguments", n.arguments, false);
14921 d.field_bool("optional", n.optional.get(), false);
14922 }
14923 Node::AssignmentExpression(n) => {
14924 d.field_label("operator", n.operator.get(), false);
14925 d.field_node("left", Some(n.left), false);
14926 d.field_node("right", Some(n.right), false);
14927 }
14928 Node::UnaryExpression(n) => {
14929 d.field_label("operator", n.operator.get(), false);
14930 d.field_node("argument", Some(n.argument), false);
14931 d.field_bool("prefix", n.prefix.get(), false);
14932 }
14933 Node::UpdateExpression(n) => {
14934 d.field_label("operator", n.operator.get(), false);
14935 d.field_node("argument", Some(n.argument), false);
14936 d.field_bool("prefix", n.prefix.get(), false);
14937 }
14938 Node::MemberExpression(n) => {
14939 d.field_node("object", Some(n.object), false);
14940 d.field_node("property", Some(n.property), false);
14941 d.field_bool("computed", n.computed.get(), false);
14942 }
14943 Node::OptionalMemberExpression(n) => {
14944 d.field_node("object", Some(n.object), false);
14945 d.field_node("property", Some(n.property), false);
14946 d.field_bool("computed", n.computed.get(), false);
14947 d.field_bool("optional", n.optional.get(), false);
14948 }
14949 Node::LogicalExpression(n) => {
14950 d.field_node("left", Some(n.left), false);
14951 d.field_node("right", Some(n.right), false);
14952 d.field_label("operator", n.operator.get(), false);
14953 }
14954 Node::ConditionalExpression(n) => {
14955 d.field_node("test", Some(n.test), false);
14956 d.field_node("alternate", Some(n.alternate), false);
14957 d.field_node("consequent", Some(n.consequent), false);
14958 }
14959 Node::BinaryExpression(n) => {
14960 d.field_node("left", Some(n.left), false);
14961 d.field_node("right", Some(n.right), false);
14962 d.field_label("operator", n.operator.get(), false);
14963 }
14964 Node::Directive(n) => {
14965 d.field_node("value", Some(n.value), false);
14966 }
14967 Node::DirectiveLiteral(n) => {
14968 d.field_label("value", n.value.get(), false);
14969 }
14970 Node::Identifier(n) => {
14971 d.field_label("name", n.name.get(), false);
14972 d.field_node("typeAnnotation", n.type_annotation, true);
14973 d.field_bool("optional", n.optional.get(), true);
14974 }
14975 Node::PrivateName(n) => {
14976 d.field_node("id", Some(n.id), false);
14977 }
14978 Node::MetaProperty(n) => {
14979 d.field_node("meta", Some(n.meta), false);
14980 d.field_node("property", Some(n.property), false);
14981 }
14982 Node::SwitchCase(n) => {
14983 d.field_node("test", n.test, false);
14984 d.field_list("consequent", n.consequent, false);
14985 }
14986 Node::CatchClause(n) => {
14987 d.field_node("param", n.param, false);
14988 d.field_node("body", Some(n.body), false);
14989 }
14990 Node::VariableDeclarator(n) => {
14991 d.field_node("init", n.init, false);
14992 d.field_node("id", Some(n.id), false);
14993 }
14994 Node::VariableDeclaration(n) => {
14995 d.field_label("kind", n.kind.get(), false);
14996 d.field_list("declarations", n.declarations, false);
14997 }
14998 Node::TemplateLiteral(n) => {
14999 d.field_list("quasis", n.quasis, false);
15000 d.field_list("expressions", n.expressions, false);
15001 }
15002 Node::TaggedTemplateExpression(n) => {
15003 d.field_node("tag", Some(n.tag), false);
15004 d.field_node("quasi", Some(n.quasi), false);
15005 }
15006 Node::TemplateElement(n) => {
15007 d.field_bool("tail", n.tail.get(), false);
15008 d.field_label("cooked", n.cooked.get(), false);
15009 d.field_label("raw", n.raw.get(), false);
15010 }
15011 Node::Property(n) => {
15012 d.field_node("key", Some(n.key), false);
15013 d.field_node("value", Some(n.value), false);
15014 d.field_label("kind", n.kind.get(), false);
15015 d.field_bool("computed", n.computed.get(), false);
15016 d.field_bool("method", n.method.get(), false);
15017 d.field_bool("shorthand", n.shorthand.get(), false);
15018 }
15019 Node::Decorator(n) => {
15020 d.field_node("expression", Some(n.expression), false);
15021 }
15022 Node::ClassDeclaration(n) => {
15023 d.field_node("id", n.id, false);
15024 d.field_node("typeParameters", n.type_parameters, true);
15025 d.field_node("superClass", n.super_class, false);
15026 d.field_node("superTypeArguments", n.super_type_arguments, true);
15027 d.field_list("implements", n.implements, true);
15028 d.field_list("decorators", n.decorators, true);
15029 d.field_node("body", Some(n.body), false);
15030 }
15031 Node::ClassExpression(n) => {
15032 d.field_node("id", n.id, false);
15033 d.field_node("typeParameters", n.type_parameters, true);
15034 d.field_node("superClass", n.super_class, false);
15035 d.field_node("superTypeArguments", n.super_type_arguments, true);
15036 d.field_list("implements", n.implements, true);
15037 d.field_list("decorators", n.decorators, true);
15038 d.field_node("body", Some(n.body), false);
15039 }
15040 Node::ClassBody(n) => {
15041 d.field_list("body", n.body, false);
15042 }
15043 Node::ClassProperty(n) => {
15044 d.field_node("key", Some(n.key), false);
15045 d.field_node("value", n.value, false);
15046 d.field_bool("computed", n.computed.get(), false);
15047 d.field_bool("static", n.r#static.get(), false);
15048 d.field_list("decorators", n.decorators, true);
15049 d.field_bool("declare", n.declare.get(), false);
15050 d.field_bool("optional", n.optional.get(), true);
15051 d.field_node("variance", n.variance, true);
15052 d.field_node("typeAnnotation", n.type_annotation, true);
15053 d.field_node("tsModifiers", n.ts_modifiers, true);
15054 }
15055 Node::ClassPrivateProperty(n) => {
15056 d.field_node("key", Some(n.key), false);
15057 d.field_node("value", n.value, false);
15058 d.field_bool("static", n.r#static.get(), false);
15059 d.field_list("decorators", n.decorators, true);
15060 d.field_bool("declare", n.declare.get(), false);
15061 d.field_bool("optional", n.optional.get(), true);
15062 d.field_node("variance", n.variance, true);
15063 d.field_node("typeAnnotation", n.type_annotation, true);
15064 d.field_node("tsModifiers", n.ts_modifiers, true);
15065 }
15066 Node::MethodDefinition(n) => {
15067 d.field_node("key", Some(n.key), false);
15068 d.field_node("value", Some(n.value), false);
15069 d.field_label("kind", n.kind.get(), false);
15070 d.field_bool("computed", n.computed.get(), false);
15071 d.field_bool("static", n.r#static.get(), false);
15072 d.field_list("decorators", n.decorators, true);
15073 }
15074 Node::ImportDeclaration(n) => {
15075 d.field_list("specifiers", n.specifiers, false);
15076 d.field_node("source", Some(n.source), false);
15077 d.field_list("attributes", n.attributes, false);
15078 d.field_label("importKind", n.import_kind.get(), false);
15079 }
15080 Node::ImportSpecifier(n) => {
15081 d.field_node("imported", Some(n.imported), false);
15082 d.field_node("local", Some(n.local), false);
15083 d.field_label("importKind", n.import_kind.get(), false);
15084 }
15085 Node::ImportDefaultSpecifier(n) => {
15086 d.field_node("local", Some(n.local), false);
15087 }
15088 Node::ImportNamespaceSpecifier(n) => {
15089 d.field_node("local", Some(n.local), false);
15090 }
15091 Node::ImportAttribute(n) => {
15092 d.field_node("key", Some(n.key), false);
15093 d.field_node("value", Some(n.value), false);
15094 }
15095 Node::ExportNamedDeclaration(n) => {
15096 d.field_node("declaration", n.declaration, false);
15097 d.field_list("specifiers", n.specifiers, false);
15098 d.field_node("source", n.source, false);
15099 d.field_label("exportKind", n.export_kind.get(), false);
15100 }
15101 Node::ExportSpecifier(n) => {
15102 d.field_node("exported", Some(n.exported), false);
15103 d.field_node("local", Some(n.local), false);
15104 }
15105 Node::ExportNamespaceSpecifier(n) => {
15106 d.field_node("exported", Some(n.exported), false);
15107 }
15108 Node::ExportDefaultDeclaration(n) => {
15109 d.field_node("declaration", Some(n.declaration), false);
15110 }
15111 Node::ExportAllDeclaration(n) => {
15112 d.field_node("source", Some(n.source), false);
15113 d.field_label("exportKind", n.export_kind.get(), false);
15114 }
15115 Node::ObjectPattern(n) => {
15116 d.field_list("properties", n.properties, false);
15117 d.field_node("typeAnnotation", n.type_annotation, true);
15118 }
15119 Node::ArrayPattern(n) => {
15120 d.field_list("elements", n.elements, false);
15121 d.field_node("typeAnnotation", n.type_annotation, true);
15122 }
15123 Node::RestElement(n) => {
15124 d.field_node("argument", Some(n.argument), false);
15125 }
15126 Node::AssignmentPattern(n) => {
15127 d.field_node("left", Some(n.left), false);
15128 d.field_node("right", Some(n.right), false);
15129 }
15130 Node::MatchStatementCase(n) => {
15131 d.field_node("pattern", Some(n.pattern), false);
15132 d.field_node("body", Some(n.body), false);
15133 d.field_node("guard", n.guard, false);
15134 }
15135 Node::MatchExpression(n) => {
15136 d.field_node("argument", Some(n.argument), false);
15137 d.field_list("cases", n.cases, false);
15138 }
15139 Node::MatchExpressionCase(n) => {
15140 d.field_node("pattern", Some(n.pattern), false);
15141 d.field_node("body", Some(n.body), false);
15142 d.field_node("guard", n.guard, false);
15143 }
15144 Node::MatchWildcardPattern(_) => {}
15145 Node::MatchLiteralPattern(n) => {
15146 d.field_node("literal", Some(n.literal), false);
15147 }
15148 Node::MatchUnaryPattern(n) => {
15149 d.field_node("argument", Some(n.argument), false);
15150 d.field_label("operator", n.operator.get(), false);
15151 }
15152 Node::MatchIdentifierPattern(n) => {
15153 d.field_node("id", Some(n.id), false);
15154 }
15155 Node::MatchBindingPattern(n) => {
15156 d.field_node("id", Some(n.id), false);
15157 d.field_label("kind", n.kind.get(), false);
15158 }
15159 Node::MatchObjectPattern(n) => {
15160 d.field_list("properties", n.properties, false);
15161 d.field_node("rest", n.rest, false);
15162 }
15163 Node::MatchArrayPattern(n) => {
15164 d.field_list("elements", n.elements, false);
15165 d.field_node("rest", n.rest, false);
15166 }
15167 Node::MatchOrPattern(n) => {
15168 d.field_list("patterns", n.patterns, false);
15169 }
15170 Node::MatchAsPattern(n) => {
15171 d.field_node("pattern", Some(n.pattern), false);
15172 d.field_node("target", Some(n.target), false);
15173 }
15174 Node::MatchMemberPattern(n) => {
15175 d.field_node("base", Some(n.base), false);
15176 d.field_node("property", Some(n.property), false);
15177 }
15178 Node::MatchInstancePattern(n) => {
15179 d.field_node("targetConstructor", Some(n.target_constructor), false);
15180 d.field_node("properties", Some(n.properties), false);
15181 }
15182 Node::MatchObjectPatternProperty(n) => {
15183 d.field_node("key", Some(n.key), false);
15184 d.field_node("pattern", Some(n.pattern), false);
15185 d.field_bool("shorthand", n.shorthand.get(), false);
15186 }
15187 Node::MatchInstanceObjectPattern(n) => {
15188 d.field_list("properties", n.properties, false);
15189 d.field_node("rest", n.rest, false);
15190 }
15191 Node::MatchRestPattern(n) => {
15192 d.field_node("argument", n.argument, false);
15193 }
15194 Node::JSXIdentifier(n) => {
15195 d.field_label("name", n.name.get(), false);
15196 }
15197 Node::JSXMemberExpression(n) => {
15198 d.field_node("object", Some(n.object), false);
15199 d.field_node("property", Some(n.property), false);
15200 }
15201 Node::JSXNamespacedName(n) => {
15202 d.field_node("namespace", Some(n.namespace), false);
15203 d.field_node("name", Some(n.name), false);
15204 }
15205 Node::JSXEmptyExpression(_) => {}
15206 Node::JSXExpressionContainer(n) => {
15207 d.field_node("expression", Some(n.expression), false);
15208 }
15209 Node::JSXSpreadChild(n) => {
15210 d.field_node("expression", Some(n.expression), false);
15211 }
15212 Node::JSXOpeningElement(n) => {
15213 d.field_node("name", Some(n.name), false);
15214 d.field_list("attributes", n.attributes, false);
15215 d.field_bool("selfClosing", n.self_closing.get(), false);
15216 d.field_node("typeArguments", n.type_arguments, true);
15217 }
15218 Node::JSXClosingElement(n) => {
15219 d.field_node("name", Some(n.name), false);
15220 }
15221 Node::JSXAttribute(n) => {
15222 d.field_node("name", Some(n.name), false);
15223 d.field_node("value", n.value, false);
15224 }
15225 Node::JSXSpreadAttribute(n) => {
15226 d.field_node("argument", Some(n.argument), false);
15227 }
15228 Node::JSXStringLiteral(n) => {
15229 d.field_label("value", n.value.get(), false);
15230 d.field_label("raw", n.raw.get(), false);
15231 }
15232 Node::JSXText(n) => {
15233 d.field_label("value", n.value.get(), false);
15234 d.field_label("raw", n.raw.get(), false);
15235 }
15236 Node::JSXElement(n) => {
15237 d.field_node("openingElement", Some(n.opening_element), false);
15238 d.field_list("children", n.children, false);
15239 d.field_node("closingElement", n.closing_element, false);
15240 }
15241 Node::JSXFragment(n) => {
15242 d.field_node("openingFragment", Some(n.opening_fragment), false);
15243 d.field_list("children", n.children, false);
15244 d.field_node("closingFragment", Some(n.closing_fragment), false);
15245 }
15246 Node::JSXOpeningFragment(_) => {}
15247 Node::JSXClosingFragment(_) => {}
15248 Node::ExistsTypeAnnotation(_) => {}
15249 Node::EmptyTypeAnnotation(_) => {}
15250 Node::StringTypeAnnotation(_) => {}
15251 Node::NumberTypeAnnotation(_) => {}
15252 Node::StringLiteralTypeAnnotation(n) => {
15253 d.field_label("value", n.value.get(), false);
15254 d.field_label("raw", n.raw.get(), false);
15255 }
15256 Node::NumberLiteralTypeAnnotation(n) => {
15257 d.field_number("value", n.value.get(), false);
15258 d.field_label("raw", n.raw.get(), false);
15259 }
15260 Node::BigIntLiteralTypeAnnotation(n) => {
15261 d.field_label("raw", n.raw.get(), false);
15262 }
15263 Node::BooleanTypeAnnotation(_) => {}
15264 Node::BooleanLiteralTypeAnnotation(n) => {
15265 d.field_bool("value", n.value.get(), false);
15266 d.field_label("raw", n.raw.get(), false);
15267 }
15268 Node::NullLiteralTypeAnnotation(_) => {}
15269 Node::SymbolTypeAnnotation(_) => {}
15270 Node::AnyTypeAnnotation(_) => {}
15271 Node::MixedTypeAnnotation(_) => {}
15272 Node::BigIntTypeAnnotation(_) => {}
15273 Node::VoidTypeAnnotation(_) => {}
15274 Node::NeverTypeAnnotation(_) => {}
15275 Node::UnknownTypeAnnotation(_) => {}
15276 Node::UndefinedTypeAnnotation(_) => {}
15277 Node::FunctionTypeAnnotation(n) => {
15278 d.field_list("params", n.params, false);
15279 d.field_node("this", n.this, false);
15280 d.field_node("returnType", Some(n.return_type), false);
15281 d.field_node("rest", n.rest, false);
15282 d.field_node("typeParameters", n.type_parameters, false);
15283 }
15284 Node::HookTypeAnnotation(n) => {
15285 d.field_list("params", n.params, false);
15286 d.field_node("returnType", Some(n.return_type), false);
15287 d.field_node("rest", n.rest, false);
15288 d.field_node("typeParameters", n.type_parameters, false);
15289 }
15290 Node::FunctionTypeParam(n) => {
15291 d.field_node("name", n.name, false);
15292 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15293 d.field_bool("optional", n.optional.get(), false);
15294 }
15295 Node::ComponentTypeAnnotation(n) => {
15296 d.field_list("params", n.params, false);
15297 d.field_node("rest", n.rest, false);
15298 d.field_node("typeParameters", n.type_parameters, false);
15299 d.field_node("rendersType", n.renders_type, false);
15300 }
15301 Node::ComponentTypeParameter(n) => {
15302 d.field_node("name", n.name, false);
15303 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15304 d.field_bool("optional", n.optional.get(), false);
15305 }
15306 Node::NullableTypeAnnotation(n) => {
15307 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15308 }
15309 Node::QualifiedTypeIdentifier(n) => {
15310 d.field_node("qualification", Some(n.qualification), false);
15311 d.field_node("id", Some(n.id), false);
15312 }
15313 Node::TypeofTypeAnnotation(n) => {
15314 d.field_node("argument", Some(n.argument), false);
15315 d.field_node("typeArguments", n.type_arguments, true);
15316 }
15317 Node::KeyofTypeAnnotation(n) => {
15318 d.field_node("argument", Some(n.argument), false);
15319 }
15320 Node::TypeOperator(n) => {
15321 d.field_label("operator", n.operator.get(), false);
15322 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15323 }
15324 Node::QualifiedTypeofIdentifier(n) => {
15325 d.field_node("qualification", Some(n.qualification), false);
15326 d.field_node("id", Some(n.id), false);
15327 }
15328 Node::TupleTypeAnnotation(n) => {
15329 d.field_list("elementTypes", n.element_types, false);
15330 d.field_bool("inexact", n.inexact.get(), false);
15331 }
15332 Node::TupleTypeSpreadElement(n) => {
15333 d.field_node("label", n.label, false);
15334 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15335 }
15336 Node::TupleTypeLabeledElement(n) => {
15337 d.field_node("label", Some(n.label), false);
15338 d.field_node("elementType", Some(n.element_type), false);
15339 d.field_bool("optional", n.optional.get(), false);
15340 d.field_node("variance", n.variance, false);
15341 }
15342 Node::ArrayTypeAnnotation(n) => {
15343 d.field_node("elementType", Some(n.element_type), false);
15344 }
15345 Node::InferTypeAnnotation(n) => {
15346 d.field_node("typeParameter", Some(n.type_parameter), false);
15347 }
15348 Node::UnionTypeAnnotation(n) => {
15349 d.field_list("types", n.types, false);
15350 }
15351 Node::IntersectionTypeAnnotation(n) => {
15352 d.field_list("types", n.types, false);
15353 }
15354 Node::GenericTypeAnnotation(n) => {
15355 d.field_node("id", Some(n.id), false);
15356 d.field_node("typeParameters", n.type_parameters, false);
15357 }
15358 Node::IndexedAccessType(n) => {
15359 d.field_node("objectType", Some(n.object_type), false);
15360 d.field_node("indexType", Some(n.index_type), false);
15361 }
15362 Node::OptionalIndexedAccessType(n) => {
15363 d.field_node("objectType", Some(n.object_type), false);
15364 d.field_node("indexType", Some(n.index_type), false);
15365 d.field_bool("optional", n.optional.get(), false);
15366 }
15367 Node::ConditionalTypeAnnotation(n) => {
15368 d.field_node("checkType", Some(n.check_type), false);
15369 d.field_node("extendsType", Some(n.extends_type), false);
15370 d.field_node("trueType", Some(n.true_type), false);
15371 d.field_node("falseType", Some(n.false_type), false);
15372 }
15373 Node::TypePredicate(n) => {
15374 d.field_node("parameterName", Some(n.parameter_name), false);
15375 d.field_node("typeAnnotation", n.type_annotation, false);
15376 d.field_label("kind", n.kind.get(), false);
15377 }
15378 Node::InterfaceTypeAnnotation(n) => {
15379 d.field_list("extends", n.extends, false);
15380 d.field_node("body", n.body, false);
15381 }
15382 Node::TypeAlias(n) => {
15383 d.field_node("id", Some(n.id), false);
15384 d.field_node("typeParameters", n.type_parameters, false);
15385 d.field_node("right", Some(n.right), false);
15386 }
15387 Node::OpaqueType(n) => {
15388 d.field_node("id", Some(n.id), false);
15389 d.field_node("typeParameters", n.type_parameters, false);
15390 d.field_node("impltype", Some(n.impltype), false);
15391 d.field_node("lowerBound", n.lower_bound, false);
15392 d.field_node("upperBound", n.upper_bound, false);
15393 d.field_node("supertype", n.supertype, false);
15394 }
15395 Node::InterfaceDeclaration(n) => {
15396 d.field_node("id", Some(n.id), false);
15397 d.field_node("typeParameters", n.type_parameters, false);
15398 d.field_list("extends", n.extends, false);
15399 d.field_node("body", Some(n.body), false);
15400 }
15401 Node::DeclareTypeAlias(n) => {
15402 d.field_node("id", Some(n.id), false);
15403 d.field_node("typeParameters", n.type_parameters, false);
15404 d.field_node("right", Some(n.right), false);
15405 }
15406 Node::DeclareOpaqueType(n) => {
15407 d.field_node("id", Some(n.id), false);
15408 d.field_node("typeParameters", n.type_parameters, false);
15409 d.field_node("impltype", n.impltype, false);
15410 d.field_node("lowerBound", n.lower_bound, false);
15411 d.field_node("upperBound", n.upper_bound, false);
15412 d.field_node("supertype", n.supertype, false);
15413 }
15414 Node::DeclareInterface(n) => {
15415 d.field_node("id", Some(n.id), false);
15416 d.field_node("typeParameters", n.type_parameters, false);
15417 d.field_list("extends", n.extends, false);
15418 d.field_node("body", Some(n.body), false);
15419 }
15420 Node::DeclareClass(n) => {
15421 d.field_node("id", Some(n.id), false);
15422 d.field_node("typeParameters", n.type_parameters, false);
15423 d.field_list("extends", n.extends, false);
15424 d.field_list("implements", n.implements, false);
15425 d.field_list("mixins", n.mixins, false);
15426 d.field_node("body", Some(n.body), false);
15427 }
15428 Node::DeclareFunction(n) => {
15429 d.field_node("id", Some(n.id), false);
15430 d.field_node("predicate", n.predicate, false);
15431 }
15432 Node::DeclareHook(n) => {
15433 d.field_node("id", Some(n.id), false);
15434 }
15435 Node::DeclareComponent(n) => {
15436 d.field_node("id", Some(n.id), false);
15437 d.field_list("params", n.params, false);
15438 d.field_node("rest", n.rest, false);
15439 d.field_node("typeParameters", n.type_parameters, false);
15440 d.field_node("rendersType", n.renders_type, false);
15441 }
15442 Node::DeclareVariable(n) => {
15443 d.field_node("id", Some(n.id), false);
15444 d.field_label("kind", n.kind.get(), false);
15445 }
15446 Node::DeclareEnum(n) => {
15447 d.field_node("id", Some(n.id), false);
15448 d.field_node("body", Some(n.body), false);
15449 }
15450 Node::DeclareExportDeclaration(n) => {
15451 d.field_node("declaration", n.declaration, false);
15452 d.field_list("specifiers", n.specifiers, false);
15453 d.field_node("source", n.source, false);
15454 d.field_bool("default", n.default.get(), false);
15455 }
15456 Node::DeclareExportAllDeclaration(n) => {
15457 d.field_node("source", Some(n.source), false);
15458 }
15459 Node::DeclareModule(n) => {
15460 d.field_node("id", Some(n.id), false);
15461 d.field_node("body", Some(n.body), false);
15462 }
15463 Node::DeclareNamespace(n) => {
15464 d.field_node("id", Some(n.id), false);
15465 d.field_node("body", Some(n.body), false);
15466 }
15467 Node::DeclareModuleExports(n) => {
15468 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15469 }
15470 Node::InterfaceExtends(n) => {
15471 d.field_node("id", Some(n.id), false);
15472 d.field_node("typeParameters", n.type_parameters, false);
15473 }
15474 Node::ClassImplements(n) => {
15475 d.field_node("id", Some(n.id), false);
15476 d.field_node("typeParameters", n.type_parameters, false);
15477 }
15478 Node::TypeAnnotation(n) => {
15479 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15480 }
15481 Node::ObjectTypeAnnotation(n) => {
15482 d.field_list("properties", n.properties, false);
15483 d.field_list("indexers", n.indexers, false);
15484 d.field_list("callProperties", n.call_properties, false);
15485 d.field_list("internalSlots", n.internal_slots, false);
15486 d.field_bool("inexact", n.inexact.get(), false);
15487 d.field_bool("exact", n.exact.get(), false);
15488 }
15489 Node::ObjectTypeProperty(n) => {
15490 d.field_node("key", Some(n.key), false);
15491 d.field_node("value", Some(n.value), false);
15492 d.field_bool("method", n.method.get(), false);
15493 d.field_bool("optional", n.optional.get(), false);
15494 d.field_bool("static", n.r#static.get(), false);
15495 d.field_bool("proto", n.proto.get(), false);
15496 d.field_node("variance", n.variance, false);
15497 d.field_label("kind", n.kind.get(), false);
15498 }
15499 Node::ObjectTypeSpreadProperty(n) => {
15500 d.field_node("argument", Some(n.argument), false);
15501 }
15502 Node::ObjectTypeInternalSlot(n) => {
15503 d.field_node("id", Some(n.id), false);
15504 d.field_node("value", Some(n.value), false);
15505 d.field_bool("optional", n.optional.get(), false);
15506 d.field_bool("static", n.r#static.get(), false);
15507 d.field_bool("method", n.method.get(), false);
15508 }
15509 Node::ObjectTypeCallProperty(n) => {
15510 d.field_node("value", Some(n.value), false);
15511 d.field_bool("static", n.r#static.get(), false);
15512 }
15513 Node::ObjectTypeIndexer(n) => {
15514 d.field_node("id", n.id, false);
15515 d.field_node("key", Some(n.key), false);
15516 d.field_node("value", Some(n.value), false);
15517 d.field_bool("static", n.r#static.get(), false);
15518 d.field_node("variance", n.variance, false);
15519 }
15520 Node::ObjectTypeMappedTypeProperty(n) => {
15521 d.field_node("keyTparam", Some(n.key_tparam), false);
15522 d.field_node("propType", Some(n.prop_type), false);
15523 d.field_node("sourceType", Some(n.source_type), false);
15524 d.field_node("variance", n.variance, false);
15525 d.field_label("optional", n.optional.get(), false);
15526 }
15527 Node::Variance(n) => {
15528 d.field_label("kind", n.kind.get(), false);
15529 }
15530 Node::TypeParameterDeclaration(n) => {
15531 d.field_list("params", n.params, false);
15532 }
15533 Node::TypeParameter(n) => {
15534 d.field_label("name", n.name.get(), false);
15535 d.field_bool("const", n.r#const.get(), true);
15536 d.field_node("bound", n.bound, false);
15537 d.field_node("variance", n.variance, false);
15538 d.field_node("default", n.default, false);
15539 d.field_bool("usesExtendsBound", n.uses_extends_bound.get(), true);
15540 }
15541 Node::TypeParameterInstantiation(n) => {
15542 d.field_list("params", n.params, false);
15543 }
15544 Node::TypeCastExpression(n) => {
15545 d.field_node("expression", Some(n.expression), false);
15546 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15547 }
15548 Node::AsExpression(n) => {
15549 d.field_node("expression", Some(n.expression), false);
15550 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15551 }
15552 Node::AsConstExpression(n) => {
15553 d.field_node("expression", Some(n.expression), false);
15554 }
15555 Node::InferredPredicate(_) => {}
15556 Node::DeclaredPredicate(n) => {
15557 d.field_node("value", Some(n.value), false);
15558 }
15559 Node::EnumDeclaration(n) => {
15560 d.field_node("id", Some(n.id), false);
15561 d.field_node("body", Some(n.body), false);
15562 }
15563 Node::EnumStringBody(n) => {
15564 d.field_list("members", n.members, false);
15565 d.field_bool("explicitType", n.explicit_type.get(), false);
15566 d.field_bool("hasUnknownMembers", n.has_unknown_members.get(), false);
15567 }
15568 Node::EnumNumberBody(n) => {
15569 d.field_list("members", n.members, false);
15570 d.field_bool("explicitType", n.explicit_type.get(), false);
15571 d.field_bool("hasUnknownMembers", n.has_unknown_members.get(), false);
15572 }
15573 Node::EnumBigIntBody(n) => {
15574 d.field_list("members", n.members, false);
15575 d.field_bool("explicitType", n.explicit_type.get(), false);
15576 d.field_bool("hasUnknownMembers", n.has_unknown_members.get(), false);
15577 }
15578 Node::EnumBooleanBody(n) => {
15579 d.field_list("members", n.members, false);
15580 d.field_bool("explicitType", n.explicit_type.get(), false);
15581 d.field_bool("hasUnknownMembers", n.has_unknown_members.get(), false);
15582 }
15583 Node::EnumSymbolBody(n) => {
15584 d.field_list("members", n.members, false);
15585 d.field_bool("hasUnknownMembers", n.has_unknown_members.get(), false);
15586 }
15587 Node::EnumDefaultedMember(n) => {
15588 d.field_node("id", Some(n.id), false);
15589 }
15590 Node::EnumStringMember(n) => {
15591 d.field_node("id", Some(n.id), false);
15592 d.field_node("init", Some(n.init), false);
15593 }
15594 Node::EnumNumberMember(n) => {
15595 d.field_node("id", Some(n.id), false);
15596 d.field_node("init", Some(n.init), false);
15597 }
15598 Node::EnumBigIntMember(n) => {
15599 d.field_node("id", Some(n.id), false);
15600 d.field_node("init", Some(n.init), false);
15601 }
15602 Node::EnumBooleanMember(n) => {
15603 d.field_node("id", Some(n.id), false);
15604 d.field_node("init", Some(n.init), false);
15605 }
15606 Node::ComponentParameter(n) => {
15607 d.field_node("name", Some(n.name), false);
15608 d.field_node("local", Some(n.local), false);
15609 d.field_bool("shorthand", n.shorthand.get(), false);
15610 }
15611 Node::RecordDeclaration(n) => {
15612 d.field_node("id", Some(n.id), false);
15613 d.field_node("typeParameters", n.type_parameters, false);
15614 d.field_list("implements", n.implements, false);
15615 d.field_node("body", Some(n.body), false);
15616 }
15617 Node::RecordDeclarationImplements(n) => {
15618 d.field_node("id", Some(n.id), false);
15619 d.field_node("typeArguments", n.type_arguments, false);
15620 }
15621 Node::RecordDeclarationBody(n) => {
15622 d.field_list("elements", n.elements, false);
15623 }
15624 Node::RecordDeclarationProperty(n) => {
15625 d.field_node("key", Some(n.key), false);
15626 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15627 d.field_node("defaultValue", n.default_value, false);
15628 }
15629 Node::RecordDeclarationStaticProperty(n) => {
15630 d.field_node("key", Some(n.key), false);
15631 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15632 d.field_node("value", Some(n.value), false);
15633 }
15634 Node::RecordExpression(n) => {
15635 d.field_node("recordConstructor", Some(n.record_constructor), false);
15636 d.field_node("typeArguments", n.type_arguments, false);
15637 d.field_node("properties", Some(n.properties), false);
15638 }
15639 Node::RecordExpressionProperties(n) => {
15640 d.field_list("properties", n.properties, false);
15641 }
15642 Node::TSTypeAnnotation(n) => {
15643 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15644 }
15645 Node::TSAnyKeyword(_) => {}
15646 Node::TSNumberKeyword(_) => {}
15647 Node::TSBooleanKeyword(_) => {}
15648 Node::TSStringKeyword(_) => {}
15649 Node::TSSymbolKeyword(_) => {}
15650 Node::TSVoidKeyword(_) => {}
15651 Node::TSUndefinedKeyword(_) => {}
15652 Node::TSUnknownKeyword(_) => {}
15653 Node::TSNeverKeyword(_) => {}
15654 Node::TSBigIntKeyword(_) => {}
15655 Node::TSThisType(_) => {}
15656 Node::TSLiteralType(n) => {
15657 d.field_node("literal", Some(n.literal), false);
15658 }
15659 Node::TSIndexedAccessType(n) => {
15660 d.field_node("objectType", Some(n.object_type), false);
15661 d.field_node("indexType", Some(n.index_type), false);
15662 }
15663 Node::TSArrayType(n) => {
15664 d.field_node("elementType", Some(n.element_type), false);
15665 }
15666 Node::TSTypeReference(n) => {
15667 d.field_node("typeName", Some(n.type_name), false);
15668 d.field_node("typeParameters", n.type_parameters, false);
15669 }
15670 Node::TSQualifiedName(n) => {
15671 d.field_node("left", Some(n.left), false);
15672 d.field_node("right", n.right, false);
15673 }
15674 Node::TSFunctionType(n) => {
15675 d.field_list("params", n.params, false);
15676 d.field_node("returnType", Some(n.return_type), false);
15677 d.field_node("typeParameters", n.type_parameters, false);
15678 }
15679 Node::TSConstructorType(n) => {
15680 d.field_list("params", n.params, false);
15681 d.field_node("returnType", Some(n.return_type), false);
15682 d.field_node("typeParameters", n.type_parameters, false);
15683 }
15684 Node::TSTypePredicate(n) => {
15685 d.field_node("parameterName", Some(n.parameter_name), false);
15686 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15687 }
15688 Node::TSTupleType(n) => {
15689 d.field_list("elementTypes", n.element_types, false);
15690 }
15691 Node::TSTypeAssertion(n) => {
15692 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15693 d.field_node("expression", Some(n.expression), false);
15694 }
15695 Node::TSAsExpression(n) => {
15696 d.field_node("expression", Some(n.expression), false);
15697 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15698 }
15699 Node::TSParameterProperty(n) => {
15700 d.field_node("parameter", Some(n.parameter), false);
15701 d.field_label("accessibility", n.accessibility.get(), false);
15702 d.field_bool("readonly", n.readonly.get(), false);
15703 d.field_bool("static", n.r#static.get(), false);
15704 d.field_bool("export", n.export.get(), false);
15705 }
15706 Node::TSTypeAliasDeclaration(n) => {
15707 d.field_node("id", Some(n.id), false);
15708 d.field_node("typeParameters", n.type_parameters, false);
15709 d.field_node("typeAnnotation", Some(n.type_annotation), false);
15710 }
15711 Node::TSInterfaceDeclaration(n) => {
15712 d.field_node("id", Some(n.id), false);
15713 d.field_node("body", Some(n.body), false);
15714 d.field_list("extends", n.extends, false);
15715 d.field_node("typeParameters", n.type_parameters, false);
15716 }
15717 Node::TSInterfaceHeritage(n) => {
15718 d.field_node("expression", Some(n.expression), false);
15719 d.field_node("typeParameters", n.type_parameters, false);
15720 }
15721 Node::TSInterfaceBody(n) => {
15722 d.field_list("body", n.body, false);
15723 }
15724 Node::TSEnumDeclaration(n) => {
15725 d.field_node("id", Some(n.id), false);
15726 d.field_list("members", n.members, false);
15727 }
15728 Node::TSEnumMember(n) => {
15729 d.field_node("id", Some(n.id), false);
15730 d.field_node("initializer", n.initializer, false);
15731 }
15732 Node::TSModuleDeclaration(n) => {
15733 d.field_node("id", Some(n.id), false);
15734 d.field_node("body", Some(n.body), false);
15735 }
15736 Node::TSModuleBlock(n) => {
15737 d.field_list("body", n.body, false);
15738 }
15739 Node::TSModuleMember(n) => {
15740 d.field_node("id", Some(n.id), false);
15741 d.field_node("initializer", n.initializer, false);
15742 }
15743 Node::TSTypeParameterDeclaration(n) => {
15744 d.field_list("params", n.params, false);
15745 }
15746 Node::TSTypeParameter(n) => {
15747 d.field_node("name", Some(n.name), false);
15748 d.field_node("constraint", n.constraint, false);
15749 d.field_node("default", n.default, false);
15750 }
15751 Node::TSTypeParameterInstantiation(n) => {
15752 d.field_list("params", n.params, false);
15753 }
15754 Node::TSUnionType(n) => {
15755 d.field_list("types", n.types, false);
15756 }
15757 Node::TSIntersectionType(n) => {
15758 d.field_list("types", n.types, false);
15759 }
15760 Node::TSTypeQuery(n) => {
15761 d.field_node("exprName", Some(n.expr_name), false);
15762 }
15763 Node::TSConditionalType(n) => {
15764 d.field_node("checkType", Some(n.check_type), false);
15765 d.field_node("extendsType", Some(n.extends_type), false);
15766 d.field_node("trueType", Some(n.true_type), false);
15767 d.field_node("falseType", Some(n.false_type), false);
15768 }
15769 Node::TSTypeLiteral(n) => {
15770 d.field_list("members", n.members, false);
15771 }
15772 Node::TSPropertySignature(n) => {
15773 d.field_node("key", Some(n.key), false);
15774 d.field_node("typeAnnotation", n.type_annotation, false);
15775 d.field_node("initializer", n.initializer, false);
15776 d.field_bool("optional", n.optional.get(), false);
15777 d.field_bool("computed", n.computed.get(), false);
15778 d.field_bool("readonly", n.readonly.get(), false);
15779 d.field_bool("static", n.r#static.get(), false);
15780 d.field_bool("export", n.export.get(), false);
15781 }
15782 Node::TSMethodSignature(n) => {
15783 d.field_node("key", Some(n.key), false);
15784 d.field_list("params", n.params, false);
15785 d.field_node("returnType", n.return_type, false);
15786 d.field_bool("computed", n.computed.get(), false);
15787 }
15788 Node::TSIndexSignature(n) => {
15789 d.field_list("parameters", n.parameters, false);
15790 d.field_node("typeAnnotation", n.type_annotation, false);
15791 }
15792 Node::TSCallSignatureDeclaration(n) => {
15793 d.field_list("params", n.params, false);
15794 d.field_node("returnType", n.return_type, false);
15795 }
15796 Node::TSModifiers(n) => {
15797 d.field_label("accessibility", n.accessibility.get(), false);
15798 d.field_bool("readonly", n.readonly.get(), false);
15799 }
15800 Node::CoverEmptyArgs(_) => {}
15801 Node::CoverTrailingComma(_) => {}
15802 Node::CoverInitializer(n) => {
15803 d.field_node("init", Some(n.init), false);
15804 }
15805 Node::CoverRestElement(n) => {
15806 d.field_node("rest", Some(n.rest), false);
15807 }
15808 Node::CoverTypedIdentifier(n) => {
15809 d.field_node("left", Some(n.left), false);
15810 d.field_node("right", n.right, false);
15811 d.field_bool("optional", n.optional.get(), false);
15812 }
15813 Node::SHBuiltin(_) => {}
15814 Node::ImplicitCheckedCast(n) => {
15815 d.field_node("argument", Some(n.argument), false);
15816 }
15817 }
15818 }
15819}
15820
15821pub mod builder {
15825 use std::cell::Cell;
15826 use super::*;
15827 use crate::node_child::NodeChild;
15828 use crate::visitor::TransformResult;
15829
15830 #[derive(Debug)]
15832 pub enum Builder<'gc> {
15833 Empty(self::Empty<'gc>),
15835 Metadata(self::Metadata<'gc>),
15837 Program(self::Program<'gc>),
15839 FunctionExpression(self::FunctionExpression<'gc>),
15841 ArrowFunctionExpression(self::ArrowFunctionExpression<'gc>),
15843 FunctionDeclaration(self::FunctionDeclaration<'gc>),
15845 ComponentDeclaration(self::ComponentDeclaration<'gc>),
15847 HookDeclaration(self::HookDeclaration<'gc>),
15849 MatchStatement(self::MatchStatement<'gc>),
15851 WhileStatement(self::WhileStatement<'gc>),
15853 DoWhileStatement(self::DoWhileStatement<'gc>),
15855 ForInStatement(self::ForInStatement<'gc>),
15857 ForOfStatement(self::ForOfStatement<'gc>),
15859 ForStatement(self::ForStatement<'gc>),
15861 DebuggerStatement(self::DebuggerStatement<'gc>),
15863 EmptyStatement(self::EmptyStatement<'gc>),
15865 BlockStatement(self::BlockStatement<'gc>),
15867 StaticBlock(self::StaticBlock<'gc>),
15869 BreakStatement(self::BreakStatement<'gc>),
15871 ContinueStatement(self::ContinueStatement<'gc>),
15873 ThrowStatement(self::ThrowStatement<'gc>),
15875 ReturnStatement(self::ReturnStatement<'gc>),
15877 WithStatement(self::WithStatement<'gc>),
15879 SwitchStatement(self::SwitchStatement<'gc>),
15881 LabeledStatement(self::LabeledStatement<'gc>),
15883 ExpressionStatement(self::ExpressionStatement<'gc>),
15885 TryStatement(self::TryStatement<'gc>),
15887 IfStatement(self::IfStatement<'gc>),
15889 NullLiteral(self::NullLiteral<'gc>),
15891 BooleanLiteral(self::BooleanLiteral<'gc>),
15893 StringLiteral(self::StringLiteral<'gc>),
15895 NumericLiteral(self::NumericLiteral<'gc>),
15897 RegExpLiteral(self::RegExpLiteral<'gc>),
15899 BigIntLiteral(self::BigIntLiteral<'gc>),
15901 ThisExpression(self::ThisExpression<'gc>),
15903 Super(self::Super<'gc>),
15905 SequenceExpression(self::SequenceExpression<'gc>),
15907 ObjectExpression(self::ObjectExpression<'gc>),
15909 ArrayExpression(self::ArrayExpression<'gc>),
15911 SpreadElement(self::SpreadElement<'gc>),
15913 NewExpression(self::NewExpression<'gc>),
15915 YieldExpression(self::YieldExpression<'gc>),
15917 AwaitExpression(self::AwaitExpression<'gc>),
15919 ImportExpression(self::ImportExpression<'gc>),
15921 CallExpression(self::CallExpression<'gc>),
15923 OptionalCallExpression(self::OptionalCallExpression<'gc>),
15925 AssignmentExpression(self::AssignmentExpression<'gc>),
15927 UnaryExpression(self::UnaryExpression<'gc>),
15929 UpdateExpression(self::UpdateExpression<'gc>),
15931 MemberExpression(self::MemberExpression<'gc>),
15933 OptionalMemberExpression(self::OptionalMemberExpression<'gc>),
15935 LogicalExpression(self::LogicalExpression<'gc>),
15937 ConditionalExpression(self::ConditionalExpression<'gc>),
15939 BinaryExpression(self::BinaryExpression<'gc>),
15941 Directive(self::Directive<'gc>),
15943 DirectiveLiteral(self::DirectiveLiteral<'gc>),
15945 Identifier(self::Identifier<'gc>),
15947 PrivateName(self::PrivateName<'gc>),
15949 MetaProperty(self::MetaProperty<'gc>),
15951 SwitchCase(self::SwitchCase<'gc>),
15953 CatchClause(self::CatchClause<'gc>),
15955 VariableDeclarator(self::VariableDeclarator<'gc>),
15957 VariableDeclaration(self::VariableDeclaration<'gc>),
15959 TemplateLiteral(self::TemplateLiteral<'gc>),
15961 TaggedTemplateExpression(self::TaggedTemplateExpression<'gc>),
15963 TemplateElement(self::TemplateElement<'gc>),
15965 Property(self::Property<'gc>),
15967 Decorator(self::Decorator<'gc>),
15969 ClassDeclaration(self::ClassDeclaration<'gc>),
15971 ClassExpression(self::ClassExpression<'gc>),
15973 ClassBody(self::ClassBody<'gc>),
15975 ClassProperty(self::ClassProperty<'gc>),
15977 ClassPrivateProperty(self::ClassPrivateProperty<'gc>),
15979 MethodDefinition(self::MethodDefinition<'gc>),
15981 ImportDeclaration(self::ImportDeclaration<'gc>),
15983 ImportSpecifier(self::ImportSpecifier<'gc>),
15985 ImportDefaultSpecifier(self::ImportDefaultSpecifier<'gc>),
15987 ImportNamespaceSpecifier(self::ImportNamespaceSpecifier<'gc>),
15989 ImportAttribute(self::ImportAttribute<'gc>),
15991 ExportNamedDeclaration(self::ExportNamedDeclaration<'gc>),
15993 ExportSpecifier(self::ExportSpecifier<'gc>),
15995 ExportNamespaceSpecifier(self::ExportNamespaceSpecifier<'gc>),
15997 ExportDefaultDeclaration(self::ExportDefaultDeclaration<'gc>),
15999 ExportAllDeclaration(self::ExportAllDeclaration<'gc>),
16001 ObjectPattern(self::ObjectPattern<'gc>),
16003 ArrayPattern(self::ArrayPattern<'gc>),
16005 RestElement(self::RestElement<'gc>),
16007 AssignmentPattern(self::AssignmentPattern<'gc>),
16009 MatchStatementCase(self::MatchStatementCase<'gc>),
16011 MatchExpression(self::MatchExpression<'gc>),
16013 MatchExpressionCase(self::MatchExpressionCase<'gc>),
16015 MatchWildcardPattern(self::MatchWildcardPattern<'gc>),
16017 MatchLiteralPattern(self::MatchLiteralPattern<'gc>),
16019 MatchUnaryPattern(self::MatchUnaryPattern<'gc>),
16021 MatchIdentifierPattern(self::MatchIdentifierPattern<'gc>),
16023 MatchBindingPattern(self::MatchBindingPattern<'gc>),
16025 MatchObjectPattern(self::MatchObjectPattern<'gc>),
16027 MatchArrayPattern(self::MatchArrayPattern<'gc>),
16029 MatchOrPattern(self::MatchOrPattern<'gc>),
16031 MatchAsPattern(self::MatchAsPattern<'gc>),
16033 MatchMemberPattern(self::MatchMemberPattern<'gc>),
16035 MatchInstancePattern(self::MatchInstancePattern<'gc>),
16037 MatchObjectPatternProperty(self::MatchObjectPatternProperty<'gc>),
16039 MatchInstanceObjectPattern(self::MatchInstanceObjectPattern<'gc>),
16041 MatchRestPattern(self::MatchRestPattern<'gc>),
16043 JSXIdentifier(self::JSXIdentifier<'gc>),
16045 JSXMemberExpression(self::JSXMemberExpression<'gc>),
16047 JSXNamespacedName(self::JSXNamespacedName<'gc>),
16049 JSXEmptyExpression(self::JSXEmptyExpression<'gc>),
16051 JSXExpressionContainer(self::JSXExpressionContainer<'gc>),
16053 JSXSpreadChild(self::JSXSpreadChild<'gc>),
16055 JSXOpeningElement(self::JSXOpeningElement<'gc>),
16057 JSXClosingElement(self::JSXClosingElement<'gc>),
16059 JSXAttribute(self::JSXAttribute<'gc>),
16061 JSXSpreadAttribute(self::JSXSpreadAttribute<'gc>),
16063 JSXStringLiteral(self::JSXStringLiteral<'gc>),
16065 JSXText(self::JSXText<'gc>),
16067 JSXElement(self::JSXElement<'gc>),
16069 JSXFragment(self::JSXFragment<'gc>),
16071 JSXOpeningFragment(self::JSXOpeningFragment<'gc>),
16073 JSXClosingFragment(self::JSXClosingFragment<'gc>),
16075 ExistsTypeAnnotation(self::ExistsTypeAnnotation<'gc>),
16077 EmptyTypeAnnotation(self::EmptyTypeAnnotation<'gc>),
16079 StringTypeAnnotation(self::StringTypeAnnotation<'gc>),
16081 NumberTypeAnnotation(self::NumberTypeAnnotation<'gc>),
16083 StringLiteralTypeAnnotation(self::StringLiteralTypeAnnotation<'gc>),
16085 NumberLiteralTypeAnnotation(self::NumberLiteralTypeAnnotation<'gc>),
16087 BigIntLiteralTypeAnnotation(self::BigIntLiteralTypeAnnotation<'gc>),
16089 BooleanTypeAnnotation(self::BooleanTypeAnnotation<'gc>),
16091 BooleanLiteralTypeAnnotation(self::BooleanLiteralTypeAnnotation<'gc>),
16093 NullLiteralTypeAnnotation(self::NullLiteralTypeAnnotation<'gc>),
16095 SymbolTypeAnnotation(self::SymbolTypeAnnotation<'gc>),
16097 AnyTypeAnnotation(self::AnyTypeAnnotation<'gc>),
16099 MixedTypeAnnotation(self::MixedTypeAnnotation<'gc>),
16101 BigIntTypeAnnotation(self::BigIntTypeAnnotation<'gc>),
16103 VoidTypeAnnotation(self::VoidTypeAnnotation<'gc>),
16105 NeverTypeAnnotation(self::NeverTypeAnnotation<'gc>),
16107 UnknownTypeAnnotation(self::UnknownTypeAnnotation<'gc>),
16109 UndefinedTypeAnnotation(self::UndefinedTypeAnnotation<'gc>),
16111 FunctionTypeAnnotation(self::FunctionTypeAnnotation<'gc>),
16113 HookTypeAnnotation(self::HookTypeAnnotation<'gc>),
16115 FunctionTypeParam(self::FunctionTypeParam<'gc>),
16117 ComponentTypeAnnotation(self::ComponentTypeAnnotation<'gc>),
16119 ComponentTypeParameter(self::ComponentTypeParameter<'gc>),
16121 NullableTypeAnnotation(self::NullableTypeAnnotation<'gc>),
16123 QualifiedTypeIdentifier(self::QualifiedTypeIdentifier<'gc>),
16125 TypeofTypeAnnotation(self::TypeofTypeAnnotation<'gc>),
16127 KeyofTypeAnnotation(self::KeyofTypeAnnotation<'gc>),
16129 TypeOperator(self::TypeOperator<'gc>),
16131 QualifiedTypeofIdentifier(self::QualifiedTypeofIdentifier<'gc>),
16133 TupleTypeAnnotation(self::TupleTypeAnnotation<'gc>),
16135 TupleTypeSpreadElement(self::TupleTypeSpreadElement<'gc>),
16137 TupleTypeLabeledElement(self::TupleTypeLabeledElement<'gc>),
16139 ArrayTypeAnnotation(self::ArrayTypeAnnotation<'gc>),
16141 InferTypeAnnotation(self::InferTypeAnnotation<'gc>),
16143 UnionTypeAnnotation(self::UnionTypeAnnotation<'gc>),
16145 IntersectionTypeAnnotation(self::IntersectionTypeAnnotation<'gc>),
16147 GenericTypeAnnotation(self::GenericTypeAnnotation<'gc>),
16149 IndexedAccessType(self::IndexedAccessType<'gc>),
16151 OptionalIndexedAccessType(self::OptionalIndexedAccessType<'gc>),
16153 ConditionalTypeAnnotation(self::ConditionalTypeAnnotation<'gc>),
16155 TypePredicate(self::TypePredicate<'gc>),
16157 InterfaceTypeAnnotation(self::InterfaceTypeAnnotation<'gc>),
16159 TypeAlias(self::TypeAlias<'gc>),
16161 OpaqueType(self::OpaqueType<'gc>),
16163 InterfaceDeclaration(self::InterfaceDeclaration<'gc>),
16165 DeclareTypeAlias(self::DeclareTypeAlias<'gc>),
16167 DeclareOpaqueType(self::DeclareOpaqueType<'gc>),
16169 DeclareInterface(self::DeclareInterface<'gc>),
16171 DeclareClass(self::DeclareClass<'gc>),
16173 DeclareFunction(self::DeclareFunction<'gc>),
16175 DeclareHook(self::DeclareHook<'gc>),
16177 DeclareComponent(self::DeclareComponent<'gc>),
16179 DeclareVariable(self::DeclareVariable<'gc>),
16181 DeclareEnum(self::DeclareEnum<'gc>),
16183 DeclareExportDeclaration(self::DeclareExportDeclaration<'gc>),
16185 DeclareExportAllDeclaration(self::DeclareExportAllDeclaration<'gc>),
16187 DeclareModule(self::DeclareModule<'gc>),
16189 DeclareNamespace(self::DeclareNamespace<'gc>),
16191 DeclareModuleExports(self::DeclareModuleExports<'gc>),
16193 InterfaceExtends(self::InterfaceExtends<'gc>),
16195 ClassImplements(self::ClassImplements<'gc>),
16197 TypeAnnotation(self::TypeAnnotation<'gc>),
16199 ObjectTypeAnnotation(self::ObjectTypeAnnotation<'gc>),
16201 ObjectTypeProperty(self::ObjectTypeProperty<'gc>),
16203 ObjectTypeSpreadProperty(self::ObjectTypeSpreadProperty<'gc>),
16205 ObjectTypeInternalSlot(self::ObjectTypeInternalSlot<'gc>),
16207 ObjectTypeCallProperty(self::ObjectTypeCallProperty<'gc>),
16209 ObjectTypeIndexer(self::ObjectTypeIndexer<'gc>),
16211 ObjectTypeMappedTypeProperty(self::ObjectTypeMappedTypeProperty<'gc>),
16213 Variance(self::Variance<'gc>),
16215 TypeParameterDeclaration(self::TypeParameterDeclaration<'gc>),
16217 TypeParameter(self::TypeParameter<'gc>),
16219 TypeParameterInstantiation(self::TypeParameterInstantiation<'gc>),
16221 TypeCastExpression(self::TypeCastExpression<'gc>),
16223 AsExpression(self::AsExpression<'gc>),
16225 AsConstExpression(self::AsConstExpression<'gc>),
16227 InferredPredicate(self::InferredPredicate<'gc>),
16229 DeclaredPredicate(self::DeclaredPredicate<'gc>),
16231 EnumDeclaration(self::EnumDeclaration<'gc>),
16233 EnumStringBody(self::EnumStringBody<'gc>),
16235 EnumNumberBody(self::EnumNumberBody<'gc>),
16237 EnumBigIntBody(self::EnumBigIntBody<'gc>),
16239 EnumBooleanBody(self::EnumBooleanBody<'gc>),
16241 EnumSymbolBody(self::EnumSymbolBody<'gc>),
16243 EnumDefaultedMember(self::EnumDefaultedMember<'gc>),
16245 EnumStringMember(self::EnumStringMember<'gc>),
16247 EnumNumberMember(self::EnumNumberMember<'gc>),
16249 EnumBigIntMember(self::EnumBigIntMember<'gc>),
16251 EnumBooleanMember(self::EnumBooleanMember<'gc>),
16253 ComponentParameter(self::ComponentParameter<'gc>),
16255 RecordDeclaration(self::RecordDeclaration<'gc>),
16257 RecordDeclarationImplements(self::RecordDeclarationImplements<'gc>),
16259 RecordDeclarationBody(self::RecordDeclarationBody<'gc>),
16261 RecordDeclarationProperty(self::RecordDeclarationProperty<'gc>),
16263 RecordDeclarationStaticProperty(self::RecordDeclarationStaticProperty<'gc>),
16265 RecordExpression(self::RecordExpression<'gc>),
16267 RecordExpressionProperties(self::RecordExpressionProperties<'gc>),
16269 TSTypeAnnotation(self::TSTypeAnnotation<'gc>),
16271 TSAnyKeyword(self::TSAnyKeyword<'gc>),
16273 TSNumberKeyword(self::TSNumberKeyword<'gc>),
16275 TSBooleanKeyword(self::TSBooleanKeyword<'gc>),
16277 TSStringKeyword(self::TSStringKeyword<'gc>),
16279 TSSymbolKeyword(self::TSSymbolKeyword<'gc>),
16281 TSVoidKeyword(self::TSVoidKeyword<'gc>),
16283 TSUndefinedKeyword(self::TSUndefinedKeyword<'gc>),
16285 TSUnknownKeyword(self::TSUnknownKeyword<'gc>),
16287 TSNeverKeyword(self::TSNeverKeyword<'gc>),
16289 TSBigIntKeyword(self::TSBigIntKeyword<'gc>),
16291 TSThisType(self::TSThisType<'gc>),
16293 TSLiteralType(self::TSLiteralType<'gc>),
16295 TSIndexedAccessType(self::TSIndexedAccessType<'gc>),
16297 TSArrayType(self::TSArrayType<'gc>),
16299 TSTypeReference(self::TSTypeReference<'gc>),
16301 TSQualifiedName(self::TSQualifiedName<'gc>),
16303 TSFunctionType(self::TSFunctionType<'gc>),
16305 TSConstructorType(self::TSConstructorType<'gc>),
16307 TSTypePredicate(self::TSTypePredicate<'gc>),
16309 TSTupleType(self::TSTupleType<'gc>),
16311 TSTypeAssertion(self::TSTypeAssertion<'gc>),
16313 TSAsExpression(self::TSAsExpression<'gc>),
16315 TSParameterProperty(self::TSParameterProperty<'gc>),
16317 TSTypeAliasDeclaration(self::TSTypeAliasDeclaration<'gc>),
16319 TSInterfaceDeclaration(self::TSInterfaceDeclaration<'gc>),
16321 TSInterfaceHeritage(self::TSInterfaceHeritage<'gc>),
16323 TSInterfaceBody(self::TSInterfaceBody<'gc>),
16325 TSEnumDeclaration(self::TSEnumDeclaration<'gc>),
16327 TSEnumMember(self::TSEnumMember<'gc>),
16329 TSModuleDeclaration(self::TSModuleDeclaration<'gc>),
16331 TSModuleBlock(self::TSModuleBlock<'gc>),
16333 TSModuleMember(self::TSModuleMember<'gc>),
16335 TSTypeParameterDeclaration(self::TSTypeParameterDeclaration<'gc>),
16337 TSTypeParameter(self::TSTypeParameter<'gc>),
16339 TSTypeParameterInstantiation(self::TSTypeParameterInstantiation<'gc>),
16341 TSUnionType(self::TSUnionType<'gc>),
16343 TSIntersectionType(self::TSIntersectionType<'gc>),
16345 TSTypeQuery(self::TSTypeQuery<'gc>),
16347 TSConditionalType(self::TSConditionalType<'gc>),
16349 TSTypeLiteral(self::TSTypeLiteral<'gc>),
16351 TSPropertySignature(self::TSPropertySignature<'gc>),
16353 TSMethodSignature(self::TSMethodSignature<'gc>),
16355 TSIndexSignature(self::TSIndexSignature<'gc>),
16357 TSCallSignatureDeclaration(self::TSCallSignatureDeclaration<'gc>),
16359 TSModifiers(self::TSModifiers<'gc>),
16361 CoverEmptyArgs(self::CoverEmptyArgs<'gc>),
16363 CoverTrailingComma(self::CoverTrailingComma<'gc>),
16365 CoverInitializer(self::CoverInitializer<'gc>),
16367 CoverRestElement(self::CoverRestElement<'gc>),
16369 CoverTypedIdentifier(self::CoverTypedIdentifier<'gc>),
16371 SHBuiltin(self::SHBuiltin<'gc>),
16373 ImplicitCheckedCast(self::ImplicitCheckedCast<'gc>),
16375 }
16376
16377 impl<'gc> Builder<'gc> {
16378 pub fn from_node(node: &'gc Node<'gc>) -> Self {
16380 match node {
16381 Node::Empty(n) => Builder::Empty(self::Empty::from_node(n)),
16382 Node::Metadata(n) => Builder::Metadata(self::Metadata::from_node(n)),
16383 Node::Program(n) => Builder::Program(self::Program::from_node(n)),
16384 Node::FunctionExpression(n) => Builder::FunctionExpression(self::FunctionExpression::from_node(n)),
16385 Node::ArrowFunctionExpression(n) => Builder::ArrowFunctionExpression(self::ArrowFunctionExpression::from_node(n)),
16386 Node::FunctionDeclaration(n) => Builder::FunctionDeclaration(self::FunctionDeclaration::from_node(n)),
16387 Node::ComponentDeclaration(n) => Builder::ComponentDeclaration(self::ComponentDeclaration::from_node(n)),
16388 Node::HookDeclaration(n) => Builder::HookDeclaration(self::HookDeclaration::from_node(n)),
16389 Node::MatchStatement(n) => Builder::MatchStatement(self::MatchStatement::from_node(n)),
16390 Node::WhileStatement(n) => Builder::WhileStatement(self::WhileStatement::from_node(n)),
16391 Node::DoWhileStatement(n) => Builder::DoWhileStatement(self::DoWhileStatement::from_node(n)),
16392 Node::ForInStatement(n) => Builder::ForInStatement(self::ForInStatement::from_node(n)),
16393 Node::ForOfStatement(n) => Builder::ForOfStatement(self::ForOfStatement::from_node(n)),
16394 Node::ForStatement(n) => Builder::ForStatement(self::ForStatement::from_node(n)),
16395 Node::DebuggerStatement(n) => Builder::DebuggerStatement(self::DebuggerStatement::from_node(n)),
16396 Node::EmptyStatement(n) => Builder::EmptyStatement(self::EmptyStatement::from_node(n)),
16397 Node::BlockStatement(n) => Builder::BlockStatement(self::BlockStatement::from_node(n)),
16398 Node::StaticBlock(n) => Builder::StaticBlock(self::StaticBlock::from_node(n)),
16399 Node::BreakStatement(n) => Builder::BreakStatement(self::BreakStatement::from_node(n)),
16400 Node::ContinueStatement(n) => Builder::ContinueStatement(self::ContinueStatement::from_node(n)),
16401 Node::ThrowStatement(n) => Builder::ThrowStatement(self::ThrowStatement::from_node(n)),
16402 Node::ReturnStatement(n) => Builder::ReturnStatement(self::ReturnStatement::from_node(n)),
16403 Node::WithStatement(n) => Builder::WithStatement(self::WithStatement::from_node(n)),
16404 Node::SwitchStatement(n) => Builder::SwitchStatement(self::SwitchStatement::from_node(n)),
16405 Node::LabeledStatement(n) => Builder::LabeledStatement(self::LabeledStatement::from_node(n)),
16406 Node::ExpressionStatement(n) => Builder::ExpressionStatement(self::ExpressionStatement::from_node(n)),
16407 Node::TryStatement(n) => Builder::TryStatement(self::TryStatement::from_node(n)),
16408 Node::IfStatement(n) => Builder::IfStatement(self::IfStatement::from_node(n)),
16409 Node::NullLiteral(n) => Builder::NullLiteral(self::NullLiteral::from_node(n)),
16410 Node::BooleanLiteral(n) => Builder::BooleanLiteral(self::BooleanLiteral::from_node(n)),
16411 Node::StringLiteral(n) => Builder::StringLiteral(self::StringLiteral::from_node(n)),
16412 Node::NumericLiteral(n) => Builder::NumericLiteral(self::NumericLiteral::from_node(n)),
16413 Node::RegExpLiteral(n) => Builder::RegExpLiteral(self::RegExpLiteral::from_node(n)),
16414 Node::BigIntLiteral(n) => Builder::BigIntLiteral(self::BigIntLiteral::from_node(n)),
16415 Node::ThisExpression(n) => Builder::ThisExpression(self::ThisExpression::from_node(n)),
16416 Node::Super(n) => Builder::Super(self::Super::from_node(n)),
16417 Node::SequenceExpression(n) => Builder::SequenceExpression(self::SequenceExpression::from_node(n)),
16418 Node::ObjectExpression(n) => Builder::ObjectExpression(self::ObjectExpression::from_node(n)),
16419 Node::ArrayExpression(n) => Builder::ArrayExpression(self::ArrayExpression::from_node(n)),
16420 Node::SpreadElement(n) => Builder::SpreadElement(self::SpreadElement::from_node(n)),
16421 Node::NewExpression(n) => Builder::NewExpression(self::NewExpression::from_node(n)),
16422 Node::YieldExpression(n) => Builder::YieldExpression(self::YieldExpression::from_node(n)),
16423 Node::AwaitExpression(n) => Builder::AwaitExpression(self::AwaitExpression::from_node(n)),
16424 Node::ImportExpression(n) => Builder::ImportExpression(self::ImportExpression::from_node(n)),
16425 Node::CallExpression(n) => Builder::CallExpression(self::CallExpression::from_node(n)),
16426 Node::OptionalCallExpression(n) => Builder::OptionalCallExpression(self::OptionalCallExpression::from_node(n)),
16427 Node::AssignmentExpression(n) => Builder::AssignmentExpression(self::AssignmentExpression::from_node(n)),
16428 Node::UnaryExpression(n) => Builder::UnaryExpression(self::UnaryExpression::from_node(n)),
16429 Node::UpdateExpression(n) => Builder::UpdateExpression(self::UpdateExpression::from_node(n)),
16430 Node::MemberExpression(n) => Builder::MemberExpression(self::MemberExpression::from_node(n)),
16431 Node::OptionalMemberExpression(n) => Builder::OptionalMemberExpression(self::OptionalMemberExpression::from_node(n)),
16432 Node::LogicalExpression(n) => Builder::LogicalExpression(self::LogicalExpression::from_node(n)),
16433 Node::ConditionalExpression(n) => Builder::ConditionalExpression(self::ConditionalExpression::from_node(n)),
16434 Node::BinaryExpression(n) => Builder::BinaryExpression(self::BinaryExpression::from_node(n)),
16435 Node::Directive(n) => Builder::Directive(self::Directive::from_node(n)),
16436 Node::DirectiveLiteral(n) => Builder::DirectiveLiteral(self::DirectiveLiteral::from_node(n)),
16437 Node::Identifier(n) => Builder::Identifier(self::Identifier::from_node(n)),
16438 Node::PrivateName(n) => Builder::PrivateName(self::PrivateName::from_node(n)),
16439 Node::MetaProperty(n) => Builder::MetaProperty(self::MetaProperty::from_node(n)),
16440 Node::SwitchCase(n) => Builder::SwitchCase(self::SwitchCase::from_node(n)),
16441 Node::CatchClause(n) => Builder::CatchClause(self::CatchClause::from_node(n)),
16442 Node::VariableDeclarator(n) => Builder::VariableDeclarator(self::VariableDeclarator::from_node(n)),
16443 Node::VariableDeclaration(n) => Builder::VariableDeclaration(self::VariableDeclaration::from_node(n)),
16444 Node::TemplateLiteral(n) => Builder::TemplateLiteral(self::TemplateLiteral::from_node(n)),
16445 Node::TaggedTemplateExpression(n) => Builder::TaggedTemplateExpression(self::TaggedTemplateExpression::from_node(n)),
16446 Node::TemplateElement(n) => Builder::TemplateElement(self::TemplateElement::from_node(n)),
16447 Node::Property(n) => Builder::Property(self::Property::from_node(n)),
16448 Node::Decorator(n) => Builder::Decorator(self::Decorator::from_node(n)),
16449 Node::ClassDeclaration(n) => Builder::ClassDeclaration(self::ClassDeclaration::from_node(n)),
16450 Node::ClassExpression(n) => Builder::ClassExpression(self::ClassExpression::from_node(n)),
16451 Node::ClassBody(n) => Builder::ClassBody(self::ClassBody::from_node(n)),
16452 Node::ClassProperty(n) => Builder::ClassProperty(self::ClassProperty::from_node(n)),
16453 Node::ClassPrivateProperty(n) => Builder::ClassPrivateProperty(self::ClassPrivateProperty::from_node(n)),
16454 Node::MethodDefinition(n) => Builder::MethodDefinition(self::MethodDefinition::from_node(n)),
16455 Node::ImportDeclaration(n) => Builder::ImportDeclaration(self::ImportDeclaration::from_node(n)),
16456 Node::ImportSpecifier(n) => Builder::ImportSpecifier(self::ImportSpecifier::from_node(n)),
16457 Node::ImportDefaultSpecifier(n) => Builder::ImportDefaultSpecifier(self::ImportDefaultSpecifier::from_node(n)),
16458 Node::ImportNamespaceSpecifier(n) => Builder::ImportNamespaceSpecifier(self::ImportNamespaceSpecifier::from_node(n)),
16459 Node::ImportAttribute(n) => Builder::ImportAttribute(self::ImportAttribute::from_node(n)),
16460 Node::ExportNamedDeclaration(n) => Builder::ExportNamedDeclaration(self::ExportNamedDeclaration::from_node(n)),
16461 Node::ExportSpecifier(n) => Builder::ExportSpecifier(self::ExportSpecifier::from_node(n)),
16462 Node::ExportNamespaceSpecifier(n) => Builder::ExportNamespaceSpecifier(self::ExportNamespaceSpecifier::from_node(n)),
16463 Node::ExportDefaultDeclaration(n) => Builder::ExportDefaultDeclaration(self::ExportDefaultDeclaration::from_node(n)),
16464 Node::ExportAllDeclaration(n) => Builder::ExportAllDeclaration(self::ExportAllDeclaration::from_node(n)),
16465 Node::ObjectPattern(n) => Builder::ObjectPattern(self::ObjectPattern::from_node(n)),
16466 Node::ArrayPattern(n) => Builder::ArrayPattern(self::ArrayPattern::from_node(n)),
16467 Node::RestElement(n) => Builder::RestElement(self::RestElement::from_node(n)),
16468 Node::AssignmentPattern(n) => Builder::AssignmentPattern(self::AssignmentPattern::from_node(n)),
16469 Node::MatchStatementCase(n) => Builder::MatchStatementCase(self::MatchStatementCase::from_node(n)),
16470 Node::MatchExpression(n) => Builder::MatchExpression(self::MatchExpression::from_node(n)),
16471 Node::MatchExpressionCase(n) => Builder::MatchExpressionCase(self::MatchExpressionCase::from_node(n)),
16472 Node::MatchWildcardPattern(n) => Builder::MatchWildcardPattern(self::MatchWildcardPattern::from_node(n)),
16473 Node::MatchLiteralPattern(n) => Builder::MatchLiteralPattern(self::MatchLiteralPattern::from_node(n)),
16474 Node::MatchUnaryPattern(n) => Builder::MatchUnaryPattern(self::MatchUnaryPattern::from_node(n)),
16475 Node::MatchIdentifierPattern(n) => Builder::MatchIdentifierPattern(self::MatchIdentifierPattern::from_node(n)),
16476 Node::MatchBindingPattern(n) => Builder::MatchBindingPattern(self::MatchBindingPattern::from_node(n)),
16477 Node::MatchObjectPattern(n) => Builder::MatchObjectPattern(self::MatchObjectPattern::from_node(n)),
16478 Node::MatchArrayPattern(n) => Builder::MatchArrayPattern(self::MatchArrayPattern::from_node(n)),
16479 Node::MatchOrPattern(n) => Builder::MatchOrPattern(self::MatchOrPattern::from_node(n)),
16480 Node::MatchAsPattern(n) => Builder::MatchAsPattern(self::MatchAsPattern::from_node(n)),
16481 Node::MatchMemberPattern(n) => Builder::MatchMemberPattern(self::MatchMemberPattern::from_node(n)),
16482 Node::MatchInstancePattern(n) => Builder::MatchInstancePattern(self::MatchInstancePattern::from_node(n)),
16483 Node::MatchObjectPatternProperty(n) => Builder::MatchObjectPatternProperty(self::MatchObjectPatternProperty::from_node(n)),
16484 Node::MatchInstanceObjectPattern(n) => Builder::MatchInstanceObjectPattern(self::MatchInstanceObjectPattern::from_node(n)),
16485 Node::MatchRestPattern(n) => Builder::MatchRestPattern(self::MatchRestPattern::from_node(n)),
16486 Node::JSXIdentifier(n) => Builder::JSXIdentifier(self::JSXIdentifier::from_node(n)),
16487 Node::JSXMemberExpression(n) => Builder::JSXMemberExpression(self::JSXMemberExpression::from_node(n)),
16488 Node::JSXNamespacedName(n) => Builder::JSXNamespacedName(self::JSXNamespacedName::from_node(n)),
16489 Node::JSXEmptyExpression(n) => Builder::JSXEmptyExpression(self::JSXEmptyExpression::from_node(n)),
16490 Node::JSXExpressionContainer(n) => Builder::JSXExpressionContainer(self::JSXExpressionContainer::from_node(n)),
16491 Node::JSXSpreadChild(n) => Builder::JSXSpreadChild(self::JSXSpreadChild::from_node(n)),
16492 Node::JSXOpeningElement(n) => Builder::JSXOpeningElement(self::JSXOpeningElement::from_node(n)),
16493 Node::JSXClosingElement(n) => Builder::JSXClosingElement(self::JSXClosingElement::from_node(n)),
16494 Node::JSXAttribute(n) => Builder::JSXAttribute(self::JSXAttribute::from_node(n)),
16495 Node::JSXSpreadAttribute(n) => Builder::JSXSpreadAttribute(self::JSXSpreadAttribute::from_node(n)),
16496 Node::JSXStringLiteral(n) => Builder::JSXStringLiteral(self::JSXStringLiteral::from_node(n)),
16497 Node::JSXText(n) => Builder::JSXText(self::JSXText::from_node(n)),
16498 Node::JSXElement(n) => Builder::JSXElement(self::JSXElement::from_node(n)),
16499 Node::JSXFragment(n) => Builder::JSXFragment(self::JSXFragment::from_node(n)),
16500 Node::JSXOpeningFragment(n) => Builder::JSXOpeningFragment(self::JSXOpeningFragment::from_node(n)),
16501 Node::JSXClosingFragment(n) => Builder::JSXClosingFragment(self::JSXClosingFragment::from_node(n)),
16502 Node::ExistsTypeAnnotation(n) => Builder::ExistsTypeAnnotation(self::ExistsTypeAnnotation::from_node(n)),
16503 Node::EmptyTypeAnnotation(n) => Builder::EmptyTypeAnnotation(self::EmptyTypeAnnotation::from_node(n)),
16504 Node::StringTypeAnnotation(n) => Builder::StringTypeAnnotation(self::StringTypeAnnotation::from_node(n)),
16505 Node::NumberTypeAnnotation(n) => Builder::NumberTypeAnnotation(self::NumberTypeAnnotation::from_node(n)),
16506 Node::StringLiteralTypeAnnotation(n) => Builder::StringLiteralTypeAnnotation(self::StringLiteralTypeAnnotation::from_node(n)),
16507 Node::NumberLiteralTypeAnnotation(n) => Builder::NumberLiteralTypeAnnotation(self::NumberLiteralTypeAnnotation::from_node(n)),
16508 Node::BigIntLiteralTypeAnnotation(n) => Builder::BigIntLiteralTypeAnnotation(self::BigIntLiteralTypeAnnotation::from_node(n)),
16509 Node::BooleanTypeAnnotation(n) => Builder::BooleanTypeAnnotation(self::BooleanTypeAnnotation::from_node(n)),
16510 Node::BooleanLiteralTypeAnnotation(n) => Builder::BooleanLiteralTypeAnnotation(self::BooleanLiteralTypeAnnotation::from_node(n)),
16511 Node::NullLiteralTypeAnnotation(n) => Builder::NullLiteralTypeAnnotation(self::NullLiteralTypeAnnotation::from_node(n)),
16512 Node::SymbolTypeAnnotation(n) => Builder::SymbolTypeAnnotation(self::SymbolTypeAnnotation::from_node(n)),
16513 Node::AnyTypeAnnotation(n) => Builder::AnyTypeAnnotation(self::AnyTypeAnnotation::from_node(n)),
16514 Node::MixedTypeAnnotation(n) => Builder::MixedTypeAnnotation(self::MixedTypeAnnotation::from_node(n)),
16515 Node::BigIntTypeAnnotation(n) => Builder::BigIntTypeAnnotation(self::BigIntTypeAnnotation::from_node(n)),
16516 Node::VoidTypeAnnotation(n) => Builder::VoidTypeAnnotation(self::VoidTypeAnnotation::from_node(n)),
16517 Node::NeverTypeAnnotation(n) => Builder::NeverTypeAnnotation(self::NeverTypeAnnotation::from_node(n)),
16518 Node::UnknownTypeAnnotation(n) => Builder::UnknownTypeAnnotation(self::UnknownTypeAnnotation::from_node(n)),
16519 Node::UndefinedTypeAnnotation(n) => Builder::UndefinedTypeAnnotation(self::UndefinedTypeAnnotation::from_node(n)),
16520 Node::FunctionTypeAnnotation(n) => Builder::FunctionTypeAnnotation(self::FunctionTypeAnnotation::from_node(n)),
16521 Node::HookTypeAnnotation(n) => Builder::HookTypeAnnotation(self::HookTypeAnnotation::from_node(n)),
16522 Node::FunctionTypeParam(n) => Builder::FunctionTypeParam(self::FunctionTypeParam::from_node(n)),
16523 Node::ComponentTypeAnnotation(n) => Builder::ComponentTypeAnnotation(self::ComponentTypeAnnotation::from_node(n)),
16524 Node::ComponentTypeParameter(n) => Builder::ComponentTypeParameter(self::ComponentTypeParameter::from_node(n)),
16525 Node::NullableTypeAnnotation(n) => Builder::NullableTypeAnnotation(self::NullableTypeAnnotation::from_node(n)),
16526 Node::QualifiedTypeIdentifier(n) => Builder::QualifiedTypeIdentifier(self::QualifiedTypeIdentifier::from_node(n)),
16527 Node::TypeofTypeAnnotation(n) => Builder::TypeofTypeAnnotation(self::TypeofTypeAnnotation::from_node(n)),
16528 Node::KeyofTypeAnnotation(n) => Builder::KeyofTypeAnnotation(self::KeyofTypeAnnotation::from_node(n)),
16529 Node::TypeOperator(n) => Builder::TypeOperator(self::TypeOperator::from_node(n)),
16530 Node::QualifiedTypeofIdentifier(n) => Builder::QualifiedTypeofIdentifier(self::QualifiedTypeofIdentifier::from_node(n)),
16531 Node::TupleTypeAnnotation(n) => Builder::TupleTypeAnnotation(self::TupleTypeAnnotation::from_node(n)),
16532 Node::TupleTypeSpreadElement(n) => Builder::TupleTypeSpreadElement(self::TupleTypeSpreadElement::from_node(n)),
16533 Node::TupleTypeLabeledElement(n) => Builder::TupleTypeLabeledElement(self::TupleTypeLabeledElement::from_node(n)),
16534 Node::ArrayTypeAnnotation(n) => Builder::ArrayTypeAnnotation(self::ArrayTypeAnnotation::from_node(n)),
16535 Node::InferTypeAnnotation(n) => Builder::InferTypeAnnotation(self::InferTypeAnnotation::from_node(n)),
16536 Node::UnionTypeAnnotation(n) => Builder::UnionTypeAnnotation(self::UnionTypeAnnotation::from_node(n)),
16537 Node::IntersectionTypeAnnotation(n) => Builder::IntersectionTypeAnnotation(self::IntersectionTypeAnnotation::from_node(n)),
16538 Node::GenericTypeAnnotation(n) => Builder::GenericTypeAnnotation(self::GenericTypeAnnotation::from_node(n)),
16539 Node::IndexedAccessType(n) => Builder::IndexedAccessType(self::IndexedAccessType::from_node(n)),
16540 Node::OptionalIndexedAccessType(n) => Builder::OptionalIndexedAccessType(self::OptionalIndexedAccessType::from_node(n)),
16541 Node::ConditionalTypeAnnotation(n) => Builder::ConditionalTypeAnnotation(self::ConditionalTypeAnnotation::from_node(n)),
16542 Node::TypePredicate(n) => Builder::TypePredicate(self::TypePredicate::from_node(n)),
16543 Node::InterfaceTypeAnnotation(n) => Builder::InterfaceTypeAnnotation(self::InterfaceTypeAnnotation::from_node(n)),
16544 Node::TypeAlias(n) => Builder::TypeAlias(self::TypeAlias::from_node(n)),
16545 Node::OpaqueType(n) => Builder::OpaqueType(self::OpaqueType::from_node(n)),
16546 Node::InterfaceDeclaration(n) => Builder::InterfaceDeclaration(self::InterfaceDeclaration::from_node(n)),
16547 Node::DeclareTypeAlias(n) => Builder::DeclareTypeAlias(self::DeclareTypeAlias::from_node(n)),
16548 Node::DeclareOpaqueType(n) => Builder::DeclareOpaqueType(self::DeclareOpaqueType::from_node(n)),
16549 Node::DeclareInterface(n) => Builder::DeclareInterface(self::DeclareInterface::from_node(n)),
16550 Node::DeclareClass(n) => Builder::DeclareClass(self::DeclareClass::from_node(n)),
16551 Node::DeclareFunction(n) => Builder::DeclareFunction(self::DeclareFunction::from_node(n)),
16552 Node::DeclareHook(n) => Builder::DeclareHook(self::DeclareHook::from_node(n)),
16553 Node::DeclareComponent(n) => Builder::DeclareComponent(self::DeclareComponent::from_node(n)),
16554 Node::DeclareVariable(n) => Builder::DeclareVariable(self::DeclareVariable::from_node(n)),
16555 Node::DeclareEnum(n) => Builder::DeclareEnum(self::DeclareEnum::from_node(n)),
16556 Node::DeclareExportDeclaration(n) => Builder::DeclareExportDeclaration(self::DeclareExportDeclaration::from_node(n)),
16557 Node::DeclareExportAllDeclaration(n) => Builder::DeclareExportAllDeclaration(self::DeclareExportAllDeclaration::from_node(n)),
16558 Node::DeclareModule(n) => Builder::DeclareModule(self::DeclareModule::from_node(n)),
16559 Node::DeclareNamespace(n) => Builder::DeclareNamespace(self::DeclareNamespace::from_node(n)),
16560 Node::DeclareModuleExports(n) => Builder::DeclareModuleExports(self::DeclareModuleExports::from_node(n)),
16561 Node::InterfaceExtends(n) => Builder::InterfaceExtends(self::InterfaceExtends::from_node(n)),
16562 Node::ClassImplements(n) => Builder::ClassImplements(self::ClassImplements::from_node(n)),
16563 Node::TypeAnnotation(n) => Builder::TypeAnnotation(self::TypeAnnotation::from_node(n)),
16564 Node::ObjectTypeAnnotation(n) => Builder::ObjectTypeAnnotation(self::ObjectTypeAnnotation::from_node(n)),
16565 Node::ObjectTypeProperty(n) => Builder::ObjectTypeProperty(self::ObjectTypeProperty::from_node(n)),
16566 Node::ObjectTypeSpreadProperty(n) => Builder::ObjectTypeSpreadProperty(self::ObjectTypeSpreadProperty::from_node(n)),
16567 Node::ObjectTypeInternalSlot(n) => Builder::ObjectTypeInternalSlot(self::ObjectTypeInternalSlot::from_node(n)),
16568 Node::ObjectTypeCallProperty(n) => Builder::ObjectTypeCallProperty(self::ObjectTypeCallProperty::from_node(n)),
16569 Node::ObjectTypeIndexer(n) => Builder::ObjectTypeIndexer(self::ObjectTypeIndexer::from_node(n)),
16570 Node::ObjectTypeMappedTypeProperty(n) => Builder::ObjectTypeMappedTypeProperty(self::ObjectTypeMappedTypeProperty::from_node(n)),
16571 Node::Variance(n) => Builder::Variance(self::Variance::from_node(n)),
16572 Node::TypeParameterDeclaration(n) => Builder::TypeParameterDeclaration(self::TypeParameterDeclaration::from_node(n)),
16573 Node::TypeParameter(n) => Builder::TypeParameter(self::TypeParameter::from_node(n)),
16574 Node::TypeParameterInstantiation(n) => Builder::TypeParameterInstantiation(self::TypeParameterInstantiation::from_node(n)),
16575 Node::TypeCastExpression(n) => Builder::TypeCastExpression(self::TypeCastExpression::from_node(n)),
16576 Node::AsExpression(n) => Builder::AsExpression(self::AsExpression::from_node(n)),
16577 Node::AsConstExpression(n) => Builder::AsConstExpression(self::AsConstExpression::from_node(n)),
16578 Node::InferredPredicate(n) => Builder::InferredPredicate(self::InferredPredicate::from_node(n)),
16579 Node::DeclaredPredicate(n) => Builder::DeclaredPredicate(self::DeclaredPredicate::from_node(n)),
16580 Node::EnumDeclaration(n) => Builder::EnumDeclaration(self::EnumDeclaration::from_node(n)),
16581 Node::EnumStringBody(n) => Builder::EnumStringBody(self::EnumStringBody::from_node(n)),
16582 Node::EnumNumberBody(n) => Builder::EnumNumberBody(self::EnumNumberBody::from_node(n)),
16583 Node::EnumBigIntBody(n) => Builder::EnumBigIntBody(self::EnumBigIntBody::from_node(n)),
16584 Node::EnumBooleanBody(n) => Builder::EnumBooleanBody(self::EnumBooleanBody::from_node(n)),
16585 Node::EnumSymbolBody(n) => Builder::EnumSymbolBody(self::EnumSymbolBody::from_node(n)),
16586 Node::EnumDefaultedMember(n) => Builder::EnumDefaultedMember(self::EnumDefaultedMember::from_node(n)),
16587 Node::EnumStringMember(n) => Builder::EnumStringMember(self::EnumStringMember::from_node(n)),
16588 Node::EnumNumberMember(n) => Builder::EnumNumberMember(self::EnumNumberMember::from_node(n)),
16589 Node::EnumBigIntMember(n) => Builder::EnumBigIntMember(self::EnumBigIntMember::from_node(n)),
16590 Node::EnumBooleanMember(n) => Builder::EnumBooleanMember(self::EnumBooleanMember::from_node(n)),
16591 Node::ComponentParameter(n) => Builder::ComponentParameter(self::ComponentParameter::from_node(n)),
16592 Node::RecordDeclaration(n) => Builder::RecordDeclaration(self::RecordDeclaration::from_node(n)),
16593 Node::RecordDeclarationImplements(n) => Builder::RecordDeclarationImplements(self::RecordDeclarationImplements::from_node(n)),
16594 Node::RecordDeclarationBody(n) => Builder::RecordDeclarationBody(self::RecordDeclarationBody::from_node(n)),
16595 Node::RecordDeclarationProperty(n) => Builder::RecordDeclarationProperty(self::RecordDeclarationProperty::from_node(n)),
16596 Node::RecordDeclarationStaticProperty(n) => Builder::RecordDeclarationStaticProperty(self::RecordDeclarationStaticProperty::from_node(n)),
16597 Node::RecordExpression(n) => Builder::RecordExpression(self::RecordExpression::from_node(n)),
16598 Node::RecordExpressionProperties(n) => Builder::RecordExpressionProperties(self::RecordExpressionProperties::from_node(n)),
16599 Node::TSTypeAnnotation(n) => Builder::TSTypeAnnotation(self::TSTypeAnnotation::from_node(n)),
16600 Node::TSAnyKeyword(n) => Builder::TSAnyKeyword(self::TSAnyKeyword::from_node(n)),
16601 Node::TSNumberKeyword(n) => Builder::TSNumberKeyword(self::TSNumberKeyword::from_node(n)),
16602 Node::TSBooleanKeyword(n) => Builder::TSBooleanKeyword(self::TSBooleanKeyword::from_node(n)),
16603 Node::TSStringKeyword(n) => Builder::TSStringKeyword(self::TSStringKeyword::from_node(n)),
16604 Node::TSSymbolKeyword(n) => Builder::TSSymbolKeyword(self::TSSymbolKeyword::from_node(n)),
16605 Node::TSVoidKeyword(n) => Builder::TSVoidKeyword(self::TSVoidKeyword::from_node(n)),
16606 Node::TSUndefinedKeyword(n) => Builder::TSUndefinedKeyword(self::TSUndefinedKeyword::from_node(n)),
16607 Node::TSUnknownKeyword(n) => Builder::TSUnknownKeyword(self::TSUnknownKeyword::from_node(n)),
16608 Node::TSNeverKeyword(n) => Builder::TSNeverKeyword(self::TSNeverKeyword::from_node(n)),
16609 Node::TSBigIntKeyword(n) => Builder::TSBigIntKeyword(self::TSBigIntKeyword::from_node(n)),
16610 Node::TSThisType(n) => Builder::TSThisType(self::TSThisType::from_node(n)),
16611 Node::TSLiteralType(n) => Builder::TSLiteralType(self::TSLiteralType::from_node(n)),
16612 Node::TSIndexedAccessType(n) => Builder::TSIndexedAccessType(self::TSIndexedAccessType::from_node(n)),
16613 Node::TSArrayType(n) => Builder::TSArrayType(self::TSArrayType::from_node(n)),
16614 Node::TSTypeReference(n) => Builder::TSTypeReference(self::TSTypeReference::from_node(n)),
16615 Node::TSQualifiedName(n) => Builder::TSQualifiedName(self::TSQualifiedName::from_node(n)),
16616 Node::TSFunctionType(n) => Builder::TSFunctionType(self::TSFunctionType::from_node(n)),
16617 Node::TSConstructorType(n) => Builder::TSConstructorType(self::TSConstructorType::from_node(n)),
16618 Node::TSTypePredicate(n) => Builder::TSTypePredicate(self::TSTypePredicate::from_node(n)),
16619 Node::TSTupleType(n) => Builder::TSTupleType(self::TSTupleType::from_node(n)),
16620 Node::TSTypeAssertion(n) => Builder::TSTypeAssertion(self::TSTypeAssertion::from_node(n)),
16621 Node::TSAsExpression(n) => Builder::TSAsExpression(self::TSAsExpression::from_node(n)),
16622 Node::TSParameterProperty(n) => Builder::TSParameterProperty(self::TSParameterProperty::from_node(n)),
16623 Node::TSTypeAliasDeclaration(n) => Builder::TSTypeAliasDeclaration(self::TSTypeAliasDeclaration::from_node(n)),
16624 Node::TSInterfaceDeclaration(n) => Builder::TSInterfaceDeclaration(self::TSInterfaceDeclaration::from_node(n)),
16625 Node::TSInterfaceHeritage(n) => Builder::TSInterfaceHeritage(self::TSInterfaceHeritage::from_node(n)),
16626 Node::TSInterfaceBody(n) => Builder::TSInterfaceBody(self::TSInterfaceBody::from_node(n)),
16627 Node::TSEnumDeclaration(n) => Builder::TSEnumDeclaration(self::TSEnumDeclaration::from_node(n)),
16628 Node::TSEnumMember(n) => Builder::TSEnumMember(self::TSEnumMember::from_node(n)),
16629 Node::TSModuleDeclaration(n) => Builder::TSModuleDeclaration(self::TSModuleDeclaration::from_node(n)),
16630 Node::TSModuleBlock(n) => Builder::TSModuleBlock(self::TSModuleBlock::from_node(n)),
16631 Node::TSModuleMember(n) => Builder::TSModuleMember(self::TSModuleMember::from_node(n)),
16632 Node::TSTypeParameterDeclaration(n) => Builder::TSTypeParameterDeclaration(self::TSTypeParameterDeclaration::from_node(n)),
16633 Node::TSTypeParameter(n) => Builder::TSTypeParameter(self::TSTypeParameter::from_node(n)),
16634 Node::TSTypeParameterInstantiation(n) => Builder::TSTypeParameterInstantiation(self::TSTypeParameterInstantiation::from_node(n)),
16635 Node::TSUnionType(n) => Builder::TSUnionType(self::TSUnionType::from_node(n)),
16636 Node::TSIntersectionType(n) => Builder::TSIntersectionType(self::TSIntersectionType::from_node(n)),
16637 Node::TSTypeQuery(n) => Builder::TSTypeQuery(self::TSTypeQuery::from_node(n)),
16638 Node::TSConditionalType(n) => Builder::TSConditionalType(self::TSConditionalType::from_node(n)),
16639 Node::TSTypeLiteral(n) => Builder::TSTypeLiteral(self::TSTypeLiteral::from_node(n)),
16640 Node::TSPropertySignature(n) => Builder::TSPropertySignature(self::TSPropertySignature::from_node(n)),
16641 Node::TSMethodSignature(n) => Builder::TSMethodSignature(self::TSMethodSignature::from_node(n)),
16642 Node::TSIndexSignature(n) => Builder::TSIndexSignature(self::TSIndexSignature::from_node(n)),
16643 Node::TSCallSignatureDeclaration(n) => Builder::TSCallSignatureDeclaration(self::TSCallSignatureDeclaration::from_node(n)),
16644 Node::TSModifiers(n) => Builder::TSModifiers(self::TSModifiers::from_node(n)),
16645 Node::CoverEmptyArgs(n) => Builder::CoverEmptyArgs(self::CoverEmptyArgs::from_node(n)),
16646 Node::CoverTrailingComma(n) => Builder::CoverTrailingComma(self::CoverTrailingComma::from_node(n)),
16647 Node::CoverInitializer(n) => Builder::CoverInitializer(self::CoverInitializer::from_node(n)),
16648 Node::CoverRestElement(n) => Builder::CoverRestElement(self::CoverRestElement::from_node(n)),
16649 Node::CoverTypedIdentifier(n) => Builder::CoverTypedIdentifier(self::CoverTypedIdentifier::from_node(n)),
16650 Node::SHBuiltin(n) => Builder::SHBuiltin(self::SHBuiltin::from_node(n)),
16651 Node::ImplicitCheckedCast(n) => Builder::ImplicitCheckedCast(self::ImplicitCheckedCast::from_node(n)),
16652 }
16653 }
16654 }
16655
16656 #[derive(Debug)]
16658 pub struct Empty<'gc> {
16659 is_changed: bool,
16660 pub(super) inner: super::Empty<'gc>,
16661 }
16662 impl<'gc> Empty<'gc> {
16663 pub fn from_node(node: &'gc super::Empty<'gc>) -> Self {
16665 Self {
16666 is_changed: false,
16667 inner: super::Empty {
16668 metadata: node.metadata.duplicate(),
16669 },
16670 }
16671 }
16672 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16675 if self.is_changed {
16676 TransformResult::Changed(self.build_forced(gc))
16677 } else {
16678 TransformResult::Unchanged
16679 }
16680 }
16681 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16683 gc.alloc(Node::Empty(self.inner))
16684 }
16685 }
16686 #[derive(Debug)]
16688 pub struct Metadata<'gc> {
16689 is_changed: bool,
16690 pub(super) inner: super::Metadata<'gc>,
16691 }
16692 impl<'gc> Metadata<'gc> {
16693 pub fn from_node(node: &'gc super::Metadata<'gc>) -> Self {
16695 Self {
16696 is_changed: false,
16697 inner: super::Metadata {
16698 metadata: node.metadata.duplicate(),
16699 },
16700 }
16701 }
16702 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16705 if self.is_changed {
16706 TransformResult::Changed(self.build_forced(gc))
16707 } else {
16708 TransformResult::Unchanged
16709 }
16710 }
16711 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16713 gc.alloc(Node::Metadata(self.inner))
16714 }
16715 }
16716 #[derive(Debug)]
16718 pub struct Program<'gc> {
16719 is_changed: bool,
16720 pub(super) inner: super::Program<'gc>,
16721 }
16722 impl<'gc> Program<'gc> {
16723 pub fn from_node(node: &'gc super::Program<'gc>) -> Self {
16725 Self {
16726 is_changed: false,
16727 inner: super::Program {
16728 metadata: node.metadata.duplicate(),
16729 body: node.body.duplicate(),
16730 scope: Cell::new(node.scope.get()),
16731 sem_info: Cell::new(node.sem_info.get()),
16732 strictness: Cell::new(node.strictness.get()),
16733 is_method_definition: Cell::new(node.is_method_definition.get()),
16734 decorations: Cell::new(node.decorations.get()),
16735 dummy_param_list: Cell::new(node.dummy_param_list.get()),
16736 },
16737 }
16738 }
16739 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16742 if self.is_changed {
16743 TransformResult::Changed(self.build_forced(gc))
16744 } else {
16745 TransformResult::Unchanged
16746 }
16747 }
16748 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16750 gc.alloc(Node::Program(self.inner))
16751 }
16752 pub fn body(&mut self, body: NodeList<'gc>) { self.is_changed = true; self.inner.body = body; }
16754 }
16755 #[derive(Debug)]
16757 pub struct FunctionExpression<'gc> {
16758 is_changed: bool,
16759 pub(super) inner: super::FunctionExpression<'gc>,
16760 }
16761 impl<'gc> FunctionExpression<'gc> {
16762 pub fn from_node(node: &'gc super::FunctionExpression<'gc>) -> Self {
16764 Self {
16765 is_changed: false,
16766 inner: super::FunctionExpression {
16767 metadata: node.metadata.duplicate(),
16768 id: node.id.duplicate(),
16769 params: node.params.duplicate(),
16770 body: node.body.duplicate(),
16771 type_parameters: node.type_parameters.duplicate(),
16772 return_type: node.return_type.duplicate(),
16773 predicate: node.predicate.duplicate(),
16774 generator: Cell::new(node.generator.get()),
16775 r#async: Cell::new(node.r#async.get()),
16776 scope: Cell::new(node.scope.get()),
16777 sem_info: Cell::new(node.sem_info.get()),
16778 strictness: Cell::new(node.strictness.get()),
16779 is_method_definition: Cell::new(node.is_method_definition.get()),
16780 decorations: Cell::new(node.decorations.get()),
16781 },
16782 }
16783 }
16784 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16787 if self.is_changed {
16788 TransformResult::Changed(self.build_forced(gc))
16789 } else {
16790 TransformResult::Unchanged
16791 }
16792 }
16793 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16795 gc.alloc(Node::FunctionExpression(self.inner))
16796 }
16797 pub fn id(&mut self, id: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.id = id; }
16799 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
16801 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
16803 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
16805 pub fn return_type(&mut self, return_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.return_type = return_type; }
16807 pub fn predicate(&mut self, predicate: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.predicate = predicate; }
16809 }
16810 #[derive(Debug)]
16812 pub struct ArrowFunctionExpression<'gc> {
16813 is_changed: bool,
16814 pub(super) inner: super::ArrowFunctionExpression<'gc>,
16815 }
16816 impl<'gc> ArrowFunctionExpression<'gc> {
16817 pub fn from_node(node: &'gc super::ArrowFunctionExpression<'gc>) -> Self {
16819 Self {
16820 is_changed: false,
16821 inner: super::ArrowFunctionExpression {
16822 metadata: node.metadata.duplicate(),
16823 params: node.params.duplicate(),
16824 body: node.body.duplicate(),
16825 type_parameters: node.type_parameters.duplicate(),
16826 return_type: node.return_type.duplicate(),
16827 predicate: node.predicate.duplicate(),
16828 expression: Cell::new(node.expression.get()),
16829 r#async: Cell::new(node.r#async.get()),
16830 scope: Cell::new(node.scope.get()),
16831 sem_info: Cell::new(node.sem_info.get()),
16832 strictness: Cell::new(node.strictness.get()),
16833 is_method_definition: Cell::new(node.is_method_definition.get()),
16834 decorations: Cell::new(node.decorations.get()),
16835 },
16836 }
16837 }
16838 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16841 if self.is_changed {
16842 TransformResult::Changed(self.build_forced(gc))
16843 } else {
16844 TransformResult::Unchanged
16845 }
16846 }
16847 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16849 gc.alloc(Node::ArrowFunctionExpression(self.inner))
16850 }
16851 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
16853 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
16855 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
16857 pub fn return_type(&mut self, return_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.return_type = return_type; }
16859 pub fn predicate(&mut self, predicate: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.predicate = predicate; }
16861 }
16862 #[derive(Debug)]
16864 pub struct FunctionDeclaration<'gc> {
16865 is_changed: bool,
16866 pub(super) inner: super::FunctionDeclaration<'gc>,
16867 }
16868 impl<'gc> FunctionDeclaration<'gc> {
16869 pub fn from_node(node: &'gc super::FunctionDeclaration<'gc>) -> Self {
16871 Self {
16872 is_changed: false,
16873 inner: super::FunctionDeclaration {
16874 metadata: node.metadata.duplicate(),
16875 id: node.id.duplicate(),
16876 params: node.params.duplicate(),
16877 body: node.body.duplicate(),
16878 type_parameters: node.type_parameters.duplicate(),
16879 return_type: node.return_type.duplicate(),
16880 predicate: node.predicate.duplicate(),
16881 generator: Cell::new(node.generator.get()),
16882 r#async: Cell::new(node.r#async.get()),
16883 scope: Cell::new(node.scope.get()),
16884 sem_info: Cell::new(node.sem_info.get()),
16885 strictness: Cell::new(node.strictness.get()),
16886 is_method_definition: Cell::new(node.is_method_definition.get()),
16887 decorations: Cell::new(node.decorations.get()),
16888 },
16889 }
16890 }
16891 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16894 if self.is_changed {
16895 TransformResult::Changed(self.build_forced(gc))
16896 } else {
16897 TransformResult::Unchanged
16898 }
16899 }
16900 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16902 gc.alloc(Node::FunctionDeclaration(self.inner))
16903 }
16904 pub fn id(&mut self, id: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.id = id; }
16906 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
16908 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
16910 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
16912 pub fn return_type(&mut self, return_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.return_type = return_type; }
16914 pub fn predicate(&mut self, predicate: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.predicate = predicate; }
16916 }
16917 #[derive(Debug)]
16919 pub struct ComponentDeclaration<'gc> {
16920 is_changed: bool,
16921 pub(super) inner: super::ComponentDeclaration<'gc>,
16922 }
16923 impl<'gc> ComponentDeclaration<'gc> {
16924 pub fn from_node(node: &'gc super::ComponentDeclaration<'gc>) -> Self {
16926 Self {
16927 is_changed: false,
16928 inner: super::ComponentDeclaration {
16929 metadata: node.metadata.duplicate(),
16930 id: node.id.duplicate(),
16931 params: node.params.duplicate(),
16932 body: node.body.duplicate(),
16933 type_parameters: node.type_parameters.duplicate(),
16934 renders_type: node.renders_type.duplicate(),
16935 r#async: Cell::new(node.r#async.get()),
16936 scope: Cell::new(node.scope.get()),
16937 sem_info: Cell::new(node.sem_info.get()),
16938 strictness: Cell::new(node.strictness.get()),
16939 is_method_definition: Cell::new(node.is_method_definition.get()),
16940 decorations: Cell::new(node.decorations.get()),
16941 },
16942 }
16943 }
16944 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16947 if self.is_changed {
16948 TransformResult::Changed(self.build_forced(gc))
16949 } else {
16950 TransformResult::Unchanged
16951 }
16952 }
16953 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
16955 gc.alloc(Node::ComponentDeclaration(self.inner))
16956 }
16957 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
16959 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
16961 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
16963 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
16965 pub fn renders_type(&mut self, renders_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.renders_type = renders_type; }
16967 }
16968 #[derive(Debug)]
16970 pub struct HookDeclaration<'gc> {
16971 is_changed: bool,
16972 pub(super) inner: super::HookDeclaration<'gc>,
16973 }
16974 impl<'gc> HookDeclaration<'gc> {
16975 pub fn from_node(node: &'gc super::HookDeclaration<'gc>) -> Self {
16977 Self {
16978 is_changed: false,
16979 inner: super::HookDeclaration {
16980 metadata: node.metadata.duplicate(),
16981 id: node.id.duplicate(),
16982 params: node.params.duplicate(),
16983 body: node.body.duplicate(),
16984 type_parameters: node.type_parameters.duplicate(),
16985 return_type: node.return_type.duplicate(),
16986 r#async: Cell::new(node.r#async.get()),
16987 scope: Cell::new(node.scope.get()),
16988 sem_info: Cell::new(node.sem_info.get()),
16989 strictness: Cell::new(node.strictness.get()),
16990 is_method_definition: Cell::new(node.is_method_definition.get()),
16991 decorations: Cell::new(node.decorations.get()),
16992 },
16993 }
16994 }
16995 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
16998 if self.is_changed {
16999 TransformResult::Changed(self.build_forced(gc))
17000 } else {
17001 TransformResult::Unchanged
17002 }
17003 }
17004 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17006 gc.alloc(Node::HookDeclaration(self.inner))
17007 }
17008 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
17010 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
17012 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17014 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
17016 pub fn return_type(&mut self, return_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.return_type = return_type; }
17018 }
17019 #[derive(Debug)]
17021 pub struct MatchStatement<'gc> {
17022 is_changed: bool,
17023 pub(super) inner: super::MatchStatement<'gc>,
17024 }
17025 impl<'gc> MatchStatement<'gc> {
17026 pub fn from_node(node: &'gc super::MatchStatement<'gc>) -> Self {
17028 Self {
17029 is_changed: false,
17030 inner: super::MatchStatement {
17031 metadata: node.metadata.duplicate(),
17032 argument: node.argument.duplicate(),
17033 cases: node.cases.duplicate(),
17034 },
17035 }
17036 }
17037 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17040 if self.is_changed {
17041 TransformResult::Changed(self.build_forced(gc))
17042 } else {
17043 TransformResult::Unchanged
17044 }
17045 }
17046 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17048 gc.alloc(Node::MatchStatement(self.inner))
17049 }
17050 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
17052 pub fn cases(&mut self, cases: NodeList<'gc>) { self.is_changed = true; self.inner.cases = cases; }
17054 }
17055 #[derive(Debug)]
17057 pub struct WhileStatement<'gc> {
17058 is_changed: bool,
17059 pub(super) inner: super::WhileStatement<'gc>,
17060 }
17061 impl<'gc> WhileStatement<'gc> {
17062 pub fn from_node(node: &'gc super::WhileStatement<'gc>) -> Self {
17064 Self {
17065 is_changed: false,
17066 inner: super::WhileStatement {
17067 metadata: node.metadata.duplicate(),
17068 body: node.body.duplicate(),
17069 test: node.test.duplicate(),
17070 label_index: Cell::new(node.label_index.get()),
17071 },
17072 }
17073 }
17074 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17077 if self.is_changed {
17078 TransformResult::Changed(self.build_forced(gc))
17079 } else {
17080 TransformResult::Unchanged
17081 }
17082 }
17083 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17085 gc.alloc(Node::WhileStatement(self.inner))
17086 }
17087 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17089 pub fn test(&mut self, test: &'gc Node<'gc>) { self.is_changed = true; self.inner.test = test; }
17091 }
17092 #[derive(Debug)]
17094 pub struct DoWhileStatement<'gc> {
17095 is_changed: bool,
17096 pub(super) inner: super::DoWhileStatement<'gc>,
17097 }
17098 impl<'gc> DoWhileStatement<'gc> {
17099 pub fn from_node(node: &'gc super::DoWhileStatement<'gc>) -> Self {
17101 Self {
17102 is_changed: false,
17103 inner: super::DoWhileStatement {
17104 metadata: node.metadata.duplicate(),
17105 body: node.body.duplicate(),
17106 test: node.test.duplicate(),
17107 label_index: Cell::new(node.label_index.get()),
17108 },
17109 }
17110 }
17111 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17114 if self.is_changed {
17115 TransformResult::Changed(self.build_forced(gc))
17116 } else {
17117 TransformResult::Unchanged
17118 }
17119 }
17120 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17122 gc.alloc(Node::DoWhileStatement(self.inner))
17123 }
17124 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17126 pub fn test(&mut self, test: &'gc Node<'gc>) { self.is_changed = true; self.inner.test = test; }
17128 }
17129 #[derive(Debug)]
17131 pub struct ForInStatement<'gc> {
17132 is_changed: bool,
17133 pub(super) inner: super::ForInStatement<'gc>,
17134 }
17135 impl<'gc> ForInStatement<'gc> {
17136 pub fn from_node(node: &'gc super::ForInStatement<'gc>) -> Self {
17138 Self {
17139 is_changed: false,
17140 inner: super::ForInStatement {
17141 metadata: node.metadata.duplicate(),
17142 left: node.left.duplicate(),
17143 right: node.right.duplicate(),
17144 body: node.body.duplicate(),
17145 label_index: Cell::new(node.label_index.get()),
17146 scope: Cell::new(node.scope.get()),
17147 },
17148 }
17149 }
17150 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17153 if self.is_changed {
17154 TransformResult::Changed(self.build_forced(gc))
17155 } else {
17156 TransformResult::Unchanged
17157 }
17158 }
17159 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17161 gc.alloc(Node::ForInStatement(self.inner))
17162 }
17163 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
17165 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
17167 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17169 }
17170 #[derive(Debug)]
17172 pub struct ForOfStatement<'gc> {
17173 is_changed: bool,
17174 pub(super) inner: super::ForOfStatement<'gc>,
17175 }
17176 impl<'gc> ForOfStatement<'gc> {
17177 pub fn from_node(node: &'gc super::ForOfStatement<'gc>) -> Self {
17179 Self {
17180 is_changed: false,
17181 inner: super::ForOfStatement {
17182 metadata: node.metadata.duplicate(),
17183 left: node.left.duplicate(),
17184 right: node.right.duplicate(),
17185 body: node.body.duplicate(),
17186 r#await: Cell::new(node.r#await.get()),
17187 label_index: Cell::new(node.label_index.get()),
17188 scope: Cell::new(node.scope.get()),
17189 },
17190 }
17191 }
17192 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17195 if self.is_changed {
17196 TransformResult::Changed(self.build_forced(gc))
17197 } else {
17198 TransformResult::Unchanged
17199 }
17200 }
17201 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17203 gc.alloc(Node::ForOfStatement(self.inner))
17204 }
17205 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
17207 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
17209 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17211 }
17212 #[derive(Debug)]
17214 pub struct ForStatement<'gc> {
17215 is_changed: bool,
17216 pub(super) inner: super::ForStatement<'gc>,
17217 }
17218 impl<'gc> ForStatement<'gc> {
17219 pub fn from_node(node: &'gc super::ForStatement<'gc>) -> Self {
17221 Self {
17222 is_changed: false,
17223 inner: super::ForStatement {
17224 metadata: node.metadata.duplicate(),
17225 init: node.init.duplicate(),
17226 test: node.test.duplicate(),
17227 update: node.update.duplicate(),
17228 body: node.body.duplicate(),
17229 label_index: Cell::new(node.label_index.get()),
17230 scope: Cell::new(node.scope.get()),
17231 },
17232 }
17233 }
17234 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17237 if self.is_changed {
17238 TransformResult::Changed(self.build_forced(gc))
17239 } else {
17240 TransformResult::Unchanged
17241 }
17242 }
17243 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17245 gc.alloc(Node::ForStatement(self.inner))
17246 }
17247 pub fn init(&mut self, init: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.init = init; }
17249 pub fn test(&mut self, test: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.test = test; }
17251 pub fn update(&mut self, update: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.update = update; }
17253 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17255 }
17256 #[derive(Debug)]
17258 pub struct DebuggerStatement<'gc> {
17259 is_changed: bool,
17260 pub(super) inner: super::DebuggerStatement<'gc>,
17261 }
17262 impl<'gc> DebuggerStatement<'gc> {
17263 pub fn from_node(node: &'gc super::DebuggerStatement<'gc>) -> Self {
17265 Self {
17266 is_changed: false,
17267 inner: super::DebuggerStatement {
17268 metadata: node.metadata.duplicate(),
17269 },
17270 }
17271 }
17272 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17275 if self.is_changed {
17276 TransformResult::Changed(self.build_forced(gc))
17277 } else {
17278 TransformResult::Unchanged
17279 }
17280 }
17281 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17283 gc.alloc(Node::DebuggerStatement(self.inner))
17284 }
17285 }
17286 #[derive(Debug)]
17288 pub struct EmptyStatement<'gc> {
17289 is_changed: bool,
17290 pub(super) inner: super::EmptyStatement<'gc>,
17291 }
17292 impl<'gc> EmptyStatement<'gc> {
17293 pub fn from_node(node: &'gc super::EmptyStatement<'gc>) -> Self {
17295 Self {
17296 is_changed: false,
17297 inner: super::EmptyStatement {
17298 metadata: node.metadata.duplicate(),
17299 },
17300 }
17301 }
17302 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17305 if self.is_changed {
17306 TransformResult::Changed(self.build_forced(gc))
17307 } else {
17308 TransformResult::Unchanged
17309 }
17310 }
17311 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17313 gc.alloc(Node::EmptyStatement(self.inner))
17314 }
17315 }
17316 #[derive(Debug)]
17318 pub struct BlockStatement<'gc> {
17319 is_changed: bool,
17320 pub(super) inner: super::BlockStatement<'gc>,
17321 }
17322 impl<'gc> BlockStatement<'gc> {
17323 pub fn from_node(node: &'gc super::BlockStatement<'gc>) -> Self {
17325 Self {
17326 is_changed: false,
17327 inner: super::BlockStatement {
17328 metadata: node.metadata.duplicate(),
17329 body: node.body.duplicate(),
17330 implicit: Cell::new(node.implicit.get()),
17331 scope: Cell::new(node.scope.get()),
17332 buffer_id: Cell::new(node.buffer_id.get()),
17333 is_lazy_function_body: Cell::new(node.is_lazy_function_body.get()),
17334 param_yield: Cell::new(node.param_yield.get()),
17335 param_await: Cell::new(node.param_await.get()),
17336 contains_arrow_functions: Cell::new(node.contains_arrow_functions.get()),
17337 may_contain_arrow_functions_using_arguments: Cell::new(node.may_contain_arrow_functions_using_arguments.get()),
17338 },
17339 }
17340 }
17341 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17344 if self.is_changed {
17345 TransformResult::Changed(self.build_forced(gc))
17346 } else {
17347 TransformResult::Unchanged
17348 }
17349 }
17350 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17352 gc.alloc(Node::BlockStatement(self.inner))
17353 }
17354 pub fn body(&mut self, body: NodeList<'gc>) { self.is_changed = true; self.inner.body = body; }
17356 }
17357 #[derive(Debug)]
17359 pub struct StaticBlock<'gc> {
17360 is_changed: bool,
17361 pub(super) inner: super::StaticBlock<'gc>,
17362 }
17363 impl<'gc> StaticBlock<'gc> {
17364 pub fn from_node(node: &'gc super::StaticBlock<'gc>) -> Self {
17366 Self {
17367 is_changed: false,
17368 inner: super::StaticBlock {
17369 metadata: node.metadata.duplicate(),
17370 body: node.body.duplicate(),
17371 scope: Cell::new(node.scope.get()),
17372 function_info: Cell::new(node.function_info.get()),
17373 },
17374 }
17375 }
17376 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17379 if self.is_changed {
17380 TransformResult::Changed(self.build_forced(gc))
17381 } else {
17382 TransformResult::Unchanged
17383 }
17384 }
17385 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17387 gc.alloc(Node::StaticBlock(self.inner))
17388 }
17389 pub fn body(&mut self, body: NodeList<'gc>) { self.is_changed = true; self.inner.body = body; }
17391 }
17392 #[derive(Debug)]
17394 pub struct BreakStatement<'gc> {
17395 is_changed: bool,
17396 pub(super) inner: super::BreakStatement<'gc>,
17397 }
17398 impl<'gc> BreakStatement<'gc> {
17399 pub fn from_node(node: &'gc super::BreakStatement<'gc>) -> Self {
17401 Self {
17402 is_changed: false,
17403 inner: super::BreakStatement {
17404 metadata: node.metadata.duplicate(),
17405 label: node.label.duplicate(),
17406 label_index: Cell::new(node.label_index.get()),
17407 },
17408 }
17409 }
17410 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17413 if self.is_changed {
17414 TransformResult::Changed(self.build_forced(gc))
17415 } else {
17416 TransformResult::Unchanged
17417 }
17418 }
17419 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17421 gc.alloc(Node::BreakStatement(self.inner))
17422 }
17423 pub fn label(&mut self, label: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.label = label; }
17425 }
17426 #[derive(Debug)]
17428 pub struct ContinueStatement<'gc> {
17429 is_changed: bool,
17430 pub(super) inner: super::ContinueStatement<'gc>,
17431 }
17432 impl<'gc> ContinueStatement<'gc> {
17433 pub fn from_node(node: &'gc super::ContinueStatement<'gc>) -> Self {
17435 Self {
17436 is_changed: false,
17437 inner: super::ContinueStatement {
17438 metadata: node.metadata.duplicate(),
17439 label: node.label.duplicate(),
17440 label_index: Cell::new(node.label_index.get()),
17441 },
17442 }
17443 }
17444 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17447 if self.is_changed {
17448 TransformResult::Changed(self.build_forced(gc))
17449 } else {
17450 TransformResult::Unchanged
17451 }
17452 }
17453 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17455 gc.alloc(Node::ContinueStatement(self.inner))
17456 }
17457 pub fn label(&mut self, label: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.label = label; }
17459 }
17460 #[derive(Debug)]
17462 pub struct ThrowStatement<'gc> {
17463 is_changed: bool,
17464 pub(super) inner: super::ThrowStatement<'gc>,
17465 }
17466 impl<'gc> ThrowStatement<'gc> {
17467 pub fn from_node(node: &'gc super::ThrowStatement<'gc>) -> Self {
17469 Self {
17470 is_changed: false,
17471 inner: super::ThrowStatement {
17472 metadata: node.metadata.duplicate(),
17473 argument: node.argument.duplicate(),
17474 },
17475 }
17476 }
17477 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17480 if self.is_changed {
17481 TransformResult::Changed(self.build_forced(gc))
17482 } else {
17483 TransformResult::Unchanged
17484 }
17485 }
17486 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17488 gc.alloc(Node::ThrowStatement(self.inner))
17489 }
17490 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
17492 }
17493 #[derive(Debug)]
17495 pub struct ReturnStatement<'gc> {
17496 is_changed: bool,
17497 pub(super) inner: super::ReturnStatement<'gc>,
17498 }
17499 impl<'gc> ReturnStatement<'gc> {
17500 pub fn from_node(node: &'gc super::ReturnStatement<'gc>) -> Self {
17502 Self {
17503 is_changed: false,
17504 inner: super::ReturnStatement {
17505 metadata: node.metadata.duplicate(),
17506 argument: node.argument.duplicate(),
17507 },
17508 }
17509 }
17510 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17513 if self.is_changed {
17514 TransformResult::Changed(self.build_forced(gc))
17515 } else {
17516 TransformResult::Unchanged
17517 }
17518 }
17519 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17521 gc.alloc(Node::ReturnStatement(self.inner))
17522 }
17523 pub fn argument(&mut self, argument: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.argument = argument; }
17525 }
17526 #[derive(Debug)]
17528 pub struct WithStatement<'gc> {
17529 is_changed: bool,
17530 pub(super) inner: super::WithStatement<'gc>,
17531 }
17532 impl<'gc> WithStatement<'gc> {
17533 pub fn from_node(node: &'gc super::WithStatement<'gc>) -> Self {
17535 Self {
17536 is_changed: false,
17537 inner: super::WithStatement {
17538 metadata: node.metadata.duplicate(),
17539 object: node.object.duplicate(),
17540 body: node.body.duplicate(),
17541 },
17542 }
17543 }
17544 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17547 if self.is_changed {
17548 TransformResult::Changed(self.build_forced(gc))
17549 } else {
17550 TransformResult::Unchanged
17551 }
17552 }
17553 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17555 gc.alloc(Node::WithStatement(self.inner))
17556 }
17557 pub fn object(&mut self, object: &'gc Node<'gc>) { self.is_changed = true; self.inner.object = object; }
17559 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17561 }
17562 #[derive(Debug)]
17564 pub struct SwitchStatement<'gc> {
17565 is_changed: bool,
17566 pub(super) inner: super::SwitchStatement<'gc>,
17567 }
17568 impl<'gc> SwitchStatement<'gc> {
17569 pub fn from_node(node: &'gc super::SwitchStatement<'gc>) -> Self {
17571 Self {
17572 is_changed: false,
17573 inner: super::SwitchStatement {
17574 metadata: node.metadata.duplicate(),
17575 discriminant: node.discriminant.duplicate(),
17576 cases: node.cases.duplicate(),
17577 label_index: Cell::new(node.label_index.get()),
17578 scope: Cell::new(node.scope.get()),
17579 },
17580 }
17581 }
17582 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17585 if self.is_changed {
17586 TransformResult::Changed(self.build_forced(gc))
17587 } else {
17588 TransformResult::Unchanged
17589 }
17590 }
17591 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17593 gc.alloc(Node::SwitchStatement(self.inner))
17594 }
17595 pub fn discriminant(&mut self, discriminant: &'gc Node<'gc>) { self.is_changed = true; self.inner.discriminant = discriminant; }
17597 pub fn cases(&mut self, cases: NodeList<'gc>) { self.is_changed = true; self.inner.cases = cases; }
17599 }
17600 #[derive(Debug)]
17602 pub struct LabeledStatement<'gc> {
17603 is_changed: bool,
17604 pub(super) inner: super::LabeledStatement<'gc>,
17605 }
17606 impl<'gc> LabeledStatement<'gc> {
17607 pub fn from_node(node: &'gc super::LabeledStatement<'gc>) -> Self {
17609 Self {
17610 is_changed: false,
17611 inner: super::LabeledStatement {
17612 metadata: node.metadata.duplicate(),
17613 label: node.label.duplicate(),
17614 body: node.body.duplicate(),
17615 label_index: Cell::new(node.label_index.get()),
17616 },
17617 }
17618 }
17619 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17622 if self.is_changed {
17623 TransformResult::Changed(self.build_forced(gc))
17624 } else {
17625 TransformResult::Unchanged
17626 }
17627 }
17628 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17630 gc.alloc(Node::LabeledStatement(self.inner))
17631 }
17632 pub fn label(&mut self, label: &'gc Node<'gc>) { self.is_changed = true; self.inner.label = label; }
17634 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
17636 }
17637 #[derive(Debug)]
17639 pub struct ExpressionStatement<'gc> {
17640 is_changed: bool,
17641 pub(super) inner: super::ExpressionStatement<'gc>,
17642 }
17643 impl<'gc> ExpressionStatement<'gc> {
17644 pub fn from_node(node: &'gc super::ExpressionStatement<'gc>) -> Self {
17646 Self {
17647 is_changed: false,
17648 inner: super::ExpressionStatement {
17649 metadata: node.metadata.duplicate(),
17650 expression: node.expression.duplicate(),
17651 directive: Cell::new(node.directive.get()),
17652 },
17653 }
17654 }
17655 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17658 if self.is_changed {
17659 TransformResult::Changed(self.build_forced(gc))
17660 } else {
17661 TransformResult::Unchanged
17662 }
17663 }
17664 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17666 gc.alloc(Node::ExpressionStatement(self.inner))
17667 }
17668 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
17670 }
17671 #[derive(Debug)]
17673 pub struct TryStatement<'gc> {
17674 is_changed: bool,
17675 pub(super) inner: super::TryStatement<'gc>,
17676 }
17677 impl<'gc> TryStatement<'gc> {
17678 pub fn from_node(node: &'gc super::TryStatement<'gc>) -> Self {
17680 Self {
17681 is_changed: false,
17682 inner: super::TryStatement {
17683 metadata: node.metadata.duplicate(),
17684 block: node.block.duplicate(),
17685 handler: node.handler.duplicate(),
17686 finalizer: node.finalizer.duplicate(),
17687 },
17688 }
17689 }
17690 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17693 if self.is_changed {
17694 TransformResult::Changed(self.build_forced(gc))
17695 } else {
17696 TransformResult::Unchanged
17697 }
17698 }
17699 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17701 gc.alloc(Node::TryStatement(self.inner))
17702 }
17703 pub fn block(&mut self, block: &'gc Node<'gc>) { self.is_changed = true; self.inner.block = block; }
17705 pub fn handler(&mut self, handler: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.handler = handler; }
17707 pub fn finalizer(&mut self, finalizer: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.finalizer = finalizer; }
17709 }
17710 #[derive(Debug)]
17712 pub struct IfStatement<'gc> {
17713 is_changed: bool,
17714 pub(super) inner: super::IfStatement<'gc>,
17715 }
17716 impl<'gc> IfStatement<'gc> {
17717 pub fn from_node(node: &'gc super::IfStatement<'gc>) -> Self {
17719 Self {
17720 is_changed: false,
17721 inner: super::IfStatement {
17722 metadata: node.metadata.duplicate(),
17723 test: node.test.duplicate(),
17724 consequent: node.consequent.duplicate(),
17725 alternate: node.alternate.duplicate(),
17726 },
17727 }
17728 }
17729 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17732 if self.is_changed {
17733 TransformResult::Changed(self.build_forced(gc))
17734 } else {
17735 TransformResult::Unchanged
17736 }
17737 }
17738 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17740 gc.alloc(Node::IfStatement(self.inner))
17741 }
17742 pub fn test(&mut self, test: &'gc Node<'gc>) { self.is_changed = true; self.inner.test = test; }
17744 pub fn consequent(&mut self, consequent: &'gc Node<'gc>) { self.is_changed = true; self.inner.consequent = consequent; }
17746 pub fn alternate(&mut self, alternate: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.alternate = alternate; }
17748 }
17749 #[derive(Debug)]
17751 pub struct NullLiteral<'gc> {
17752 is_changed: bool,
17753 pub(super) inner: super::NullLiteral<'gc>,
17754 }
17755 impl<'gc> NullLiteral<'gc> {
17756 pub fn from_node(node: &'gc super::NullLiteral<'gc>) -> Self {
17758 Self {
17759 is_changed: false,
17760 inner: super::NullLiteral {
17761 metadata: node.metadata.duplicate(),
17762 },
17763 }
17764 }
17765 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17768 if self.is_changed {
17769 TransformResult::Changed(self.build_forced(gc))
17770 } else {
17771 TransformResult::Unchanged
17772 }
17773 }
17774 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17776 gc.alloc(Node::NullLiteral(self.inner))
17777 }
17778 }
17779 #[derive(Debug)]
17781 pub struct BooleanLiteral<'gc> {
17782 is_changed: bool,
17783 pub(super) inner: super::BooleanLiteral<'gc>,
17784 }
17785 impl<'gc> BooleanLiteral<'gc> {
17786 pub fn from_node(node: &'gc super::BooleanLiteral<'gc>) -> Self {
17788 Self {
17789 is_changed: false,
17790 inner: super::BooleanLiteral {
17791 metadata: node.metadata.duplicate(),
17792 value: Cell::new(node.value.get()),
17793 },
17794 }
17795 }
17796 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17799 if self.is_changed {
17800 TransformResult::Changed(self.build_forced(gc))
17801 } else {
17802 TransformResult::Unchanged
17803 }
17804 }
17805 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17807 gc.alloc(Node::BooleanLiteral(self.inner))
17808 }
17809 }
17810 #[derive(Debug)]
17812 pub struct StringLiteral<'gc> {
17813 is_changed: bool,
17814 pub(super) inner: super::StringLiteral<'gc>,
17815 }
17816 impl<'gc> StringLiteral<'gc> {
17817 pub fn from_node(node: &'gc super::StringLiteral<'gc>) -> Self {
17819 Self {
17820 is_changed: false,
17821 inner: super::StringLiteral {
17822 metadata: node.metadata.duplicate(),
17823 value: Cell::new(node.value.get()),
17824 },
17825 }
17826 }
17827 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17830 if self.is_changed {
17831 TransformResult::Changed(self.build_forced(gc))
17832 } else {
17833 TransformResult::Unchanged
17834 }
17835 }
17836 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17838 gc.alloc(Node::StringLiteral(self.inner))
17839 }
17840 }
17841 #[derive(Debug)]
17843 pub struct NumericLiteral<'gc> {
17844 is_changed: bool,
17845 pub(super) inner: super::NumericLiteral<'gc>,
17846 }
17847 impl<'gc> NumericLiteral<'gc> {
17848 pub fn from_node(node: &'gc super::NumericLiteral<'gc>) -> Self {
17850 Self {
17851 is_changed: false,
17852 inner: super::NumericLiteral {
17853 metadata: node.metadata.duplicate(),
17854 value: Cell::new(node.value.get()),
17855 },
17856 }
17857 }
17858 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17861 if self.is_changed {
17862 TransformResult::Changed(self.build_forced(gc))
17863 } else {
17864 TransformResult::Unchanged
17865 }
17866 }
17867 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17869 gc.alloc(Node::NumericLiteral(self.inner))
17870 }
17871 }
17872 #[derive(Debug)]
17874 pub struct RegExpLiteral<'gc> {
17875 is_changed: bool,
17876 pub(super) inner: super::RegExpLiteral<'gc>,
17877 }
17878 impl<'gc> RegExpLiteral<'gc> {
17879 pub fn from_node(node: &'gc super::RegExpLiteral<'gc>) -> Self {
17881 Self {
17882 is_changed: false,
17883 inner: super::RegExpLiteral {
17884 metadata: node.metadata.duplicate(),
17885 pattern: Cell::new(node.pattern.get()),
17886 flags: Cell::new(node.flags.get()),
17887 },
17888 }
17889 }
17890 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17893 if self.is_changed {
17894 TransformResult::Changed(self.build_forced(gc))
17895 } else {
17896 TransformResult::Unchanged
17897 }
17898 }
17899 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17901 gc.alloc(Node::RegExpLiteral(self.inner))
17902 }
17903 }
17904 #[derive(Debug)]
17906 pub struct BigIntLiteral<'gc> {
17907 is_changed: bool,
17908 pub(super) inner: super::BigIntLiteral<'gc>,
17909 }
17910 impl<'gc> BigIntLiteral<'gc> {
17911 pub fn from_node(node: &'gc super::BigIntLiteral<'gc>) -> Self {
17913 Self {
17914 is_changed: false,
17915 inner: super::BigIntLiteral {
17916 metadata: node.metadata.duplicate(),
17917 bigint: Cell::new(node.bigint.get()),
17918 },
17919 }
17920 }
17921 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17924 if self.is_changed {
17925 TransformResult::Changed(self.build_forced(gc))
17926 } else {
17927 TransformResult::Unchanged
17928 }
17929 }
17930 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17932 gc.alloc(Node::BigIntLiteral(self.inner))
17933 }
17934 }
17935 #[derive(Debug)]
17937 pub struct ThisExpression<'gc> {
17938 is_changed: bool,
17939 pub(super) inner: super::ThisExpression<'gc>,
17940 }
17941 impl<'gc> ThisExpression<'gc> {
17942 pub fn from_node(node: &'gc super::ThisExpression<'gc>) -> Self {
17944 Self {
17945 is_changed: false,
17946 inner: super::ThisExpression {
17947 metadata: node.metadata.duplicate(),
17948 },
17949 }
17950 }
17951 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17954 if self.is_changed {
17955 TransformResult::Changed(self.build_forced(gc))
17956 } else {
17957 TransformResult::Unchanged
17958 }
17959 }
17960 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17962 gc.alloc(Node::ThisExpression(self.inner))
17963 }
17964 }
17965 #[derive(Debug)]
17967 pub struct Super<'gc> {
17968 is_changed: bool,
17969 pub(super) inner: super::Super<'gc>,
17970 }
17971 impl<'gc> Super<'gc> {
17972 pub fn from_node(node: &'gc super::Super<'gc>) -> Self {
17974 Self {
17975 is_changed: false,
17976 inner: super::Super {
17977 metadata: node.metadata.duplicate(),
17978 },
17979 }
17980 }
17981 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
17984 if self.is_changed {
17985 TransformResult::Changed(self.build_forced(gc))
17986 } else {
17987 TransformResult::Unchanged
17988 }
17989 }
17990 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
17992 gc.alloc(Node::Super(self.inner))
17993 }
17994 }
17995 #[derive(Debug)]
17997 pub struct SequenceExpression<'gc> {
17998 is_changed: bool,
17999 pub(super) inner: super::SequenceExpression<'gc>,
18000 }
18001 impl<'gc> SequenceExpression<'gc> {
18002 pub fn from_node(node: &'gc super::SequenceExpression<'gc>) -> Self {
18004 Self {
18005 is_changed: false,
18006 inner: super::SequenceExpression {
18007 metadata: node.metadata.duplicate(),
18008 expressions: node.expressions.duplicate(),
18009 },
18010 }
18011 }
18012 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18015 if self.is_changed {
18016 TransformResult::Changed(self.build_forced(gc))
18017 } else {
18018 TransformResult::Unchanged
18019 }
18020 }
18021 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18023 gc.alloc(Node::SequenceExpression(self.inner))
18024 }
18025 pub fn expressions(&mut self, expressions: NodeList<'gc>) { self.is_changed = true; self.inner.expressions = expressions; }
18027 }
18028 #[derive(Debug)]
18030 pub struct ObjectExpression<'gc> {
18031 is_changed: bool,
18032 pub(super) inner: super::ObjectExpression<'gc>,
18033 }
18034 impl<'gc> ObjectExpression<'gc> {
18035 pub fn from_node(node: &'gc super::ObjectExpression<'gc>) -> Self {
18037 Self {
18038 is_changed: false,
18039 inner: super::ObjectExpression {
18040 metadata: node.metadata.duplicate(),
18041 properties: node.properties.duplicate(),
18042 },
18043 }
18044 }
18045 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18048 if self.is_changed {
18049 TransformResult::Changed(self.build_forced(gc))
18050 } else {
18051 TransformResult::Unchanged
18052 }
18053 }
18054 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18056 gc.alloc(Node::ObjectExpression(self.inner))
18057 }
18058 pub fn properties(&mut self, properties: NodeList<'gc>) { self.is_changed = true; self.inner.properties = properties; }
18060 }
18061 #[derive(Debug)]
18063 pub struct ArrayExpression<'gc> {
18064 is_changed: bool,
18065 pub(super) inner: super::ArrayExpression<'gc>,
18066 }
18067 impl<'gc> ArrayExpression<'gc> {
18068 pub fn from_node(node: &'gc super::ArrayExpression<'gc>) -> Self {
18070 Self {
18071 is_changed: false,
18072 inner: super::ArrayExpression {
18073 metadata: node.metadata.duplicate(),
18074 elements: node.elements.duplicate(),
18075 trailing_comma: Cell::new(node.trailing_comma.get()),
18076 },
18077 }
18078 }
18079 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18082 if self.is_changed {
18083 TransformResult::Changed(self.build_forced(gc))
18084 } else {
18085 TransformResult::Unchanged
18086 }
18087 }
18088 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18090 gc.alloc(Node::ArrayExpression(self.inner))
18091 }
18092 pub fn elements(&mut self, elements: NodeList<'gc>) { self.is_changed = true; self.inner.elements = elements; }
18094 }
18095 #[derive(Debug)]
18097 pub struct SpreadElement<'gc> {
18098 is_changed: bool,
18099 pub(super) inner: super::SpreadElement<'gc>,
18100 }
18101 impl<'gc> SpreadElement<'gc> {
18102 pub fn from_node(node: &'gc super::SpreadElement<'gc>) -> Self {
18104 Self {
18105 is_changed: false,
18106 inner: super::SpreadElement {
18107 metadata: node.metadata.duplicate(),
18108 argument: node.argument.duplicate(),
18109 },
18110 }
18111 }
18112 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18115 if self.is_changed {
18116 TransformResult::Changed(self.build_forced(gc))
18117 } else {
18118 TransformResult::Unchanged
18119 }
18120 }
18121 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18123 gc.alloc(Node::SpreadElement(self.inner))
18124 }
18125 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
18127 }
18128 #[derive(Debug)]
18130 pub struct NewExpression<'gc> {
18131 is_changed: bool,
18132 pub(super) inner: super::NewExpression<'gc>,
18133 }
18134 impl<'gc> NewExpression<'gc> {
18135 pub fn from_node(node: &'gc super::NewExpression<'gc>) -> Self {
18137 Self {
18138 is_changed: false,
18139 inner: super::NewExpression {
18140 metadata: node.metadata.duplicate(),
18141 callee: node.callee.duplicate(),
18142 type_arguments: node.type_arguments.duplicate(),
18143 arguments: node.arguments.duplicate(),
18144 },
18145 }
18146 }
18147 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18150 if self.is_changed {
18151 TransformResult::Changed(self.build_forced(gc))
18152 } else {
18153 TransformResult::Unchanged
18154 }
18155 }
18156 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18158 gc.alloc(Node::NewExpression(self.inner))
18159 }
18160 pub fn callee(&mut self, callee: &'gc Node<'gc>) { self.is_changed = true; self.inner.callee = callee; }
18162 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
18164 pub fn arguments(&mut self, arguments: NodeList<'gc>) { self.is_changed = true; self.inner.arguments = arguments; }
18166 }
18167 #[derive(Debug)]
18169 pub struct YieldExpression<'gc> {
18170 is_changed: bool,
18171 pub(super) inner: super::YieldExpression<'gc>,
18172 }
18173 impl<'gc> YieldExpression<'gc> {
18174 pub fn from_node(node: &'gc super::YieldExpression<'gc>) -> Self {
18176 Self {
18177 is_changed: false,
18178 inner: super::YieldExpression {
18179 metadata: node.metadata.duplicate(),
18180 argument: node.argument.duplicate(),
18181 delegate: Cell::new(node.delegate.get()),
18182 },
18183 }
18184 }
18185 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18188 if self.is_changed {
18189 TransformResult::Changed(self.build_forced(gc))
18190 } else {
18191 TransformResult::Unchanged
18192 }
18193 }
18194 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18196 gc.alloc(Node::YieldExpression(self.inner))
18197 }
18198 pub fn argument(&mut self, argument: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.argument = argument; }
18200 }
18201 #[derive(Debug)]
18203 pub struct AwaitExpression<'gc> {
18204 is_changed: bool,
18205 pub(super) inner: super::AwaitExpression<'gc>,
18206 }
18207 impl<'gc> AwaitExpression<'gc> {
18208 pub fn from_node(node: &'gc super::AwaitExpression<'gc>) -> Self {
18210 Self {
18211 is_changed: false,
18212 inner: super::AwaitExpression {
18213 metadata: node.metadata.duplicate(),
18214 argument: node.argument.duplicate(),
18215 },
18216 }
18217 }
18218 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18221 if self.is_changed {
18222 TransformResult::Changed(self.build_forced(gc))
18223 } else {
18224 TransformResult::Unchanged
18225 }
18226 }
18227 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18229 gc.alloc(Node::AwaitExpression(self.inner))
18230 }
18231 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
18233 }
18234 #[derive(Debug)]
18236 pub struct ImportExpression<'gc> {
18237 is_changed: bool,
18238 pub(super) inner: super::ImportExpression<'gc>,
18239 }
18240 impl<'gc> ImportExpression<'gc> {
18241 pub fn from_node(node: &'gc super::ImportExpression<'gc>) -> Self {
18243 Self {
18244 is_changed: false,
18245 inner: super::ImportExpression {
18246 metadata: node.metadata.duplicate(),
18247 source: node.source.duplicate(),
18248 options: node.options.duplicate(),
18249 },
18250 }
18251 }
18252 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18255 if self.is_changed {
18256 TransformResult::Changed(self.build_forced(gc))
18257 } else {
18258 TransformResult::Unchanged
18259 }
18260 }
18261 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18263 gc.alloc(Node::ImportExpression(self.inner))
18264 }
18265 pub fn source(&mut self, source: &'gc Node<'gc>) { self.is_changed = true; self.inner.source = source; }
18267 pub fn options(&mut self, options: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.options = options; }
18269 }
18270 #[derive(Debug)]
18272 pub struct CallExpression<'gc> {
18273 is_changed: bool,
18274 pub(super) inner: super::CallExpression<'gc>,
18275 }
18276 impl<'gc> CallExpression<'gc> {
18277 pub fn from_node(node: &'gc super::CallExpression<'gc>) -> Self {
18279 Self {
18280 is_changed: false,
18281 inner: super::CallExpression {
18282 metadata: node.metadata.duplicate(),
18283 callee: node.callee.duplicate(),
18284 type_arguments: node.type_arguments.duplicate(),
18285 arguments: node.arguments.duplicate(),
18286 },
18287 }
18288 }
18289 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18292 if self.is_changed {
18293 TransformResult::Changed(self.build_forced(gc))
18294 } else {
18295 TransformResult::Unchanged
18296 }
18297 }
18298 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18300 gc.alloc(Node::CallExpression(self.inner))
18301 }
18302 pub fn callee(&mut self, callee: &'gc Node<'gc>) { self.is_changed = true; self.inner.callee = callee; }
18304 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
18306 pub fn arguments(&mut self, arguments: NodeList<'gc>) { self.is_changed = true; self.inner.arguments = arguments; }
18308 }
18309 #[derive(Debug)]
18311 pub struct OptionalCallExpression<'gc> {
18312 is_changed: bool,
18313 pub(super) inner: super::OptionalCallExpression<'gc>,
18314 }
18315 impl<'gc> OptionalCallExpression<'gc> {
18316 pub fn from_node(node: &'gc super::OptionalCallExpression<'gc>) -> Self {
18318 Self {
18319 is_changed: false,
18320 inner: super::OptionalCallExpression {
18321 metadata: node.metadata.duplicate(),
18322 callee: node.callee.duplicate(),
18323 type_arguments: node.type_arguments.duplicate(),
18324 arguments: node.arguments.duplicate(),
18325 optional: Cell::new(node.optional.get()),
18326 },
18327 }
18328 }
18329 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18332 if self.is_changed {
18333 TransformResult::Changed(self.build_forced(gc))
18334 } else {
18335 TransformResult::Unchanged
18336 }
18337 }
18338 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18340 gc.alloc(Node::OptionalCallExpression(self.inner))
18341 }
18342 pub fn callee(&mut self, callee: &'gc Node<'gc>) { self.is_changed = true; self.inner.callee = callee; }
18344 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
18346 pub fn arguments(&mut self, arguments: NodeList<'gc>) { self.is_changed = true; self.inner.arguments = arguments; }
18348 }
18349 #[derive(Debug)]
18351 pub struct AssignmentExpression<'gc> {
18352 is_changed: bool,
18353 pub(super) inner: super::AssignmentExpression<'gc>,
18354 }
18355 impl<'gc> AssignmentExpression<'gc> {
18356 pub fn from_node(node: &'gc super::AssignmentExpression<'gc>) -> Self {
18358 Self {
18359 is_changed: false,
18360 inner: super::AssignmentExpression {
18361 metadata: node.metadata.duplicate(),
18362 operator: Cell::new(node.operator.get()),
18363 left: node.left.duplicate(),
18364 right: node.right.duplicate(),
18365 },
18366 }
18367 }
18368 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18371 if self.is_changed {
18372 TransformResult::Changed(self.build_forced(gc))
18373 } else {
18374 TransformResult::Unchanged
18375 }
18376 }
18377 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18379 gc.alloc(Node::AssignmentExpression(self.inner))
18380 }
18381 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
18383 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
18385 }
18386 #[derive(Debug)]
18388 pub struct UnaryExpression<'gc> {
18389 is_changed: bool,
18390 pub(super) inner: super::UnaryExpression<'gc>,
18391 }
18392 impl<'gc> UnaryExpression<'gc> {
18393 pub fn from_node(node: &'gc super::UnaryExpression<'gc>) -> Self {
18395 Self {
18396 is_changed: false,
18397 inner: super::UnaryExpression {
18398 metadata: node.metadata.duplicate(),
18399 operator: Cell::new(node.operator.get()),
18400 argument: node.argument.duplicate(),
18401 prefix: Cell::new(node.prefix.get()),
18402 },
18403 }
18404 }
18405 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18408 if self.is_changed {
18409 TransformResult::Changed(self.build_forced(gc))
18410 } else {
18411 TransformResult::Unchanged
18412 }
18413 }
18414 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18416 gc.alloc(Node::UnaryExpression(self.inner))
18417 }
18418 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
18420 }
18421 #[derive(Debug)]
18423 pub struct UpdateExpression<'gc> {
18424 is_changed: bool,
18425 pub(super) inner: super::UpdateExpression<'gc>,
18426 }
18427 impl<'gc> UpdateExpression<'gc> {
18428 pub fn from_node(node: &'gc super::UpdateExpression<'gc>) -> Self {
18430 Self {
18431 is_changed: false,
18432 inner: super::UpdateExpression {
18433 metadata: node.metadata.duplicate(),
18434 operator: Cell::new(node.operator.get()),
18435 argument: node.argument.duplicate(),
18436 prefix: Cell::new(node.prefix.get()),
18437 },
18438 }
18439 }
18440 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18443 if self.is_changed {
18444 TransformResult::Changed(self.build_forced(gc))
18445 } else {
18446 TransformResult::Unchanged
18447 }
18448 }
18449 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18451 gc.alloc(Node::UpdateExpression(self.inner))
18452 }
18453 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
18455 }
18456 #[derive(Debug)]
18458 pub struct MemberExpression<'gc> {
18459 is_changed: bool,
18460 pub(super) inner: super::MemberExpression<'gc>,
18461 }
18462 impl<'gc> MemberExpression<'gc> {
18463 pub fn from_node(node: &'gc super::MemberExpression<'gc>) -> Self {
18465 Self {
18466 is_changed: false,
18467 inner: super::MemberExpression {
18468 metadata: node.metadata.duplicate(),
18469 object: node.object.duplicate(),
18470 property: node.property.duplicate(),
18471 computed: Cell::new(node.computed.get()),
18472 },
18473 }
18474 }
18475 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18478 if self.is_changed {
18479 TransformResult::Changed(self.build_forced(gc))
18480 } else {
18481 TransformResult::Unchanged
18482 }
18483 }
18484 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18486 gc.alloc(Node::MemberExpression(self.inner))
18487 }
18488 pub fn object(&mut self, object: &'gc Node<'gc>) { self.is_changed = true; self.inner.object = object; }
18490 pub fn property(&mut self, property: &'gc Node<'gc>) { self.is_changed = true; self.inner.property = property; }
18492 }
18493 #[derive(Debug)]
18495 pub struct OptionalMemberExpression<'gc> {
18496 is_changed: bool,
18497 pub(super) inner: super::OptionalMemberExpression<'gc>,
18498 }
18499 impl<'gc> OptionalMemberExpression<'gc> {
18500 pub fn from_node(node: &'gc super::OptionalMemberExpression<'gc>) -> Self {
18502 Self {
18503 is_changed: false,
18504 inner: super::OptionalMemberExpression {
18505 metadata: node.metadata.duplicate(),
18506 object: node.object.duplicate(),
18507 property: node.property.duplicate(),
18508 computed: Cell::new(node.computed.get()),
18509 optional: Cell::new(node.optional.get()),
18510 },
18511 }
18512 }
18513 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18516 if self.is_changed {
18517 TransformResult::Changed(self.build_forced(gc))
18518 } else {
18519 TransformResult::Unchanged
18520 }
18521 }
18522 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18524 gc.alloc(Node::OptionalMemberExpression(self.inner))
18525 }
18526 pub fn object(&mut self, object: &'gc Node<'gc>) { self.is_changed = true; self.inner.object = object; }
18528 pub fn property(&mut self, property: &'gc Node<'gc>) { self.is_changed = true; self.inner.property = property; }
18530 }
18531 #[derive(Debug)]
18533 pub struct LogicalExpression<'gc> {
18534 is_changed: bool,
18535 pub(super) inner: super::LogicalExpression<'gc>,
18536 }
18537 impl<'gc> LogicalExpression<'gc> {
18538 pub fn from_node(node: &'gc super::LogicalExpression<'gc>) -> Self {
18540 Self {
18541 is_changed: false,
18542 inner: super::LogicalExpression {
18543 metadata: node.metadata.duplicate(),
18544 left: node.left.duplicate(),
18545 right: node.right.duplicate(),
18546 operator: Cell::new(node.operator.get()),
18547 },
18548 }
18549 }
18550 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18553 if self.is_changed {
18554 TransformResult::Changed(self.build_forced(gc))
18555 } else {
18556 TransformResult::Unchanged
18557 }
18558 }
18559 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18561 gc.alloc(Node::LogicalExpression(self.inner))
18562 }
18563 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
18565 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
18567 }
18568 #[derive(Debug)]
18570 pub struct ConditionalExpression<'gc> {
18571 is_changed: bool,
18572 pub(super) inner: super::ConditionalExpression<'gc>,
18573 }
18574 impl<'gc> ConditionalExpression<'gc> {
18575 pub fn from_node(node: &'gc super::ConditionalExpression<'gc>) -> Self {
18577 Self {
18578 is_changed: false,
18579 inner: super::ConditionalExpression {
18580 metadata: node.metadata.duplicate(),
18581 test: node.test.duplicate(),
18582 alternate: node.alternate.duplicate(),
18583 consequent: node.consequent.duplicate(),
18584 },
18585 }
18586 }
18587 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18590 if self.is_changed {
18591 TransformResult::Changed(self.build_forced(gc))
18592 } else {
18593 TransformResult::Unchanged
18594 }
18595 }
18596 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18598 gc.alloc(Node::ConditionalExpression(self.inner))
18599 }
18600 pub fn test(&mut self, test: &'gc Node<'gc>) { self.is_changed = true; self.inner.test = test; }
18602 pub fn alternate(&mut self, alternate: &'gc Node<'gc>) { self.is_changed = true; self.inner.alternate = alternate; }
18604 pub fn consequent(&mut self, consequent: &'gc Node<'gc>) { self.is_changed = true; self.inner.consequent = consequent; }
18606 }
18607 #[derive(Debug)]
18609 pub struct BinaryExpression<'gc> {
18610 is_changed: bool,
18611 pub(super) inner: super::BinaryExpression<'gc>,
18612 }
18613 impl<'gc> BinaryExpression<'gc> {
18614 pub fn from_node(node: &'gc super::BinaryExpression<'gc>) -> Self {
18616 Self {
18617 is_changed: false,
18618 inner: super::BinaryExpression {
18619 metadata: node.metadata.duplicate(),
18620 left: node.left.duplicate(),
18621 right: node.right.duplicate(),
18622 operator: Cell::new(node.operator.get()),
18623 },
18624 }
18625 }
18626 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18629 if self.is_changed {
18630 TransformResult::Changed(self.build_forced(gc))
18631 } else {
18632 TransformResult::Unchanged
18633 }
18634 }
18635 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18637 gc.alloc(Node::BinaryExpression(self.inner))
18638 }
18639 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
18641 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
18643 }
18644 #[derive(Debug)]
18646 pub struct Directive<'gc> {
18647 is_changed: bool,
18648 pub(super) inner: super::Directive<'gc>,
18649 }
18650 impl<'gc> Directive<'gc> {
18651 pub fn from_node(node: &'gc super::Directive<'gc>) -> Self {
18653 Self {
18654 is_changed: false,
18655 inner: super::Directive {
18656 metadata: node.metadata.duplicate(),
18657 value: node.value.duplicate(),
18658 },
18659 }
18660 }
18661 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18664 if self.is_changed {
18665 TransformResult::Changed(self.build_forced(gc))
18666 } else {
18667 TransformResult::Unchanged
18668 }
18669 }
18670 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18672 gc.alloc(Node::Directive(self.inner))
18673 }
18674 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
18676 }
18677 #[derive(Debug)]
18679 pub struct DirectiveLiteral<'gc> {
18680 is_changed: bool,
18681 pub(super) inner: super::DirectiveLiteral<'gc>,
18682 }
18683 impl<'gc> DirectiveLiteral<'gc> {
18684 pub fn from_node(node: &'gc super::DirectiveLiteral<'gc>) -> Self {
18686 Self {
18687 is_changed: false,
18688 inner: super::DirectiveLiteral {
18689 metadata: node.metadata.duplicate(),
18690 value: Cell::new(node.value.get()),
18691 },
18692 }
18693 }
18694 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18697 if self.is_changed {
18698 TransformResult::Changed(self.build_forced(gc))
18699 } else {
18700 TransformResult::Unchanged
18701 }
18702 }
18703 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18705 gc.alloc(Node::DirectiveLiteral(self.inner))
18706 }
18707 }
18708 #[derive(Debug)]
18710 pub struct Identifier<'gc> {
18711 is_changed: bool,
18712 pub(super) inner: super::Identifier<'gc>,
18713 }
18714 impl<'gc> Identifier<'gc> {
18715 pub fn from_node(node: &'gc super::Identifier<'gc>) -> Self {
18717 Self {
18718 is_changed: false,
18719 inner: super::Identifier {
18720 metadata: node.metadata.duplicate(),
18721 name: Cell::new(node.name.get()),
18722 type_annotation: node.type_annotation.duplicate(),
18723 optional: Cell::new(node.optional.get()),
18724 unresolvable: Cell::new(node.unresolvable.get()),
18725 decl_state: Cell::new(node.decl_state.get()),
18726 decl: Cell::new(node.decl.get()),
18727 },
18728 }
18729 }
18730 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18733 if self.is_changed {
18734 TransformResult::Changed(self.build_forced(gc))
18735 } else {
18736 TransformResult::Unchanged
18737 }
18738 }
18739 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18741 gc.alloc(Node::Identifier(self.inner))
18742 }
18743 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
18745 }
18746 #[derive(Debug)]
18748 pub struct PrivateName<'gc> {
18749 is_changed: bool,
18750 pub(super) inner: super::PrivateName<'gc>,
18751 }
18752 impl<'gc> PrivateName<'gc> {
18753 pub fn from_node(node: &'gc super::PrivateName<'gc>) -> Self {
18755 Self {
18756 is_changed: false,
18757 inner: super::PrivateName {
18758 metadata: node.metadata.duplicate(),
18759 id: node.id.duplicate(),
18760 },
18761 }
18762 }
18763 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18766 if self.is_changed {
18767 TransformResult::Changed(self.build_forced(gc))
18768 } else {
18769 TransformResult::Unchanged
18770 }
18771 }
18772 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18774 gc.alloc(Node::PrivateName(self.inner))
18775 }
18776 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
18778 }
18779 #[derive(Debug)]
18781 pub struct MetaProperty<'gc> {
18782 is_changed: bool,
18783 pub(super) inner: super::MetaProperty<'gc>,
18784 }
18785 impl<'gc> MetaProperty<'gc> {
18786 pub fn from_node(node: &'gc super::MetaProperty<'gc>) -> Self {
18788 Self {
18789 is_changed: false,
18790 inner: super::MetaProperty {
18791 metadata: node.metadata.duplicate(),
18792 meta: node.meta.duplicate(),
18793 property: node.property.duplicate(),
18794 },
18795 }
18796 }
18797 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18800 if self.is_changed {
18801 TransformResult::Changed(self.build_forced(gc))
18802 } else {
18803 TransformResult::Unchanged
18804 }
18805 }
18806 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18808 gc.alloc(Node::MetaProperty(self.inner))
18809 }
18810 pub fn meta(&mut self, meta: &'gc Node<'gc>) { self.is_changed = true; self.inner.meta = meta; }
18812 pub fn property(&mut self, property: &'gc Node<'gc>) { self.is_changed = true; self.inner.property = property; }
18814 }
18815 #[derive(Debug)]
18817 pub struct SwitchCase<'gc> {
18818 is_changed: bool,
18819 pub(super) inner: super::SwitchCase<'gc>,
18820 }
18821 impl<'gc> SwitchCase<'gc> {
18822 pub fn from_node(node: &'gc super::SwitchCase<'gc>) -> Self {
18824 Self {
18825 is_changed: false,
18826 inner: super::SwitchCase {
18827 metadata: node.metadata.duplicate(),
18828 test: node.test.duplicate(),
18829 consequent: node.consequent.duplicate(),
18830 },
18831 }
18832 }
18833 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18836 if self.is_changed {
18837 TransformResult::Changed(self.build_forced(gc))
18838 } else {
18839 TransformResult::Unchanged
18840 }
18841 }
18842 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18844 gc.alloc(Node::SwitchCase(self.inner))
18845 }
18846 pub fn test(&mut self, test: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.test = test; }
18848 pub fn consequent(&mut self, consequent: NodeList<'gc>) { self.is_changed = true; self.inner.consequent = consequent; }
18850 }
18851 #[derive(Debug)]
18853 pub struct CatchClause<'gc> {
18854 is_changed: bool,
18855 pub(super) inner: super::CatchClause<'gc>,
18856 }
18857 impl<'gc> CatchClause<'gc> {
18858 pub fn from_node(node: &'gc super::CatchClause<'gc>) -> Self {
18860 Self {
18861 is_changed: false,
18862 inner: super::CatchClause {
18863 metadata: node.metadata.duplicate(),
18864 param: node.param.duplicate(),
18865 body: node.body.duplicate(),
18866 scope: Cell::new(node.scope.get()),
18867 },
18868 }
18869 }
18870 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18873 if self.is_changed {
18874 TransformResult::Changed(self.build_forced(gc))
18875 } else {
18876 TransformResult::Unchanged
18877 }
18878 }
18879 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18881 gc.alloc(Node::CatchClause(self.inner))
18882 }
18883 pub fn param(&mut self, param: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.param = param; }
18885 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
18887 }
18888 #[derive(Debug)]
18890 pub struct VariableDeclarator<'gc> {
18891 is_changed: bool,
18892 pub(super) inner: super::VariableDeclarator<'gc>,
18893 }
18894 impl<'gc> VariableDeclarator<'gc> {
18895 pub fn from_node(node: &'gc super::VariableDeclarator<'gc>) -> Self {
18897 Self {
18898 is_changed: false,
18899 inner: super::VariableDeclarator {
18900 metadata: node.metadata.duplicate(),
18901 init: node.init.duplicate(),
18902 id: node.id.duplicate(),
18903 },
18904 }
18905 }
18906 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18909 if self.is_changed {
18910 TransformResult::Changed(self.build_forced(gc))
18911 } else {
18912 TransformResult::Unchanged
18913 }
18914 }
18915 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18917 gc.alloc(Node::VariableDeclarator(self.inner))
18918 }
18919 pub fn init(&mut self, init: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.init = init; }
18921 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
18923 }
18924 #[derive(Debug)]
18926 pub struct VariableDeclaration<'gc> {
18927 is_changed: bool,
18928 pub(super) inner: super::VariableDeclaration<'gc>,
18929 }
18930 impl<'gc> VariableDeclaration<'gc> {
18931 pub fn from_node(node: &'gc super::VariableDeclaration<'gc>) -> Self {
18933 Self {
18934 is_changed: false,
18935 inner: super::VariableDeclaration {
18936 metadata: node.metadata.duplicate(),
18937 kind: Cell::new(node.kind.get()),
18938 declarations: node.declarations.duplicate(),
18939 },
18940 }
18941 }
18942 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18945 if self.is_changed {
18946 TransformResult::Changed(self.build_forced(gc))
18947 } else {
18948 TransformResult::Unchanged
18949 }
18950 }
18951 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18953 gc.alloc(Node::VariableDeclaration(self.inner))
18954 }
18955 pub fn declarations(&mut self, declarations: NodeList<'gc>) { self.is_changed = true; self.inner.declarations = declarations; }
18957 }
18958 #[derive(Debug)]
18960 pub struct TemplateLiteral<'gc> {
18961 is_changed: bool,
18962 pub(super) inner: super::TemplateLiteral<'gc>,
18963 }
18964 impl<'gc> TemplateLiteral<'gc> {
18965 pub fn from_node(node: &'gc super::TemplateLiteral<'gc>) -> Self {
18967 Self {
18968 is_changed: false,
18969 inner: super::TemplateLiteral {
18970 metadata: node.metadata.duplicate(),
18971 quasis: node.quasis.duplicate(),
18972 expressions: node.expressions.duplicate(),
18973 },
18974 }
18975 }
18976 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
18979 if self.is_changed {
18980 TransformResult::Changed(self.build_forced(gc))
18981 } else {
18982 TransformResult::Unchanged
18983 }
18984 }
18985 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
18987 gc.alloc(Node::TemplateLiteral(self.inner))
18988 }
18989 pub fn quasis(&mut self, quasis: NodeList<'gc>) { self.is_changed = true; self.inner.quasis = quasis; }
18991 pub fn expressions(&mut self, expressions: NodeList<'gc>) { self.is_changed = true; self.inner.expressions = expressions; }
18993 }
18994 #[derive(Debug)]
18996 pub struct TaggedTemplateExpression<'gc> {
18997 is_changed: bool,
18998 pub(super) inner: super::TaggedTemplateExpression<'gc>,
18999 }
19000 impl<'gc> TaggedTemplateExpression<'gc> {
19001 pub fn from_node(node: &'gc super::TaggedTemplateExpression<'gc>) -> Self {
19003 Self {
19004 is_changed: false,
19005 inner: super::TaggedTemplateExpression {
19006 metadata: node.metadata.duplicate(),
19007 tag: node.tag.duplicate(),
19008 quasi: node.quasi.duplicate(),
19009 },
19010 }
19011 }
19012 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19015 if self.is_changed {
19016 TransformResult::Changed(self.build_forced(gc))
19017 } else {
19018 TransformResult::Unchanged
19019 }
19020 }
19021 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19023 gc.alloc(Node::TaggedTemplateExpression(self.inner))
19024 }
19025 pub fn tag(&mut self, tag: &'gc Node<'gc>) { self.is_changed = true; self.inner.tag = tag; }
19027 pub fn quasi(&mut self, quasi: &'gc Node<'gc>) { self.is_changed = true; self.inner.quasi = quasi; }
19029 }
19030 #[derive(Debug)]
19032 pub struct TemplateElement<'gc> {
19033 is_changed: bool,
19034 pub(super) inner: super::TemplateElement<'gc>,
19035 }
19036 impl<'gc> TemplateElement<'gc> {
19037 pub fn from_node(node: &'gc super::TemplateElement<'gc>) -> Self {
19039 Self {
19040 is_changed: false,
19041 inner: super::TemplateElement {
19042 metadata: node.metadata.duplicate(),
19043 tail: Cell::new(node.tail.get()),
19044 cooked: Cell::new(node.cooked.get()),
19045 raw: Cell::new(node.raw.get()),
19046 },
19047 }
19048 }
19049 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19052 if self.is_changed {
19053 TransformResult::Changed(self.build_forced(gc))
19054 } else {
19055 TransformResult::Unchanged
19056 }
19057 }
19058 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19060 gc.alloc(Node::TemplateElement(self.inner))
19061 }
19062 }
19063 #[derive(Debug)]
19065 pub struct Property<'gc> {
19066 is_changed: bool,
19067 pub(super) inner: super::Property<'gc>,
19068 }
19069 impl<'gc> Property<'gc> {
19070 pub fn from_node(node: &'gc super::Property<'gc>) -> Self {
19072 Self {
19073 is_changed: false,
19074 inner: super::Property {
19075 metadata: node.metadata.duplicate(),
19076 key: node.key.duplicate(),
19077 value: node.value.duplicate(),
19078 kind: Cell::new(node.kind.get()),
19079 computed: Cell::new(node.computed.get()),
19080 method: Cell::new(node.method.get()),
19081 shorthand: Cell::new(node.shorthand.get()),
19082 },
19083 }
19084 }
19085 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19088 if self.is_changed {
19089 TransformResult::Changed(self.build_forced(gc))
19090 } else {
19091 TransformResult::Unchanged
19092 }
19093 }
19094 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19096 gc.alloc(Node::Property(self.inner))
19097 }
19098 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
19100 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
19102 }
19103 #[derive(Debug)]
19105 pub struct Decorator<'gc> {
19106 is_changed: bool,
19107 pub(super) inner: super::Decorator<'gc>,
19108 }
19109 impl<'gc> Decorator<'gc> {
19110 pub fn from_node(node: &'gc super::Decorator<'gc>) -> Self {
19112 Self {
19113 is_changed: false,
19114 inner: super::Decorator {
19115 metadata: node.metadata.duplicate(),
19116 expression: node.expression.duplicate(),
19117 },
19118 }
19119 }
19120 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19123 if self.is_changed {
19124 TransformResult::Changed(self.build_forced(gc))
19125 } else {
19126 TransformResult::Unchanged
19127 }
19128 }
19129 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19131 gc.alloc(Node::Decorator(self.inner))
19132 }
19133 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
19135 }
19136 #[derive(Debug)]
19138 pub struct ClassDeclaration<'gc> {
19139 is_changed: bool,
19140 pub(super) inner: super::ClassDeclaration<'gc>,
19141 }
19142 impl<'gc> ClassDeclaration<'gc> {
19143 pub fn from_node(node: &'gc super::ClassDeclaration<'gc>) -> Self {
19145 Self {
19146 is_changed: false,
19147 inner: super::ClassDeclaration {
19148 metadata: node.metadata.duplicate(),
19149 id: node.id.duplicate(),
19150 type_parameters: node.type_parameters.duplicate(),
19151 super_class: node.super_class.duplicate(),
19152 super_type_arguments: node.super_type_arguments.duplicate(),
19153 implements: node.implements.duplicate(),
19154 decorators: node.decorators.duplicate(),
19155 body: node.body.duplicate(),
19156 scope: Cell::new(node.scope.get()),
19157 implicit_ctor_function_info: Cell::new(node.implicit_ctor_function_info.get()),
19158 instance_elements_init_function_info: Cell::new(node.instance_elements_init_function_info.get()),
19159 static_elements_init_function_info: Cell::new(node.static_elements_init_function_info.get()),
19160 },
19161 }
19162 }
19163 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19166 if self.is_changed {
19167 TransformResult::Changed(self.build_forced(gc))
19168 } else {
19169 TransformResult::Unchanged
19170 }
19171 }
19172 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19174 gc.alloc(Node::ClassDeclaration(self.inner))
19175 }
19176 pub fn id(&mut self, id: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.id = id; }
19178 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
19180 pub fn super_class(&mut self, super_class: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.super_class = super_class; }
19182 pub fn super_type_arguments(&mut self, super_type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.super_type_arguments = super_type_arguments; }
19184 pub fn implements(&mut self, implements: NodeList<'gc>) { self.is_changed = true; self.inner.implements = implements; }
19186 pub fn decorators(&mut self, decorators: NodeList<'gc>) { self.is_changed = true; self.inner.decorators = decorators; }
19188 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
19190 }
19191 #[derive(Debug)]
19193 pub struct ClassExpression<'gc> {
19194 is_changed: bool,
19195 pub(super) inner: super::ClassExpression<'gc>,
19196 }
19197 impl<'gc> ClassExpression<'gc> {
19198 pub fn from_node(node: &'gc super::ClassExpression<'gc>) -> Self {
19200 Self {
19201 is_changed: false,
19202 inner: super::ClassExpression {
19203 metadata: node.metadata.duplicate(),
19204 id: node.id.duplicate(),
19205 type_parameters: node.type_parameters.duplicate(),
19206 super_class: node.super_class.duplicate(),
19207 super_type_arguments: node.super_type_arguments.duplicate(),
19208 implements: node.implements.duplicate(),
19209 decorators: node.decorators.duplicate(),
19210 body: node.body.duplicate(),
19211 scope: Cell::new(node.scope.get()),
19212 implicit_ctor_function_info: Cell::new(node.implicit_ctor_function_info.get()),
19213 instance_elements_init_function_info: Cell::new(node.instance_elements_init_function_info.get()),
19214 static_elements_init_function_info: Cell::new(node.static_elements_init_function_info.get()),
19215 },
19216 }
19217 }
19218 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19221 if self.is_changed {
19222 TransformResult::Changed(self.build_forced(gc))
19223 } else {
19224 TransformResult::Unchanged
19225 }
19226 }
19227 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19229 gc.alloc(Node::ClassExpression(self.inner))
19230 }
19231 pub fn id(&mut self, id: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.id = id; }
19233 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
19235 pub fn super_class(&mut self, super_class: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.super_class = super_class; }
19237 pub fn super_type_arguments(&mut self, super_type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.super_type_arguments = super_type_arguments; }
19239 pub fn implements(&mut self, implements: NodeList<'gc>) { self.is_changed = true; self.inner.implements = implements; }
19241 pub fn decorators(&mut self, decorators: NodeList<'gc>) { self.is_changed = true; self.inner.decorators = decorators; }
19243 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
19245 }
19246 #[derive(Debug)]
19248 pub struct ClassBody<'gc> {
19249 is_changed: bool,
19250 pub(super) inner: super::ClassBody<'gc>,
19251 }
19252 impl<'gc> ClassBody<'gc> {
19253 pub fn from_node(node: &'gc super::ClassBody<'gc>) -> Self {
19255 Self {
19256 is_changed: false,
19257 inner: super::ClassBody {
19258 metadata: node.metadata.duplicate(),
19259 body: node.body.duplicate(),
19260 },
19261 }
19262 }
19263 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19266 if self.is_changed {
19267 TransformResult::Changed(self.build_forced(gc))
19268 } else {
19269 TransformResult::Unchanged
19270 }
19271 }
19272 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19274 gc.alloc(Node::ClassBody(self.inner))
19275 }
19276 pub fn body(&mut self, body: NodeList<'gc>) { self.is_changed = true; self.inner.body = body; }
19278 }
19279 #[derive(Debug)]
19281 pub struct ClassProperty<'gc> {
19282 is_changed: bool,
19283 pub(super) inner: super::ClassProperty<'gc>,
19284 }
19285 impl<'gc> ClassProperty<'gc> {
19286 pub fn from_node(node: &'gc super::ClassProperty<'gc>) -> Self {
19288 Self {
19289 is_changed: false,
19290 inner: super::ClassProperty {
19291 metadata: node.metadata.duplicate(),
19292 key: node.key.duplicate(),
19293 value: node.value.duplicate(),
19294 computed: Cell::new(node.computed.get()),
19295 r#static: Cell::new(node.r#static.get()),
19296 decorators: node.decorators.duplicate(),
19297 declare: Cell::new(node.declare.get()),
19298 optional: Cell::new(node.optional.get()),
19299 variance: node.variance.duplicate(),
19300 type_annotation: node.type_annotation.duplicate(),
19301 ts_modifiers: node.ts_modifiers.duplicate(),
19302 },
19303 }
19304 }
19305 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19308 if self.is_changed {
19309 TransformResult::Changed(self.build_forced(gc))
19310 } else {
19311 TransformResult::Unchanged
19312 }
19313 }
19314 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19316 gc.alloc(Node::ClassProperty(self.inner))
19317 }
19318 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
19320 pub fn value(&mut self, value: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.value = value; }
19322 pub fn decorators(&mut self, decorators: NodeList<'gc>) { self.is_changed = true; self.inner.decorators = decorators; }
19324 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
19326 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
19328 pub fn ts_modifiers(&mut self, ts_modifiers: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.ts_modifiers = ts_modifiers; }
19330 }
19331 #[derive(Debug)]
19333 pub struct ClassPrivateProperty<'gc> {
19334 is_changed: bool,
19335 pub(super) inner: super::ClassPrivateProperty<'gc>,
19336 }
19337 impl<'gc> ClassPrivateProperty<'gc> {
19338 pub fn from_node(node: &'gc super::ClassPrivateProperty<'gc>) -> Self {
19340 Self {
19341 is_changed: false,
19342 inner: super::ClassPrivateProperty {
19343 metadata: node.metadata.duplicate(),
19344 key: node.key.duplicate(),
19345 value: node.value.duplicate(),
19346 r#static: Cell::new(node.r#static.get()),
19347 decorators: node.decorators.duplicate(),
19348 declare: Cell::new(node.declare.get()),
19349 optional: Cell::new(node.optional.get()),
19350 variance: node.variance.duplicate(),
19351 type_annotation: node.type_annotation.duplicate(),
19352 ts_modifiers: node.ts_modifiers.duplicate(),
19353 },
19354 }
19355 }
19356 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19359 if self.is_changed {
19360 TransformResult::Changed(self.build_forced(gc))
19361 } else {
19362 TransformResult::Unchanged
19363 }
19364 }
19365 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19367 gc.alloc(Node::ClassPrivateProperty(self.inner))
19368 }
19369 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
19371 pub fn value(&mut self, value: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.value = value; }
19373 pub fn decorators(&mut self, decorators: NodeList<'gc>) { self.is_changed = true; self.inner.decorators = decorators; }
19375 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
19377 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
19379 pub fn ts_modifiers(&mut self, ts_modifiers: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.ts_modifiers = ts_modifiers; }
19381 }
19382 #[derive(Debug)]
19384 pub struct MethodDefinition<'gc> {
19385 is_changed: bool,
19386 pub(super) inner: super::MethodDefinition<'gc>,
19387 }
19388 impl<'gc> MethodDefinition<'gc> {
19389 pub fn from_node(node: &'gc super::MethodDefinition<'gc>) -> Self {
19391 Self {
19392 is_changed: false,
19393 inner: super::MethodDefinition {
19394 metadata: node.metadata.duplicate(),
19395 key: node.key.duplicate(),
19396 value: node.value.duplicate(),
19397 kind: Cell::new(node.kind.get()),
19398 computed: Cell::new(node.computed.get()),
19399 r#static: Cell::new(node.r#static.get()),
19400 decorators: node.decorators.duplicate(),
19401 },
19402 }
19403 }
19404 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19407 if self.is_changed {
19408 TransformResult::Changed(self.build_forced(gc))
19409 } else {
19410 TransformResult::Unchanged
19411 }
19412 }
19413 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19415 gc.alloc(Node::MethodDefinition(self.inner))
19416 }
19417 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
19419 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
19421 pub fn decorators(&mut self, decorators: NodeList<'gc>) { self.is_changed = true; self.inner.decorators = decorators; }
19423 }
19424 #[derive(Debug)]
19426 pub struct ImportDeclaration<'gc> {
19427 is_changed: bool,
19428 pub(super) inner: super::ImportDeclaration<'gc>,
19429 }
19430 impl<'gc> ImportDeclaration<'gc> {
19431 pub fn from_node(node: &'gc super::ImportDeclaration<'gc>) -> Self {
19433 Self {
19434 is_changed: false,
19435 inner: super::ImportDeclaration {
19436 metadata: node.metadata.duplicate(),
19437 specifiers: node.specifiers.duplicate(),
19438 source: node.source.duplicate(),
19439 attributes: node.attributes.duplicate(),
19440 import_kind: Cell::new(node.import_kind.get()),
19441 },
19442 }
19443 }
19444 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19447 if self.is_changed {
19448 TransformResult::Changed(self.build_forced(gc))
19449 } else {
19450 TransformResult::Unchanged
19451 }
19452 }
19453 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19455 gc.alloc(Node::ImportDeclaration(self.inner))
19456 }
19457 pub fn specifiers(&mut self, specifiers: NodeList<'gc>) { self.is_changed = true; self.inner.specifiers = specifiers; }
19459 pub fn source(&mut self, source: &'gc Node<'gc>) { self.is_changed = true; self.inner.source = source; }
19461 pub fn attributes(&mut self, attributes: NodeList<'gc>) { self.is_changed = true; self.inner.attributes = attributes; }
19463 }
19464 #[derive(Debug)]
19466 pub struct ImportSpecifier<'gc> {
19467 is_changed: bool,
19468 pub(super) inner: super::ImportSpecifier<'gc>,
19469 }
19470 impl<'gc> ImportSpecifier<'gc> {
19471 pub fn from_node(node: &'gc super::ImportSpecifier<'gc>) -> Self {
19473 Self {
19474 is_changed: false,
19475 inner: super::ImportSpecifier {
19476 metadata: node.metadata.duplicate(),
19477 imported: node.imported.duplicate(),
19478 local: node.local.duplicate(),
19479 import_kind: Cell::new(node.import_kind.get()),
19480 },
19481 }
19482 }
19483 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19486 if self.is_changed {
19487 TransformResult::Changed(self.build_forced(gc))
19488 } else {
19489 TransformResult::Unchanged
19490 }
19491 }
19492 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19494 gc.alloc(Node::ImportSpecifier(self.inner))
19495 }
19496 pub fn imported(&mut self, imported: &'gc Node<'gc>) { self.is_changed = true; self.inner.imported = imported; }
19498 pub fn local(&mut self, local: &'gc Node<'gc>) { self.is_changed = true; self.inner.local = local; }
19500 }
19501 #[derive(Debug)]
19503 pub struct ImportDefaultSpecifier<'gc> {
19504 is_changed: bool,
19505 pub(super) inner: super::ImportDefaultSpecifier<'gc>,
19506 }
19507 impl<'gc> ImportDefaultSpecifier<'gc> {
19508 pub fn from_node(node: &'gc super::ImportDefaultSpecifier<'gc>) -> Self {
19510 Self {
19511 is_changed: false,
19512 inner: super::ImportDefaultSpecifier {
19513 metadata: node.metadata.duplicate(),
19514 local: node.local.duplicate(),
19515 },
19516 }
19517 }
19518 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19521 if self.is_changed {
19522 TransformResult::Changed(self.build_forced(gc))
19523 } else {
19524 TransformResult::Unchanged
19525 }
19526 }
19527 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19529 gc.alloc(Node::ImportDefaultSpecifier(self.inner))
19530 }
19531 pub fn local(&mut self, local: &'gc Node<'gc>) { self.is_changed = true; self.inner.local = local; }
19533 }
19534 #[derive(Debug)]
19536 pub struct ImportNamespaceSpecifier<'gc> {
19537 is_changed: bool,
19538 pub(super) inner: super::ImportNamespaceSpecifier<'gc>,
19539 }
19540 impl<'gc> ImportNamespaceSpecifier<'gc> {
19541 pub fn from_node(node: &'gc super::ImportNamespaceSpecifier<'gc>) -> Self {
19543 Self {
19544 is_changed: false,
19545 inner: super::ImportNamespaceSpecifier {
19546 metadata: node.metadata.duplicate(),
19547 local: node.local.duplicate(),
19548 },
19549 }
19550 }
19551 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19554 if self.is_changed {
19555 TransformResult::Changed(self.build_forced(gc))
19556 } else {
19557 TransformResult::Unchanged
19558 }
19559 }
19560 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19562 gc.alloc(Node::ImportNamespaceSpecifier(self.inner))
19563 }
19564 pub fn local(&mut self, local: &'gc Node<'gc>) { self.is_changed = true; self.inner.local = local; }
19566 }
19567 #[derive(Debug)]
19569 pub struct ImportAttribute<'gc> {
19570 is_changed: bool,
19571 pub(super) inner: super::ImportAttribute<'gc>,
19572 }
19573 impl<'gc> ImportAttribute<'gc> {
19574 pub fn from_node(node: &'gc super::ImportAttribute<'gc>) -> Self {
19576 Self {
19577 is_changed: false,
19578 inner: super::ImportAttribute {
19579 metadata: node.metadata.duplicate(),
19580 key: node.key.duplicate(),
19581 value: node.value.duplicate(),
19582 },
19583 }
19584 }
19585 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19588 if self.is_changed {
19589 TransformResult::Changed(self.build_forced(gc))
19590 } else {
19591 TransformResult::Unchanged
19592 }
19593 }
19594 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19596 gc.alloc(Node::ImportAttribute(self.inner))
19597 }
19598 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
19600 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
19602 }
19603 #[derive(Debug)]
19605 pub struct ExportNamedDeclaration<'gc> {
19606 is_changed: bool,
19607 pub(super) inner: super::ExportNamedDeclaration<'gc>,
19608 }
19609 impl<'gc> ExportNamedDeclaration<'gc> {
19610 pub fn from_node(node: &'gc super::ExportNamedDeclaration<'gc>) -> Self {
19612 Self {
19613 is_changed: false,
19614 inner: super::ExportNamedDeclaration {
19615 metadata: node.metadata.duplicate(),
19616 declaration: node.declaration.duplicate(),
19617 specifiers: node.specifiers.duplicate(),
19618 source: node.source.duplicate(),
19619 export_kind: Cell::new(node.export_kind.get()),
19620 },
19621 }
19622 }
19623 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19626 if self.is_changed {
19627 TransformResult::Changed(self.build_forced(gc))
19628 } else {
19629 TransformResult::Unchanged
19630 }
19631 }
19632 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19634 gc.alloc(Node::ExportNamedDeclaration(self.inner))
19635 }
19636 pub fn declaration(&mut self, declaration: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.declaration = declaration; }
19638 pub fn specifiers(&mut self, specifiers: NodeList<'gc>) { self.is_changed = true; self.inner.specifiers = specifiers; }
19640 pub fn source(&mut self, source: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.source = source; }
19642 }
19643 #[derive(Debug)]
19645 pub struct ExportSpecifier<'gc> {
19646 is_changed: bool,
19647 pub(super) inner: super::ExportSpecifier<'gc>,
19648 }
19649 impl<'gc> ExportSpecifier<'gc> {
19650 pub fn from_node(node: &'gc super::ExportSpecifier<'gc>) -> Self {
19652 Self {
19653 is_changed: false,
19654 inner: super::ExportSpecifier {
19655 metadata: node.metadata.duplicate(),
19656 exported: node.exported.duplicate(),
19657 local: node.local.duplicate(),
19658 },
19659 }
19660 }
19661 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19664 if self.is_changed {
19665 TransformResult::Changed(self.build_forced(gc))
19666 } else {
19667 TransformResult::Unchanged
19668 }
19669 }
19670 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19672 gc.alloc(Node::ExportSpecifier(self.inner))
19673 }
19674 pub fn exported(&mut self, exported: &'gc Node<'gc>) { self.is_changed = true; self.inner.exported = exported; }
19676 pub fn local(&mut self, local: &'gc Node<'gc>) { self.is_changed = true; self.inner.local = local; }
19678 }
19679 #[derive(Debug)]
19681 pub struct ExportNamespaceSpecifier<'gc> {
19682 is_changed: bool,
19683 pub(super) inner: super::ExportNamespaceSpecifier<'gc>,
19684 }
19685 impl<'gc> ExportNamespaceSpecifier<'gc> {
19686 pub fn from_node(node: &'gc super::ExportNamespaceSpecifier<'gc>) -> Self {
19688 Self {
19689 is_changed: false,
19690 inner: super::ExportNamespaceSpecifier {
19691 metadata: node.metadata.duplicate(),
19692 exported: node.exported.duplicate(),
19693 },
19694 }
19695 }
19696 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19699 if self.is_changed {
19700 TransformResult::Changed(self.build_forced(gc))
19701 } else {
19702 TransformResult::Unchanged
19703 }
19704 }
19705 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19707 gc.alloc(Node::ExportNamespaceSpecifier(self.inner))
19708 }
19709 pub fn exported(&mut self, exported: &'gc Node<'gc>) { self.is_changed = true; self.inner.exported = exported; }
19711 }
19712 #[derive(Debug)]
19714 pub struct ExportDefaultDeclaration<'gc> {
19715 is_changed: bool,
19716 pub(super) inner: super::ExportDefaultDeclaration<'gc>,
19717 }
19718 impl<'gc> ExportDefaultDeclaration<'gc> {
19719 pub fn from_node(node: &'gc super::ExportDefaultDeclaration<'gc>) -> Self {
19721 Self {
19722 is_changed: false,
19723 inner: super::ExportDefaultDeclaration {
19724 metadata: node.metadata.duplicate(),
19725 declaration: node.declaration.duplicate(),
19726 },
19727 }
19728 }
19729 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19732 if self.is_changed {
19733 TransformResult::Changed(self.build_forced(gc))
19734 } else {
19735 TransformResult::Unchanged
19736 }
19737 }
19738 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19740 gc.alloc(Node::ExportDefaultDeclaration(self.inner))
19741 }
19742 pub fn declaration(&mut self, declaration: &'gc Node<'gc>) { self.is_changed = true; self.inner.declaration = declaration; }
19744 }
19745 #[derive(Debug)]
19747 pub struct ExportAllDeclaration<'gc> {
19748 is_changed: bool,
19749 pub(super) inner: super::ExportAllDeclaration<'gc>,
19750 }
19751 impl<'gc> ExportAllDeclaration<'gc> {
19752 pub fn from_node(node: &'gc super::ExportAllDeclaration<'gc>) -> Self {
19754 Self {
19755 is_changed: false,
19756 inner: super::ExportAllDeclaration {
19757 metadata: node.metadata.duplicate(),
19758 source: node.source.duplicate(),
19759 export_kind: Cell::new(node.export_kind.get()),
19760 },
19761 }
19762 }
19763 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19766 if self.is_changed {
19767 TransformResult::Changed(self.build_forced(gc))
19768 } else {
19769 TransformResult::Unchanged
19770 }
19771 }
19772 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19774 gc.alloc(Node::ExportAllDeclaration(self.inner))
19775 }
19776 pub fn source(&mut self, source: &'gc Node<'gc>) { self.is_changed = true; self.inner.source = source; }
19778 }
19779 #[derive(Debug)]
19781 pub struct ObjectPattern<'gc> {
19782 is_changed: bool,
19783 pub(super) inner: super::ObjectPattern<'gc>,
19784 }
19785 impl<'gc> ObjectPattern<'gc> {
19786 pub fn from_node(node: &'gc super::ObjectPattern<'gc>) -> Self {
19788 Self {
19789 is_changed: false,
19790 inner: super::ObjectPattern {
19791 metadata: node.metadata.duplicate(),
19792 properties: node.properties.duplicate(),
19793 type_annotation: node.type_annotation.duplicate(),
19794 },
19795 }
19796 }
19797 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19800 if self.is_changed {
19801 TransformResult::Changed(self.build_forced(gc))
19802 } else {
19803 TransformResult::Unchanged
19804 }
19805 }
19806 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19808 gc.alloc(Node::ObjectPattern(self.inner))
19809 }
19810 pub fn properties(&mut self, properties: NodeList<'gc>) { self.is_changed = true; self.inner.properties = properties; }
19812 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
19814 }
19815 #[derive(Debug)]
19817 pub struct ArrayPattern<'gc> {
19818 is_changed: bool,
19819 pub(super) inner: super::ArrayPattern<'gc>,
19820 }
19821 impl<'gc> ArrayPattern<'gc> {
19822 pub fn from_node(node: &'gc super::ArrayPattern<'gc>) -> Self {
19824 Self {
19825 is_changed: false,
19826 inner: super::ArrayPattern {
19827 metadata: node.metadata.duplicate(),
19828 elements: node.elements.duplicate(),
19829 type_annotation: node.type_annotation.duplicate(),
19830 },
19831 }
19832 }
19833 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19836 if self.is_changed {
19837 TransformResult::Changed(self.build_forced(gc))
19838 } else {
19839 TransformResult::Unchanged
19840 }
19841 }
19842 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19844 gc.alloc(Node::ArrayPattern(self.inner))
19845 }
19846 pub fn elements(&mut self, elements: NodeList<'gc>) { self.is_changed = true; self.inner.elements = elements; }
19848 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
19850 }
19851 #[derive(Debug)]
19853 pub struct RestElement<'gc> {
19854 is_changed: bool,
19855 pub(super) inner: super::RestElement<'gc>,
19856 }
19857 impl<'gc> RestElement<'gc> {
19858 pub fn from_node(node: &'gc super::RestElement<'gc>) -> Self {
19860 Self {
19861 is_changed: false,
19862 inner: super::RestElement {
19863 metadata: node.metadata.duplicate(),
19864 argument: node.argument.duplicate(),
19865 },
19866 }
19867 }
19868 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19871 if self.is_changed {
19872 TransformResult::Changed(self.build_forced(gc))
19873 } else {
19874 TransformResult::Unchanged
19875 }
19876 }
19877 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19879 gc.alloc(Node::RestElement(self.inner))
19880 }
19881 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
19883 }
19884 #[derive(Debug)]
19886 pub struct AssignmentPattern<'gc> {
19887 is_changed: bool,
19888 pub(super) inner: super::AssignmentPattern<'gc>,
19889 }
19890 impl<'gc> AssignmentPattern<'gc> {
19891 pub fn from_node(node: &'gc super::AssignmentPattern<'gc>) -> Self {
19893 Self {
19894 is_changed: false,
19895 inner: super::AssignmentPattern {
19896 metadata: node.metadata.duplicate(),
19897 left: node.left.duplicate(),
19898 right: node.right.duplicate(),
19899 },
19900 }
19901 }
19902 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19905 if self.is_changed {
19906 TransformResult::Changed(self.build_forced(gc))
19907 } else {
19908 TransformResult::Unchanged
19909 }
19910 }
19911 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19913 gc.alloc(Node::AssignmentPattern(self.inner))
19914 }
19915 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
19917 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
19919 }
19920 #[derive(Debug)]
19922 pub struct MatchStatementCase<'gc> {
19923 is_changed: bool,
19924 pub(super) inner: super::MatchStatementCase<'gc>,
19925 }
19926 impl<'gc> MatchStatementCase<'gc> {
19927 pub fn from_node(node: &'gc super::MatchStatementCase<'gc>) -> Self {
19929 Self {
19930 is_changed: false,
19931 inner: super::MatchStatementCase {
19932 metadata: node.metadata.duplicate(),
19933 pattern: node.pattern.duplicate(),
19934 body: node.body.duplicate(),
19935 guard: node.guard.duplicate(),
19936 },
19937 }
19938 }
19939 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19942 if self.is_changed {
19943 TransformResult::Changed(self.build_forced(gc))
19944 } else {
19945 TransformResult::Unchanged
19946 }
19947 }
19948 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19950 gc.alloc(Node::MatchStatementCase(self.inner))
19951 }
19952 pub fn pattern(&mut self, pattern: &'gc Node<'gc>) { self.is_changed = true; self.inner.pattern = pattern; }
19954 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
19956 pub fn guard(&mut self, guard: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.guard = guard; }
19958 }
19959 #[derive(Debug)]
19961 pub struct MatchExpression<'gc> {
19962 is_changed: bool,
19963 pub(super) inner: super::MatchExpression<'gc>,
19964 }
19965 impl<'gc> MatchExpression<'gc> {
19966 pub fn from_node(node: &'gc super::MatchExpression<'gc>) -> Self {
19968 Self {
19969 is_changed: false,
19970 inner: super::MatchExpression {
19971 metadata: node.metadata.duplicate(),
19972 argument: node.argument.duplicate(),
19973 cases: node.cases.duplicate(),
19974 },
19975 }
19976 }
19977 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
19980 if self.is_changed {
19981 TransformResult::Changed(self.build_forced(gc))
19982 } else {
19983 TransformResult::Unchanged
19984 }
19985 }
19986 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
19988 gc.alloc(Node::MatchExpression(self.inner))
19989 }
19990 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
19992 pub fn cases(&mut self, cases: NodeList<'gc>) { self.is_changed = true; self.inner.cases = cases; }
19994 }
19995 #[derive(Debug)]
19997 pub struct MatchExpressionCase<'gc> {
19998 is_changed: bool,
19999 pub(super) inner: super::MatchExpressionCase<'gc>,
20000 }
20001 impl<'gc> MatchExpressionCase<'gc> {
20002 pub fn from_node(node: &'gc super::MatchExpressionCase<'gc>) -> Self {
20004 Self {
20005 is_changed: false,
20006 inner: super::MatchExpressionCase {
20007 metadata: node.metadata.duplicate(),
20008 pattern: node.pattern.duplicate(),
20009 body: node.body.duplicate(),
20010 guard: node.guard.duplicate(),
20011 },
20012 }
20013 }
20014 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20017 if self.is_changed {
20018 TransformResult::Changed(self.build_forced(gc))
20019 } else {
20020 TransformResult::Unchanged
20021 }
20022 }
20023 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20025 gc.alloc(Node::MatchExpressionCase(self.inner))
20026 }
20027 pub fn pattern(&mut self, pattern: &'gc Node<'gc>) { self.is_changed = true; self.inner.pattern = pattern; }
20029 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
20031 pub fn guard(&mut self, guard: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.guard = guard; }
20033 }
20034 #[derive(Debug)]
20036 pub struct MatchWildcardPattern<'gc> {
20037 is_changed: bool,
20038 pub(super) inner: super::MatchWildcardPattern<'gc>,
20039 }
20040 impl<'gc> MatchWildcardPattern<'gc> {
20041 pub fn from_node(node: &'gc super::MatchWildcardPattern<'gc>) -> Self {
20043 Self {
20044 is_changed: false,
20045 inner: super::MatchWildcardPattern {
20046 metadata: node.metadata.duplicate(),
20047 },
20048 }
20049 }
20050 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20053 if self.is_changed {
20054 TransformResult::Changed(self.build_forced(gc))
20055 } else {
20056 TransformResult::Unchanged
20057 }
20058 }
20059 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20061 gc.alloc(Node::MatchWildcardPattern(self.inner))
20062 }
20063 }
20064 #[derive(Debug)]
20066 pub struct MatchLiteralPattern<'gc> {
20067 is_changed: bool,
20068 pub(super) inner: super::MatchLiteralPattern<'gc>,
20069 }
20070 impl<'gc> MatchLiteralPattern<'gc> {
20071 pub fn from_node(node: &'gc super::MatchLiteralPattern<'gc>) -> Self {
20073 Self {
20074 is_changed: false,
20075 inner: super::MatchLiteralPattern {
20076 metadata: node.metadata.duplicate(),
20077 literal: node.literal.duplicate(),
20078 },
20079 }
20080 }
20081 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20084 if self.is_changed {
20085 TransformResult::Changed(self.build_forced(gc))
20086 } else {
20087 TransformResult::Unchanged
20088 }
20089 }
20090 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20092 gc.alloc(Node::MatchLiteralPattern(self.inner))
20093 }
20094 pub fn literal(&mut self, literal: &'gc Node<'gc>) { self.is_changed = true; self.inner.literal = literal; }
20096 }
20097 #[derive(Debug)]
20099 pub struct MatchUnaryPattern<'gc> {
20100 is_changed: bool,
20101 pub(super) inner: super::MatchUnaryPattern<'gc>,
20102 }
20103 impl<'gc> MatchUnaryPattern<'gc> {
20104 pub fn from_node(node: &'gc super::MatchUnaryPattern<'gc>) -> Self {
20106 Self {
20107 is_changed: false,
20108 inner: super::MatchUnaryPattern {
20109 metadata: node.metadata.duplicate(),
20110 argument: node.argument.duplicate(),
20111 operator: Cell::new(node.operator.get()),
20112 },
20113 }
20114 }
20115 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20118 if self.is_changed {
20119 TransformResult::Changed(self.build_forced(gc))
20120 } else {
20121 TransformResult::Unchanged
20122 }
20123 }
20124 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20126 gc.alloc(Node::MatchUnaryPattern(self.inner))
20127 }
20128 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
20130 }
20131 #[derive(Debug)]
20133 pub struct MatchIdentifierPattern<'gc> {
20134 is_changed: bool,
20135 pub(super) inner: super::MatchIdentifierPattern<'gc>,
20136 }
20137 impl<'gc> MatchIdentifierPattern<'gc> {
20138 pub fn from_node(node: &'gc super::MatchIdentifierPattern<'gc>) -> Self {
20140 Self {
20141 is_changed: false,
20142 inner: super::MatchIdentifierPattern {
20143 metadata: node.metadata.duplicate(),
20144 id: node.id.duplicate(),
20145 },
20146 }
20147 }
20148 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20151 if self.is_changed {
20152 TransformResult::Changed(self.build_forced(gc))
20153 } else {
20154 TransformResult::Unchanged
20155 }
20156 }
20157 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20159 gc.alloc(Node::MatchIdentifierPattern(self.inner))
20160 }
20161 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
20163 }
20164 #[derive(Debug)]
20166 pub struct MatchBindingPattern<'gc> {
20167 is_changed: bool,
20168 pub(super) inner: super::MatchBindingPattern<'gc>,
20169 }
20170 impl<'gc> MatchBindingPattern<'gc> {
20171 pub fn from_node(node: &'gc super::MatchBindingPattern<'gc>) -> Self {
20173 Self {
20174 is_changed: false,
20175 inner: super::MatchBindingPattern {
20176 metadata: node.metadata.duplicate(),
20177 id: node.id.duplicate(),
20178 kind: Cell::new(node.kind.get()),
20179 },
20180 }
20181 }
20182 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20185 if self.is_changed {
20186 TransformResult::Changed(self.build_forced(gc))
20187 } else {
20188 TransformResult::Unchanged
20189 }
20190 }
20191 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20193 gc.alloc(Node::MatchBindingPattern(self.inner))
20194 }
20195 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
20197 }
20198 #[derive(Debug)]
20200 pub struct MatchObjectPattern<'gc> {
20201 is_changed: bool,
20202 pub(super) inner: super::MatchObjectPattern<'gc>,
20203 }
20204 impl<'gc> MatchObjectPattern<'gc> {
20205 pub fn from_node(node: &'gc super::MatchObjectPattern<'gc>) -> Self {
20207 Self {
20208 is_changed: false,
20209 inner: super::MatchObjectPattern {
20210 metadata: node.metadata.duplicate(),
20211 properties: node.properties.duplicate(),
20212 rest: node.rest.duplicate(),
20213 },
20214 }
20215 }
20216 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20219 if self.is_changed {
20220 TransformResult::Changed(self.build_forced(gc))
20221 } else {
20222 TransformResult::Unchanged
20223 }
20224 }
20225 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20227 gc.alloc(Node::MatchObjectPattern(self.inner))
20228 }
20229 pub fn properties(&mut self, properties: NodeList<'gc>) { self.is_changed = true; self.inner.properties = properties; }
20231 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
20233 }
20234 #[derive(Debug)]
20236 pub struct MatchArrayPattern<'gc> {
20237 is_changed: bool,
20238 pub(super) inner: super::MatchArrayPattern<'gc>,
20239 }
20240 impl<'gc> MatchArrayPattern<'gc> {
20241 pub fn from_node(node: &'gc super::MatchArrayPattern<'gc>) -> Self {
20243 Self {
20244 is_changed: false,
20245 inner: super::MatchArrayPattern {
20246 metadata: node.metadata.duplicate(),
20247 elements: node.elements.duplicate(),
20248 rest: node.rest.duplicate(),
20249 },
20250 }
20251 }
20252 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20255 if self.is_changed {
20256 TransformResult::Changed(self.build_forced(gc))
20257 } else {
20258 TransformResult::Unchanged
20259 }
20260 }
20261 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20263 gc.alloc(Node::MatchArrayPattern(self.inner))
20264 }
20265 pub fn elements(&mut self, elements: NodeList<'gc>) { self.is_changed = true; self.inner.elements = elements; }
20267 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
20269 }
20270 #[derive(Debug)]
20272 pub struct MatchOrPattern<'gc> {
20273 is_changed: bool,
20274 pub(super) inner: super::MatchOrPattern<'gc>,
20275 }
20276 impl<'gc> MatchOrPattern<'gc> {
20277 pub fn from_node(node: &'gc super::MatchOrPattern<'gc>) -> Self {
20279 Self {
20280 is_changed: false,
20281 inner: super::MatchOrPattern {
20282 metadata: node.metadata.duplicate(),
20283 patterns: node.patterns.duplicate(),
20284 },
20285 }
20286 }
20287 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20290 if self.is_changed {
20291 TransformResult::Changed(self.build_forced(gc))
20292 } else {
20293 TransformResult::Unchanged
20294 }
20295 }
20296 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20298 gc.alloc(Node::MatchOrPattern(self.inner))
20299 }
20300 pub fn patterns(&mut self, patterns: NodeList<'gc>) { self.is_changed = true; self.inner.patterns = patterns; }
20302 }
20303 #[derive(Debug)]
20305 pub struct MatchAsPattern<'gc> {
20306 is_changed: bool,
20307 pub(super) inner: super::MatchAsPattern<'gc>,
20308 }
20309 impl<'gc> MatchAsPattern<'gc> {
20310 pub fn from_node(node: &'gc super::MatchAsPattern<'gc>) -> Self {
20312 Self {
20313 is_changed: false,
20314 inner: super::MatchAsPattern {
20315 metadata: node.metadata.duplicate(),
20316 pattern: node.pattern.duplicate(),
20317 target: node.target.duplicate(),
20318 },
20319 }
20320 }
20321 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20324 if self.is_changed {
20325 TransformResult::Changed(self.build_forced(gc))
20326 } else {
20327 TransformResult::Unchanged
20328 }
20329 }
20330 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20332 gc.alloc(Node::MatchAsPattern(self.inner))
20333 }
20334 pub fn pattern(&mut self, pattern: &'gc Node<'gc>) { self.is_changed = true; self.inner.pattern = pattern; }
20336 pub fn target(&mut self, target: &'gc Node<'gc>) { self.is_changed = true; self.inner.target = target; }
20338 }
20339 #[derive(Debug)]
20341 pub struct MatchMemberPattern<'gc> {
20342 is_changed: bool,
20343 pub(super) inner: super::MatchMemberPattern<'gc>,
20344 }
20345 impl<'gc> MatchMemberPattern<'gc> {
20346 pub fn from_node(node: &'gc super::MatchMemberPattern<'gc>) -> Self {
20348 Self {
20349 is_changed: false,
20350 inner: super::MatchMemberPattern {
20351 metadata: node.metadata.duplicate(),
20352 base: node.base.duplicate(),
20353 property: node.property.duplicate(),
20354 },
20355 }
20356 }
20357 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20360 if self.is_changed {
20361 TransformResult::Changed(self.build_forced(gc))
20362 } else {
20363 TransformResult::Unchanged
20364 }
20365 }
20366 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20368 gc.alloc(Node::MatchMemberPattern(self.inner))
20369 }
20370 pub fn base(&mut self, base: &'gc Node<'gc>) { self.is_changed = true; self.inner.base = base; }
20372 pub fn property(&mut self, property: &'gc Node<'gc>) { self.is_changed = true; self.inner.property = property; }
20374 }
20375 #[derive(Debug)]
20377 pub struct MatchInstancePattern<'gc> {
20378 is_changed: bool,
20379 pub(super) inner: super::MatchInstancePattern<'gc>,
20380 }
20381 impl<'gc> MatchInstancePattern<'gc> {
20382 pub fn from_node(node: &'gc super::MatchInstancePattern<'gc>) -> Self {
20384 Self {
20385 is_changed: false,
20386 inner: super::MatchInstancePattern {
20387 metadata: node.metadata.duplicate(),
20388 target_constructor: node.target_constructor.duplicate(),
20389 properties: node.properties.duplicate(),
20390 },
20391 }
20392 }
20393 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20396 if self.is_changed {
20397 TransformResult::Changed(self.build_forced(gc))
20398 } else {
20399 TransformResult::Unchanged
20400 }
20401 }
20402 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20404 gc.alloc(Node::MatchInstancePattern(self.inner))
20405 }
20406 pub fn target_constructor(&mut self, target_constructor: &'gc Node<'gc>) { self.is_changed = true; self.inner.target_constructor = target_constructor; }
20408 pub fn properties(&mut self, properties: &'gc Node<'gc>) { self.is_changed = true; self.inner.properties = properties; }
20410 }
20411 #[derive(Debug)]
20413 pub struct MatchObjectPatternProperty<'gc> {
20414 is_changed: bool,
20415 pub(super) inner: super::MatchObjectPatternProperty<'gc>,
20416 }
20417 impl<'gc> MatchObjectPatternProperty<'gc> {
20418 pub fn from_node(node: &'gc super::MatchObjectPatternProperty<'gc>) -> Self {
20420 Self {
20421 is_changed: false,
20422 inner: super::MatchObjectPatternProperty {
20423 metadata: node.metadata.duplicate(),
20424 key: node.key.duplicate(),
20425 pattern: node.pattern.duplicate(),
20426 shorthand: Cell::new(node.shorthand.get()),
20427 },
20428 }
20429 }
20430 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20433 if self.is_changed {
20434 TransformResult::Changed(self.build_forced(gc))
20435 } else {
20436 TransformResult::Unchanged
20437 }
20438 }
20439 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20441 gc.alloc(Node::MatchObjectPatternProperty(self.inner))
20442 }
20443 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
20445 pub fn pattern(&mut self, pattern: &'gc Node<'gc>) { self.is_changed = true; self.inner.pattern = pattern; }
20447 }
20448 #[derive(Debug)]
20450 pub struct MatchInstanceObjectPattern<'gc> {
20451 is_changed: bool,
20452 pub(super) inner: super::MatchInstanceObjectPattern<'gc>,
20453 }
20454 impl<'gc> MatchInstanceObjectPattern<'gc> {
20455 pub fn from_node(node: &'gc super::MatchInstanceObjectPattern<'gc>) -> Self {
20457 Self {
20458 is_changed: false,
20459 inner: super::MatchInstanceObjectPattern {
20460 metadata: node.metadata.duplicate(),
20461 properties: node.properties.duplicate(),
20462 rest: node.rest.duplicate(),
20463 },
20464 }
20465 }
20466 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20469 if self.is_changed {
20470 TransformResult::Changed(self.build_forced(gc))
20471 } else {
20472 TransformResult::Unchanged
20473 }
20474 }
20475 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20477 gc.alloc(Node::MatchInstanceObjectPattern(self.inner))
20478 }
20479 pub fn properties(&mut self, properties: NodeList<'gc>) { self.is_changed = true; self.inner.properties = properties; }
20481 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
20483 }
20484 #[derive(Debug)]
20486 pub struct MatchRestPattern<'gc> {
20487 is_changed: bool,
20488 pub(super) inner: super::MatchRestPattern<'gc>,
20489 }
20490 impl<'gc> MatchRestPattern<'gc> {
20491 pub fn from_node(node: &'gc super::MatchRestPattern<'gc>) -> Self {
20493 Self {
20494 is_changed: false,
20495 inner: super::MatchRestPattern {
20496 metadata: node.metadata.duplicate(),
20497 argument: node.argument.duplicate(),
20498 },
20499 }
20500 }
20501 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20504 if self.is_changed {
20505 TransformResult::Changed(self.build_forced(gc))
20506 } else {
20507 TransformResult::Unchanged
20508 }
20509 }
20510 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20512 gc.alloc(Node::MatchRestPattern(self.inner))
20513 }
20514 pub fn argument(&mut self, argument: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.argument = argument; }
20516 }
20517 #[derive(Debug)]
20519 pub struct JSXIdentifier<'gc> {
20520 is_changed: bool,
20521 pub(super) inner: super::JSXIdentifier<'gc>,
20522 }
20523 impl<'gc> JSXIdentifier<'gc> {
20524 pub fn from_node(node: &'gc super::JSXIdentifier<'gc>) -> Self {
20526 Self {
20527 is_changed: false,
20528 inner: super::JSXIdentifier {
20529 metadata: node.metadata.duplicate(),
20530 name: Cell::new(node.name.get()),
20531 },
20532 }
20533 }
20534 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20537 if self.is_changed {
20538 TransformResult::Changed(self.build_forced(gc))
20539 } else {
20540 TransformResult::Unchanged
20541 }
20542 }
20543 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20545 gc.alloc(Node::JSXIdentifier(self.inner))
20546 }
20547 }
20548 #[derive(Debug)]
20550 pub struct JSXMemberExpression<'gc> {
20551 is_changed: bool,
20552 pub(super) inner: super::JSXMemberExpression<'gc>,
20553 }
20554 impl<'gc> JSXMemberExpression<'gc> {
20555 pub fn from_node(node: &'gc super::JSXMemberExpression<'gc>) -> Self {
20557 Self {
20558 is_changed: false,
20559 inner: super::JSXMemberExpression {
20560 metadata: node.metadata.duplicate(),
20561 object: node.object.duplicate(),
20562 property: node.property.duplicate(),
20563 },
20564 }
20565 }
20566 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20569 if self.is_changed {
20570 TransformResult::Changed(self.build_forced(gc))
20571 } else {
20572 TransformResult::Unchanged
20573 }
20574 }
20575 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20577 gc.alloc(Node::JSXMemberExpression(self.inner))
20578 }
20579 pub fn object(&mut self, object: &'gc Node<'gc>) { self.is_changed = true; self.inner.object = object; }
20581 pub fn property(&mut self, property: &'gc Node<'gc>) { self.is_changed = true; self.inner.property = property; }
20583 }
20584 #[derive(Debug)]
20586 pub struct JSXNamespacedName<'gc> {
20587 is_changed: bool,
20588 pub(super) inner: super::JSXNamespacedName<'gc>,
20589 }
20590 impl<'gc> JSXNamespacedName<'gc> {
20591 pub fn from_node(node: &'gc super::JSXNamespacedName<'gc>) -> Self {
20593 Self {
20594 is_changed: false,
20595 inner: super::JSXNamespacedName {
20596 metadata: node.metadata.duplicate(),
20597 namespace: node.namespace.duplicate(),
20598 name: node.name.duplicate(),
20599 },
20600 }
20601 }
20602 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20605 if self.is_changed {
20606 TransformResult::Changed(self.build_forced(gc))
20607 } else {
20608 TransformResult::Unchanged
20609 }
20610 }
20611 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20613 gc.alloc(Node::JSXNamespacedName(self.inner))
20614 }
20615 pub fn namespace(&mut self, namespace: &'gc Node<'gc>) { self.is_changed = true; self.inner.namespace = namespace; }
20617 pub fn name(&mut self, name: &'gc Node<'gc>) { self.is_changed = true; self.inner.name = name; }
20619 }
20620 #[derive(Debug)]
20622 pub struct JSXEmptyExpression<'gc> {
20623 is_changed: bool,
20624 pub(super) inner: super::JSXEmptyExpression<'gc>,
20625 }
20626 impl<'gc> JSXEmptyExpression<'gc> {
20627 pub fn from_node(node: &'gc super::JSXEmptyExpression<'gc>) -> Self {
20629 Self {
20630 is_changed: false,
20631 inner: super::JSXEmptyExpression {
20632 metadata: node.metadata.duplicate(),
20633 },
20634 }
20635 }
20636 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20639 if self.is_changed {
20640 TransformResult::Changed(self.build_forced(gc))
20641 } else {
20642 TransformResult::Unchanged
20643 }
20644 }
20645 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20647 gc.alloc(Node::JSXEmptyExpression(self.inner))
20648 }
20649 }
20650 #[derive(Debug)]
20652 pub struct JSXExpressionContainer<'gc> {
20653 is_changed: bool,
20654 pub(super) inner: super::JSXExpressionContainer<'gc>,
20655 }
20656 impl<'gc> JSXExpressionContainer<'gc> {
20657 pub fn from_node(node: &'gc super::JSXExpressionContainer<'gc>) -> Self {
20659 Self {
20660 is_changed: false,
20661 inner: super::JSXExpressionContainer {
20662 metadata: node.metadata.duplicate(),
20663 expression: node.expression.duplicate(),
20664 },
20665 }
20666 }
20667 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20670 if self.is_changed {
20671 TransformResult::Changed(self.build_forced(gc))
20672 } else {
20673 TransformResult::Unchanged
20674 }
20675 }
20676 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20678 gc.alloc(Node::JSXExpressionContainer(self.inner))
20679 }
20680 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
20682 }
20683 #[derive(Debug)]
20685 pub struct JSXSpreadChild<'gc> {
20686 is_changed: bool,
20687 pub(super) inner: super::JSXSpreadChild<'gc>,
20688 }
20689 impl<'gc> JSXSpreadChild<'gc> {
20690 pub fn from_node(node: &'gc super::JSXSpreadChild<'gc>) -> Self {
20692 Self {
20693 is_changed: false,
20694 inner: super::JSXSpreadChild {
20695 metadata: node.metadata.duplicate(),
20696 expression: node.expression.duplicate(),
20697 },
20698 }
20699 }
20700 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20703 if self.is_changed {
20704 TransformResult::Changed(self.build_forced(gc))
20705 } else {
20706 TransformResult::Unchanged
20707 }
20708 }
20709 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20711 gc.alloc(Node::JSXSpreadChild(self.inner))
20712 }
20713 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
20715 }
20716 #[derive(Debug)]
20718 pub struct JSXOpeningElement<'gc> {
20719 is_changed: bool,
20720 pub(super) inner: super::JSXOpeningElement<'gc>,
20721 }
20722 impl<'gc> JSXOpeningElement<'gc> {
20723 pub fn from_node(node: &'gc super::JSXOpeningElement<'gc>) -> Self {
20725 Self {
20726 is_changed: false,
20727 inner: super::JSXOpeningElement {
20728 metadata: node.metadata.duplicate(),
20729 name: node.name.duplicate(),
20730 attributes: node.attributes.duplicate(),
20731 self_closing: Cell::new(node.self_closing.get()),
20732 type_arguments: node.type_arguments.duplicate(),
20733 },
20734 }
20735 }
20736 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20739 if self.is_changed {
20740 TransformResult::Changed(self.build_forced(gc))
20741 } else {
20742 TransformResult::Unchanged
20743 }
20744 }
20745 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20747 gc.alloc(Node::JSXOpeningElement(self.inner))
20748 }
20749 pub fn name(&mut self, name: &'gc Node<'gc>) { self.is_changed = true; self.inner.name = name; }
20751 pub fn attributes(&mut self, attributes: NodeList<'gc>) { self.is_changed = true; self.inner.attributes = attributes; }
20753 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
20755 }
20756 #[derive(Debug)]
20758 pub struct JSXClosingElement<'gc> {
20759 is_changed: bool,
20760 pub(super) inner: super::JSXClosingElement<'gc>,
20761 }
20762 impl<'gc> JSXClosingElement<'gc> {
20763 pub fn from_node(node: &'gc super::JSXClosingElement<'gc>) -> Self {
20765 Self {
20766 is_changed: false,
20767 inner: super::JSXClosingElement {
20768 metadata: node.metadata.duplicate(),
20769 name: node.name.duplicate(),
20770 },
20771 }
20772 }
20773 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20776 if self.is_changed {
20777 TransformResult::Changed(self.build_forced(gc))
20778 } else {
20779 TransformResult::Unchanged
20780 }
20781 }
20782 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20784 gc.alloc(Node::JSXClosingElement(self.inner))
20785 }
20786 pub fn name(&mut self, name: &'gc Node<'gc>) { self.is_changed = true; self.inner.name = name; }
20788 }
20789 #[derive(Debug)]
20791 pub struct JSXAttribute<'gc> {
20792 is_changed: bool,
20793 pub(super) inner: super::JSXAttribute<'gc>,
20794 }
20795 impl<'gc> JSXAttribute<'gc> {
20796 pub fn from_node(node: &'gc super::JSXAttribute<'gc>) -> Self {
20798 Self {
20799 is_changed: false,
20800 inner: super::JSXAttribute {
20801 metadata: node.metadata.duplicate(),
20802 name: node.name.duplicate(),
20803 value: node.value.duplicate(),
20804 },
20805 }
20806 }
20807 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20810 if self.is_changed {
20811 TransformResult::Changed(self.build_forced(gc))
20812 } else {
20813 TransformResult::Unchanged
20814 }
20815 }
20816 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20818 gc.alloc(Node::JSXAttribute(self.inner))
20819 }
20820 pub fn name(&mut self, name: &'gc Node<'gc>) { self.is_changed = true; self.inner.name = name; }
20822 pub fn value(&mut self, value: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.value = value; }
20824 }
20825 #[derive(Debug)]
20827 pub struct JSXSpreadAttribute<'gc> {
20828 is_changed: bool,
20829 pub(super) inner: super::JSXSpreadAttribute<'gc>,
20830 }
20831 impl<'gc> JSXSpreadAttribute<'gc> {
20832 pub fn from_node(node: &'gc super::JSXSpreadAttribute<'gc>) -> Self {
20834 Self {
20835 is_changed: false,
20836 inner: super::JSXSpreadAttribute {
20837 metadata: node.metadata.duplicate(),
20838 argument: node.argument.duplicate(),
20839 },
20840 }
20841 }
20842 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20845 if self.is_changed {
20846 TransformResult::Changed(self.build_forced(gc))
20847 } else {
20848 TransformResult::Unchanged
20849 }
20850 }
20851 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20853 gc.alloc(Node::JSXSpreadAttribute(self.inner))
20854 }
20855 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
20857 }
20858 #[derive(Debug)]
20860 pub struct JSXStringLiteral<'gc> {
20861 is_changed: bool,
20862 pub(super) inner: super::JSXStringLiteral<'gc>,
20863 }
20864 impl<'gc> JSXStringLiteral<'gc> {
20865 pub fn from_node(node: &'gc super::JSXStringLiteral<'gc>) -> Self {
20867 Self {
20868 is_changed: false,
20869 inner: super::JSXStringLiteral {
20870 metadata: node.metadata.duplicate(),
20871 value: Cell::new(node.value.get()),
20872 raw: Cell::new(node.raw.get()),
20873 },
20874 }
20875 }
20876 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20879 if self.is_changed {
20880 TransformResult::Changed(self.build_forced(gc))
20881 } else {
20882 TransformResult::Unchanged
20883 }
20884 }
20885 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20887 gc.alloc(Node::JSXStringLiteral(self.inner))
20888 }
20889 }
20890 #[derive(Debug)]
20892 pub struct JSXText<'gc> {
20893 is_changed: bool,
20894 pub(super) inner: super::JSXText<'gc>,
20895 }
20896 impl<'gc> JSXText<'gc> {
20897 pub fn from_node(node: &'gc super::JSXText<'gc>) -> Self {
20899 Self {
20900 is_changed: false,
20901 inner: super::JSXText {
20902 metadata: node.metadata.duplicate(),
20903 value: Cell::new(node.value.get()),
20904 raw: Cell::new(node.raw.get()),
20905 },
20906 }
20907 }
20908 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20911 if self.is_changed {
20912 TransformResult::Changed(self.build_forced(gc))
20913 } else {
20914 TransformResult::Unchanged
20915 }
20916 }
20917 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20919 gc.alloc(Node::JSXText(self.inner))
20920 }
20921 }
20922 #[derive(Debug)]
20924 pub struct JSXElement<'gc> {
20925 is_changed: bool,
20926 pub(super) inner: super::JSXElement<'gc>,
20927 }
20928 impl<'gc> JSXElement<'gc> {
20929 pub fn from_node(node: &'gc super::JSXElement<'gc>) -> Self {
20931 Self {
20932 is_changed: false,
20933 inner: super::JSXElement {
20934 metadata: node.metadata.duplicate(),
20935 opening_element: node.opening_element.duplicate(),
20936 children: node.children.duplicate(),
20937 closing_element: node.closing_element.duplicate(),
20938 },
20939 }
20940 }
20941 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20944 if self.is_changed {
20945 TransformResult::Changed(self.build_forced(gc))
20946 } else {
20947 TransformResult::Unchanged
20948 }
20949 }
20950 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20952 gc.alloc(Node::JSXElement(self.inner))
20953 }
20954 pub fn opening_element(&mut self, opening_element: &'gc Node<'gc>) { self.is_changed = true; self.inner.opening_element = opening_element; }
20956 pub fn children(&mut self, children: NodeList<'gc>) { self.is_changed = true; self.inner.children = children; }
20958 pub fn closing_element(&mut self, closing_element: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.closing_element = closing_element; }
20960 }
20961 #[derive(Debug)]
20963 pub struct JSXFragment<'gc> {
20964 is_changed: bool,
20965 pub(super) inner: super::JSXFragment<'gc>,
20966 }
20967 impl<'gc> JSXFragment<'gc> {
20968 pub fn from_node(node: &'gc super::JSXFragment<'gc>) -> Self {
20970 Self {
20971 is_changed: false,
20972 inner: super::JSXFragment {
20973 metadata: node.metadata.duplicate(),
20974 opening_fragment: node.opening_fragment.duplicate(),
20975 children: node.children.duplicate(),
20976 closing_fragment: node.closing_fragment.duplicate(),
20977 },
20978 }
20979 }
20980 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
20983 if self.is_changed {
20984 TransformResult::Changed(self.build_forced(gc))
20985 } else {
20986 TransformResult::Unchanged
20987 }
20988 }
20989 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
20991 gc.alloc(Node::JSXFragment(self.inner))
20992 }
20993 pub fn opening_fragment(&mut self, opening_fragment: &'gc Node<'gc>) { self.is_changed = true; self.inner.opening_fragment = opening_fragment; }
20995 pub fn children(&mut self, children: NodeList<'gc>) { self.is_changed = true; self.inner.children = children; }
20997 pub fn closing_fragment(&mut self, closing_fragment: &'gc Node<'gc>) { self.is_changed = true; self.inner.closing_fragment = closing_fragment; }
20999 }
21000 #[derive(Debug)]
21002 pub struct JSXOpeningFragment<'gc> {
21003 is_changed: bool,
21004 pub(super) inner: super::JSXOpeningFragment<'gc>,
21005 }
21006 impl<'gc> JSXOpeningFragment<'gc> {
21007 pub fn from_node(node: &'gc super::JSXOpeningFragment<'gc>) -> Self {
21009 Self {
21010 is_changed: false,
21011 inner: super::JSXOpeningFragment {
21012 metadata: node.metadata.duplicate(),
21013 },
21014 }
21015 }
21016 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21019 if self.is_changed {
21020 TransformResult::Changed(self.build_forced(gc))
21021 } else {
21022 TransformResult::Unchanged
21023 }
21024 }
21025 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21027 gc.alloc(Node::JSXOpeningFragment(self.inner))
21028 }
21029 }
21030 #[derive(Debug)]
21032 pub struct JSXClosingFragment<'gc> {
21033 is_changed: bool,
21034 pub(super) inner: super::JSXClosingFragment<'gc>,
21035 }
21036 impl<'gc> JSXClosingFragment<'gc> {
21037 pub fn from_node(node: &'gc super::JSXClosingFragment<'gc>) -> Self {
21039 Self {
21040 is_changed: false,
21041 inner: super::JSXClosingFragment {
21042 metadata: node.metadata.duplicate(),
21043 },
21044 }
21045 }
21046 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21049 if self.is_changed {
21050 TransformResult::Changed(self.build_forced(gc))
21051 } else {
21052 TransformResult::Unchanged
21053 }
21054 }
21055 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21057 gc.alloc(Node::JSXClosingFragment(self.inner))
21058 }
21059 }
21060 #[derive(Debug)]
21062 pub struct ExistsTypeAnnotation<'gc> {
21063 is_changed: bool,
21064 pub(super) inner: super::ExistsTypeAnnotation<'gc>,
21065 }
21066 impl<'gc> ExistsTypeAnnotation<'gc> {
21067 pub fn from_node(node: &'gc super::ExistsTypeAnnotation<'gc>) -> Self {
21069 Self {
21070 is_changed: false,
21071 inner: super::ExistsTypeAnnotation {
21072 metadata: node.metadata.duplicate(),
21073 },
21074 }
21075 }
21076 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21079 if self.is_changed {
21080 TransformResult::Changed(self.build_forced(gc))
21081 } else {
21082 TransformResult::Unchanged
21083 }
21084 }
21085 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21087 gc.alloc(Node::ExistsTypeAnnotation(self.inner))
21088 }
21089 }
21090 #[derive(Debug)]
21092 pub struct EmptyTypeAnnotation<'gc> {
21093 is_changed: bool,
21094 pub(super) inner: super::EmptyTypeAnnotation<'gc>,
21095 }
21096 impl<'gc> EmptyTypeAnnotation<'gc> {
21097 pub fn from_node(node: &'gc super::EmptyTypeAnnotation<'gc>) -> Self {
21099 Self {
21100 is_changed: false,
21101 inner: super::EmptyTypeAnnotation {
21102 metadata: node.metadata.duplicate(),
21103 },
21104 }
21105 }
21106 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21109 if self.is_changed {
21110 TransformResult::Changed(self.build_forced(gc))
21111 } else {
21112 TransformResult::Unchanged
21113 }
21114 }
21115 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21117 gc.alloc(Node::EmptyTypeAnnotation(self.inner))
21118 }
21119 }
21120 #[derive(Debug)]
21122 pub struct StringTypeAnnotation<'gc> {
21123 is_changed: bool,
21124 pub(super) inner: super::StringTypeAnnotation<'gc>,
21125 }
21126 impl<'gc> StringTypeAnnotation<'gc> {
21127 pub fn from_node(node: &'gc super::StringTypeAnnotation<'gc>) -> Self {
21129 Self {
21130 is_changed: false,
21131 inner: super::StringTypeAnnotation {
21132 metadata: node.metadata.duplicate(),
21133 },
21134 }
21135 }
21136 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21139 if self.is_changed {
21140 TransformResult::Changed(self.build_forced(gc))
21141 } else {
21142 TransformResult::Unchanged
21143 }
21144 }
21145 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21147 gc.alloc(Node::StringTypeAnnotation(self.inner))
21148 }
21149 }
21150 #[derive(Debug)]
21152 pub struct NumberTypeAnnotation<'gc> {
21153 is_changed: bool,
21154 pub(super) inner: super::NumberTypeAnnotation<'gc>,
21155 }
21156 impl<'gc> NumberTypeAnnotation<'gc> {
21157 pub fn from_node(node: &'gc super::NumberTypeAnnotation<'gc>) -> Self {
21159 Self {
21160 is_changed: false,
21161 inner: super::NumberTypeAnnotation {
21162 metadata: node.metadata.duplicate(),
21163 },
21164 }
21165 }
21166 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21169 if self.is_changed {
21170 TransformResult::Changed(self.build_forced(gc))
21171 } else {
21172 TransformResult::Unchanged
21173 }
21174 }
21175 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21177 gc.alloc(Node::NumberTypeAnnotation(self.inner))
21178 }
21179 }
21180 #[derive(Debug)]
21182 pub struct StringLiteralTypeAnnotation<'gc> {
21183 is_changed: bool,
21184 pub(super) inner: super::StringLiteralTypeAnnotation<'gc>,
21185 }
21186 impl<'gc> StringLiteralTypeAnnotation<'gc> {
21187 pub fn from_node(node: &'gc super::StringLiteralTypeAnnotation<'gc>) -> Self {
21189 Self {
21190 is_changed: false,
21191 inner: super::StringLiteralTypeAnnotation {
21192 metadata: node.metadata.duplicate(),
21193 value: Cell::new(node.value.get()),
21194 raw: Cell::new(node.raw.get()),
21195 },
21196 }
21197 }
21198 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21201 if self.is_changed {
21202 TransformResult::Changed(self.build_forced(gc))
21203 } else {
21204 TransformResult::Unchanged
21205 }
21206 }
21207 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21209 gc.alloc(Node::StringLiteralTypeAnnotation(self.inner))
21210 }
21211 }
21212 #[derive(Debug)]
21214 pub struct NumberLiteralTypeAnnotation<'gc> {
21215 is_changed: bool,
21216 pub(super) inner: super::NumberLiteralTypeAnnotation<'gc>,
21217 }
21218 impl<'gc> NumberLiteralTypeAnnotation<'gc> {
21219 pub fn from_node(node: &'gc super::NumberLiteralTypeAnnotation<'gc>) -> Self {
21221 Self {
21222 is_changed: false,
21223 inner: super::NumberLiteralTypeAnnotation {
21224 metadata: node.metadata.duplicate(),
21225 value: Cell::new(node.value.get()),
21226 raw: Cell::new(node.raw.get()),
21227 },
21228 }
21229 }
21230 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21233 if self.is_changed {
21234 TransformResult::Changed(self.build_forced(gc))
21235 } else {
21236 TransformResult::Unchanged
21237 }
21238 }
21239 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21241 gc.alloc(Node::NumberLiteralTypeAnnotation(self.inner))
21242 }
21243 }
21244 #[derive(Debug)]
21246 pub struct BigIntLiteralTypeAnnotation<'gc> {
21247 is_changed: bool,
21248 pub(super) inner: super::BigIntLiteralTypeAnnotation<'gc>,
21249 }
21250 impl<'gc> BigIntLiteralTypeAnnotation<'gc> {
21251 pub fn from_node(node: &'gc super::BigIntLiteralTypeAnnotation<'gc>) -> Self {
21253 Self {
21254 is_changed: false,
21255 inner: super::BigIntLiteralTypeAnnotation {
21256 metadata: node.metadata.duplicate(),
21257 raw: Cell::new(node.raw.get()),
21258 },
21259 }
21260 }
21261 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21264 if self.is_changed {
21265 TransformResult::Changed(self.build_forced(gc))
21266 } else {
21267 TransformResult::Unchanged
21268 }
21269 }
21270 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21272 gc.alloc(Node::BigIntLiteralTypeAnnotation(self.inner))
21273 }
21274 }
21275 #[derive(Debug)]
21277 pub struct BooleanTypeAnnotation<'gc> {
21278 is_changed: bool,
21279 pub(super) inner: super::BooleanTypeAnnotation<'gc>,
21280 }
21281 impl<'gc> BooleanTypeAnnotation<'gc> {
21282 pub fn from_node(node: &'gc super::BooleanTypeAnnotation<'gc>) -> Self {
21284 Self {
21285 is_changed: false,
21286 inner: super::BooleanTypeAnnotation {
21287 metadata: node.metadata.duplicate(),
21288 },
21289 }
21290 }
21291 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21294 if self.is_changed {
21295 TransformResult::Changed(self.build_forced(gc))
21296 } else {
21297 TransformResult::Unchanged
21298 }
21299 }
21300 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21302 gc.alloc(Node::BooleanTypeAnnotation(self.inner))
21303 }
21304 }
21305 #[derive(Debug)]
21307 pub struct BooleanLiteralTypeAnnotation<'gc> {
21308 is_changed: bool,
21309 pub(super) inner: super::BooleanLiteralTypeAnnotation<'gc>,
21310 }
21311 impl<'gc> BooleanLiteralTypeAnnotation<'gc> {
21312 pub fn from_node(node: &'gc super::BooleanLiteralTypeAnnotation<'gc>) -> Self {
21314 Self {
21315 is_changed: false,
21316 inner: super::BooleanLiteralTypeAnnotation {
21317 metadata: node.metadata.duplicate(),
21318 value: Cell::new(node.value.get()),
21319 raw: Cell::new(node.raw.get()),
21320 },
21321 }
21322 }
21323 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21326 if self.is_changed {
21327 TransformResult::Changed(self.build_forced(gc))
21328 } else {
21329 TransformResult::Unchanged
21330 }
21331 }
21332 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21334 gc.alloc(Node::BooleanLiteralTypeAnnotation(self.inner))
21335 }
21336 }
21337 #[derive(Debug)]
21339 pub struct NullLiteralTypeAnnotation<'gc> {
21340 is_changed: bool,
21341 pub(super) inner: super::NullLiteralTypeAnnotation<'gc>,
21342 }
21343 impl<'gc> NullLiteralTypeAnnotation<'gc> {
21344 pub fn from_node(node: &'gc super::NullLiteralTypeAnnotation<'gc>) -> Self {
21346 Self {
21347 is_changed: false,
21348 inner: super::NullLiteralTypeAnnotation {
21349 metadata: node.metadata.duplicate(),
21350 },
21351 }
21352 }
21353 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21356 if self.is_changed {
21357 TransformResult::Changed(self.build_forced(gc))
21358 } else {
21359 TransformResult::Unchanged
21360 }
21361 }
21362 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21364 gc.alloc(Node::NullLiteralTypeAnnotation(self.inner))
21365 }
21366 }
21367 #[derive(Debug)]
21369 pub struct SymbolTypeAnnotation<'gc> {
21370 is_changed: bool,
21371 pub(super) inner: super::SymbolTypeAnnotation<'gc>,
21372 }
21373 impl<'gc> SymbolTypeAnnotation<'gc> {
21374 pub fn from_node(node: &'gc super::SymbolTypeAnnotation<'gc>) -> Self {
21376 Self {
21377 is_changed: false,
21378 inner: super::SymbolTypeAnnotation {
21379 metadata: node.metadata.duplicate(),
21380 },
21381 }
21382 }
21383 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21386 if self.is_changed {
21387 TransformResult::Changed(self.build_forced(gc))
21388 } else {
21389 TransformResult::Unchanged
21390 }
21391 }
21392 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21394 gc.alloc(Node::SymbolTypeAnnotation(self.inner))
21395 }
21396 }
21397 #[derive(Debug)]
21399 pub struct AnyTypeAnnotation<'gc> {
21400 is_changed: bool,
21401 pub(super) inner: super::AnyTypeAnnotation<'gc>,
21402 }
21403 impl<'gc> AnyTypeAnnotation<'gc> {
21404 pub fn from_node(node: &'gc super::AnyTypeAnnotation<'gc>) -> Self {
21406 Self {
21407 is_changed: false,
21408 inner: super::AnyTypeAnnotation {
21409 metadata: node.metadata.duplicate(),
21410 },
21411 }
21412 }
21413 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21416 if self.is_changed {
21417 TransformResult::Changed(self.build_forced(gc))
21418 } else {
21419 TransformResult::Unchanged
21420 }
21421 }
21422 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21424 gc.alloc(Node::AnyTypeAnnotation(self.inner))
21425 }
21426 }
21427 #[derive(Debug)]
21429 pub struct MixedTypeAnnotation<'gc> {
21430 is_changed: bool,
21431 pub(super) inner: super::MixedTypeAnnotation<'gc>,
21432 }
21433 impl<'gc> MixedTypeAnnotation<'gc> {
21434 pub fn from_node(node: &'gc super::MixedTypeAnnotation<'gc>) -> Self {
21436 Self {
21437 is_changed: false,
21438 inner: super::MixedTypeAnnotation {
21439 metadata: node.metadata.duplicate(),
21440 },
21441 }
21442 }
21443 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21446 if self.is_changed {
21447 TransformResult::Changed(self.build_forced(gc))
21448 } else {
21449 TransformResult::Unchanged
21450 }
21451 }
21452 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21454 gc.alloc(Node::MixedTypeAnnotation(self.inner))
21455 }
21456 }
21457 #[derive(Debug)]
21459 pub struct BigIntTypeAnnotation<'gc> {
21460 is_changed: bool,
21461 pub(super) inner: super::BigIntTypeAnnotation<'gc>,
21462 }
21463 impl<'gc> BigIntTypeAnnotation<'gc> {
21464 pub fn from_node(node: &'gc super::BigIntTypeAnnotation<'gc>) -> Self {
21466 Self {
21467 is_changed: false,
21468 inner: super::BigIntTypeAnnotation {
21469 metadata: node.metadata.duplicate(),
21470 },
21471 }
21472 }
21473 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21476 if self.is_changed {
21477 TransformResult::Changed(self.build_forced(gc))
21478 } else {
21479 TransformResult::Unchanged
21480 }
21481 }
21482 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21484 gc.alloc(Node::BigIntTypeAnnotation(self.inner))
21485 }
21486 }
21487 #[derive(Debug)]
21489 pub struct VoidTypeAnnotation<'gc> {
21490 is_changed: bool,
21491 pub(super) inner: super::VoidTypeAnnotation<'gc>,
21492 }
21493 impl<'gc> VoidTypeAnnotation<'gc> {
21494 pub fn from_node(node: &'gc super::VoidTypeAnnotation<'gc>) -> Self {
21496 Self {
21497 is_changed: false,
21498 inner: super::VoidTypeAnnotation {
21499 metadata: node.metadata.duplicate(),
21500 },
21501 }
21502 }
21503 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21506 if self.is_changed {
21507 TransformResult::Changed(self.build_forced(gc))
21508 } else {
21509 TransformResult::Unchanged
21510 }
21511 }
21512 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21514 gc.alloc(Node::VoidTypeAnnotation(self.inner))
21515 }
21516 }
21517 #[derive(Debug)]
21519 pub struct NeverTypeAnnotation<'gc> {
21520 is_changed: bool,
21521 pub(super) inner: super::NeverTypeAnnotation<'gc>,
21522 }
21523 impl<'gc> NeverTypeAnnotation<'gc> {
21524 pub fn from_node(node: &'gc super::NeverTypeAnnotation<'gc>) -> Self {
21526 Self {
21527 is_changed: false,
21528 inner: super::NeverTypeAnnotation {
21529 metadata: node.metadata.duplicate(),
21530 },
21531 }
21532 }
21533 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21536 if self.is_changed {
21537 TransformResult::Changed(self.build_forced(gc))
21538 } else {
21539 TransformResult::Unchanged
21540 }
21541 }
21542 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21544 gc.alloc(Node::NeverTypeAnnotation(self.inner))
21545 }
21546 }
21547 #[derive(Debug)]
21549 pub struct UnknownTypeAnnotation<'gc> {
21550 is_changed: bool,
21551 pub(super) inner: super::UnknownTypeAnnotation<'gc>,
21552 }
21553 impl<'gc> UnknownTypeAnnotation<'gc> {
21554 pub fn from_node(node: &'gc super::UnknownTypeAnnotation<'gc>) -> Self {
21556 Self {
21557 is_changed: false,
21558 inner: super::UnknownTypeAnnotation {
21559 metadata: node.metadata.duplicate(),
21560 },
21561 }
21562 }
21563 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21566 if self.is_changed {
21567 TransformResult::Changed(self.build_forced(gc))
21568 } else {
21569 TransformResult::Unchanged
21570 }
21571 }
21572 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21574 gc.alloc(Node::UnknownTypeAnnotation(self.inner))
21575 }
21576 }
21577 #[derive(Debug)]
21579 pub struct UndefinedTypeAnnotation<'gc> {
21580 is_changed: bool,
21581 pub(super) inner: super::UndefinedTypeAnnotation<'gc>,
21582 }
21583 impl<'gc> UndefinedTypeAnnotation<'gc> {
21584 pub fn from_node(node: &'gc super::UndefinedTypeAnnotation<'gc>) -> Self {
21586 Self {
21587 is_changed: false,
21588 inner: super::UndefinedTypeAnnotation {
21589 metadata: node.metadata.duplicate(),
21590 },
21591 }
21592 }
21593 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21596 if self.is_changed {
21597 TransformResult::Changed(self.build_forced(gc))
21598 } else {
21599 TransformResult::Unchanged
21600 }
21601 }
21602 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21604 gc.alloc(Node::UndefinedTypeAnnotation(self.inner))
21605 }
21606 }
21607 #[derive(Debug)]
21609 pub struct FunctionTypeAnnotation<'gc> {
21610 is_changed: bool,
21611 pub(super) inner: super::FunctionTypeAnnotation<'gc>,
21612 }
21613 impl<'gc> FunctionTypeAnnotation<'gc> {
21614 pub fn from_node(node: &'gc super::FunctionTypeAnnotation<'gc>) -> Self {
21616 Self {
21617 is_changed: false,
21618 inner: super::FunctionTypeAnnotation {
21619 metadata: node.metadata.duplicate(),
21620 params: node.params.duplicate(),
21621 this: node.this.duplicate(),
21622 return_type: node.return_type.duplicate(),
21623 rest: node.rest.duplicate(),
21624 type_parameters: node.type_parameters.duplicate(),
21625 },
21626 }
21627 }
21628 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21631 if self.is_changed {
21632 TransformResult::Changed(self.build_forced(gc))
21633 } else {
21634 TransformResult::Unchanged
21635 }
21636 }
21637 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21639 gc.alloc(Node::FunctionTypeAnnotation(self.inner))
21640 }
21641 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
21643 pub fn this(&mut self, this: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.this = this; }
21645 pub fn return_type(&mut self, return_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.return_type = return_type; }
21647 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
21649 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
21651 }
21652 #[derive(Debug)]
21654 pub struct HookTypeAnnotation<'gc> {
21655 is_changed: bool,
21656 pub(super) inner: super::HookTypeAnnotation<'gc>,
21657 }
21658 impl<'gc> HookTypeAnnotation<'gc> {
21659 pub fn from_node(node: &'gc super::HookTypeAnnotation<'gc>) -> Self {
21661 Self {
21662 is_changed: false,
21663 inner: super::HookTypeAnnotation {
21664 metadata: node.metadata.duplicate(),
21665 params: node.params.duplicate(),
21666 return_type: node.return_type.duplicate(),
21667 rest: node.rest.duplicate(),
21668 type_parameters: node.type_parameters.duplicate(),
21669 },
21670 }
21671 }
21672 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21675 if self.is_changed {
21676 TransformResult::Changed(self.build_forced(gc))
21677 } else {
21678 TransformResult::Unchanged
21679 }
21680 }
21681 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21683 gc.alloc(Node::HookTypeAnnotation(self.inner))
21684 }
21685 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
21687 pub fn return_type(&mut self, return_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.return_type = return_type; }
21689 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
21691 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
21693 }
21694 #[derive(Debug)]
21696 pub struct FunctionTypeParam<'gc> {
21697 is_changed: bool,
21698 pub(super) inner: super::FunctionTypeParam<'gc>,
21699 }
21700 impl<'gc> FunctionTypeParam<'gc> {
21701 pub fn from_node(node: &'gc super::FunctionTypeParam<'gc>) -> Self {
21703 Self {
21704 is_changed: false,
21705 inner: super::FunctionTypeParam {
21706 metadata: node.metadata.duplicate(),
21707 name: node.name.duplicate(),
21708 type_annotation: node.type_annotation.duplicate(),
21709 optional: Cell::new(node.optional.get()),
21710 },
21711 }
21712 }
21713 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21716 if self.is_changed {
21717 TransformResult::Changed(self.build_forced(gc))
21718 } else {
21719 TransformResult::Unchanged
21720 }
21721 }
21722 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21724 gc.alloc(Node::FunctionTypeParam(self.inner))
21725 }
21726 pub fn name(&mut self, name: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.name = name; }
21728 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
21730 }
21731 #[derive(Debug)]
21733 pub struct ComponentTypeAnnotation<'gc> {
21734 is_changed: bool,
21735 pub(super) inner: super::ComponentTypeAnnotation<'gc>,
21736 }
21737 impl<'gc> ComponentTypeAnnotation<'gc> {
21738 pub fn from_node(node: &'gc super::ComponentTypeAnnotation<'gc>) -> Self {
21740 Self {
21741 is_changed: false,
21742 inner: super::ComponentTypeAnnotation {
21743 metadata: node.metadata.duplicate(),
21744 params: node.params.duplicate(),
21745 rest: node.rest.duplicate(),
21746 type_parameters: node.type_parameters.duplicate(),
21747 renders_type: node.renders_type.duplicate(),
21748 },
21749 }
21750 }
21751 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21754 if self.is_changed {
21755 TransformResult::Changed(self.build_forced(gc))
21756 } else {
21757 TransformResult::Unchanged
21758 }
21759 }
21760 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21762 gc.alloc(Node::ComponentTypeAnnotation(self.inner))
21763 }
21764 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
21766 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
21768 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
21770 pub fn renders_type(&mut self, renders_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.renders_type = renders_type; }
21772 }
21773 #[derive(Debug)]
21775 pub struct ComponentTypeParameter<'gc> {
21776 is_changed: bool,
21777 pub(super) inner: super::ComponentTypeParameter<'gc>,
21778 }
21779 impl<'gc> ComponentTypeParameter<'gc> {
21780 pub fn from_node(node: &'gc super::ComponentTypeParameter<'gc>) -> Self {
21782 Self {
21783 is_changed: false,
21784 inner: super::ComponentTypeParameter {
21785 metadata: node.metadata.duplicate(),
21786 name: node.name.duplicate(),
21787 type_annotation: node.type_annotation.duplicate(),
21788 optional: Cell::new(node.optional.get()),
21789 },
21790 }
21791 }
21792 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21795 if self.is_changed {
21796 TransformResult::Changed(self.build_forced(gc))
21797 } else {
21798 TransformResult::Unchanged
21799 }
21800 }
21801 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21803 gc.alloc(Node::ComponentTypeParameter(self.inner))
21804 }
21805 pub fn name(&mut self, name: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.name = name; }
21807 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
21809 }
21810 #[derive(Debug)]
21812 pub struct NullableTypeAnnotation<'gc> {
21813 is_changed: bool,
21814 pub(super) inner: super::NullableTypeAnnotation<'gc>,
21815 }
21816 impl<'gc> NullableTypeAnnotation<'gc> {
21817 pub fn from_node(node: &'gc super::NullableTypeAnnotation<'gc>) -> Self {
21819 Self {
21820 is_changed: false,
21821 inner: super::NullableTypeAnnotation {
21822 metadata: node.metadata.duplicate(),
21823 type_annotation: node.type_annotation.duplicate(),
21824 },
21825 }
21826 }
21827 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21830 if self.is_changed {
21831 TransformResult::Changed(self.build_forced(gc))
21832 } else {
21833 TransformResult::Unchanged
21834 }
21835 }
21836 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21838 gc.alloc(Node::NullableTypeAnnotation(self.inner))
21839 }
21840 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
21842 }
21843 #[derive(Debug)]
21845 pub struct QualifiedTypeIdentifier<'gc> {
21846 is_changed: bool,
21847 pub(super) inner: super::QualifiedTypeIdentifier<'gc>,
21848 }
21849 impl<'gc> QualifiedTypeIdentifier<'gc> {
21850 pub fn from_node(node: &'gc super::QualifiedTypeIdentifier<'gc>) -> Self {
21852 Self {
21853 is_changed: false,
21854 inner: super::QualifiedTypeIdentifier {
21855 metadata: node.metadata.duplicate(),
21856 qualification: node.qualification.duplicate(),
21857 id: node.id.duplicate(),
21858 },
21859 }
21860 }
21861 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21864 if self.is_changed {
21865 TransformResult::Changed(self.build_forced(gc))
21866 } else {
21867 TransformResult::Unchanged
21868 }
21869 }
21870 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21872 gc.alloc(Node::QualifiedTypeIdentifier(self.inner))
21873 }
21874 pub fn qualification(&mut self, qualification: &'gc Node<'gc>) { self.is_changed = true; self.inner.qualification = qualification; }
21876 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
21878 }
21879 #[derive(Debug)]
21881 pub struct TypeofTypeAnnotation<'gc> {
21882 is_changed: bool,
21883 pub(super) inner: super::TypeofTypeAnnotation<'gc>,
21884 }
21885 impl<'gc> TypeofTypeAnnotation<'gc> {
21886 pub fn from_node(node: &'gc super::TypeofTypeAnnotation<'gc>) -> Self {
21888 Self {
21889 is_changed: false,
21890 inner: super::TypeofTypeAnnotation {
21891 metadata: node.metadata.duplicate(),
21892 argument: node.argument.duplicate(),
21893 type_arguments: node.type_arguments.duplicate(),
21894 },
21895 }
21896 }
21897 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21900 if self.is_changed {
21901 TransformResult::Changed(self.build_forced(gc))
21902 } else {
21903 TransformResult::Unchanged
21904 }
21905 }
21906 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21908 gc.alloc(Node::TypeofTypeAnnotation(self.inner))
21909 }
21910 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
21912 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
21914 }
21915 #[derive(Debug)]
21917 pub struct KeyofTypeAnnotation<'gc> {
21918 is_changed: bool,
21919 pub(super) inner: super::KeyofTypeAnnotation<'gc>,
21920 }
21921 impl<'gc> KeyofTypeAnnotation<'gc> {
21922 pub fn from_node(node: &'gc super::KeyofTypeAnnotation<'gc>) -> Self {
21924 Self {
21925 is_changed: false,
21926 inner: super::KeyofTypeAnnotation {
21927 metadata: node.metadata.duplicate(),
21928 argument: node.argument.duplicate(),
21929 },
21930 }
21931 }
21932 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21935 if self.is_changed {
21936 TransformResult::Changed(self.build_forced(gc))
21937 } else {
21938 TransformResult::Unchanged
21939 }
21940 }
21941 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21943 gc.alloc(Node::KeyofTypeAnnotation(self.inner))
21944 }
21945 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
21947 }
21948 #[derive(Debug)]
21950 pub struct TypeOperator<'gc> {
21951 is_changed: bool,
21952 pub(super) inner: super::TypeOperator<'gc>,
21953 }
21954 impl<'gc> TypeOperator<'gc> {
21955 pub fn from_node(node: &'gc super::TypeOperator<'gc>) -> Self {
21957 Self {
21958 is_changed: false,
21959 inner: super::TypeOperator {
21960 metadata: node.metadata.duplicate(),
21961 operator: Cell::new(node.operator.get()),
21962 type_annotation: node.type_annotation.duplicate(),
21963 },
21964 }
21965 }
21966 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
21969 if self.is_changed {
21970 TransformResult::Changed(self.build_forced(gc))
21971 } else {
21972 TransformResult::Unchanged
21973 }
21974 }
21975 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
21977 gc.alloc(Node::TypeOperator(self.inner))
21978 }
21979 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
21981 }
21982 #[derive(Debug)]
21984 pub struct QualifiedTypeofIdentifier<'gc> {
21985 is_changed: bool,
21986 pub(super) inner: super::QualifiedTypeofIdentifier<'gc>,
21987 }
21988 impl<'gc> QualifiedTypeofIdentifier<'gc> {
21989 pub fn from_node(node: &'gc super::QualifiedTypeofIdentifier<'gc>) -> Self {
21991 Self {
21992 is_changed: false,
21993 inner: super::QualifiedTypeofIdentifier {
21994 metadata: node.metadata.duplicate(),
21995 qualification: node.qualification.duplicate(),
21996 id: node.id.duplicate(),
21997 },
21998 }
21999 }
22000 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22003 if self.is_changed {
22004 TransformResult::Changed(self.build_forced(gc))
22005 } else {
22006 TransformResult::Unchanged
22007 }
22008 }
22009 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22011 gc.alloc(Node::QualifiedTypeofIdentifier(self.inner))
22012 }
22013 pub fn qualification(&mut self, qualification: &'gc Node<'gc>) { self.is_changed = true; self.inner.qualification = qualification; }
22015 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22017 }
22018 #[derive(Debug)]
22020 pub struct TupleTypeAnnotation<'gc> {
22021 is_changed: bool,
22022 pub(super) inner: super::TupleTypeAnnotation<'gc>,
22023 }
22024 impl<'gc> TupleTypeAnnotation<'gc> {
22025 pub fn from_node(node: &'gc super::TupleTypeAnnotation<'gc>) -> Self {
22027 Self {
22028 is_changed: false,
22029 inner: super::TupleTypeAnnotation {
22030 metadata: node.metadata.duplicate(),
22031 element_types: node.element_types.duplicate(),
22032 inexact: Cell::new(node.inexact.get()),
22033 },
22034 }
22035 }
22036 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22039 if self.is_changed {
22040 TransformResult::Changed(self.build_forced(gc))
22041 } else {
22042 TransformResult::Unchanged
22043 }
22044 }
22045 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22047 gc.alloc(Node::TupleTypeAnnotation(self.inner))
22048 }
22049 pub fn element_types(&mut self, element_types: NodeList<'gc>) { self.is_changed = true; self.inner.element_types = element_types; }
22051 }
22052 #[derive(Debug)]
22054 pub struct TupleTypeSpreadElement<'gc> {
22055 is_changed: bool,
22056 pub(super) inner: super::TupleTypeSpreadElement<'gc>,
22057 }
22058 impl<'gc> TupleTypeSpreadElement<'gc> {
22059 pub fn from_node(node: &'gc super::TupleTypeSpreadElement<'gc>) -> Self {
22061 Self {
22062 is_changed: false,
22063 inner: super::TupleTypeSpreadElement {
22064 metadata: node.metadata.duplicate(),
22065 label: node.label.duplicate(),
22066 type_annotation: node.type_annotation.duplicate(),
22067 },
22068 }
22069 }
22070 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22073 if self.is_changed {
22074 TransformResult::Changed(self.build_forced(gc))
22075 } else {
22076 TransformResult::Unchanged
22077 }
22078 }
22079 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22081 gc.alloc(Node::TupleTypeSpreadElement(self.inner))
22082 }
22083 pub fn label(&mut self, label: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.label = label; }
22085 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
22087 }
22088 #[derive(Debug)]
22090 pub struct TupleTypeLabeledElement<'gc> {
22091 is_changed: bool,
22092 pub(super) inner: super::TupleTypeLabeledElement<'gc>,
22093 }
22094 impl<'gc> TupleTypeLabeledElement<'gc> {
22095 pub fn from_node(node: &'gc super::TupleTypeLabeledElement<'gc>) -> Self {
22097 Self {
22098 is_changed: false,
22099 inner: super::TupleTypeLabeledElement {
22100 metadata: node.metadata.duplicate(),
22101 label: node.label.duplicate(),
22102 element_type: node.element_type.duplicate(),
22103 optional: Cell::new(node.optional.get()),
22104 variance: node.variance.duplicate(),
22105 },
22106 }
22107 }
22108 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22111 if self.is_changed {
22112 TransformResult::Changed(self.build_forced(gc))
22113 } else {
22114 TransformResult::Unchanged
22115 }
22116 }
22117 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22119 gc.alloc(Node::TupleTypeLabeledElement(self.inner))
22120 }
22121 pub fn label(&mut self, label: &'gc Node<'gc>) { self.is_changed = true; self.inner.label = label; }
22123 pub fn element_type(&mut self, element_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.element_type = element_type; }
22125 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
22127 }
22128 #[derive(Debug)]
22130 pub struct ArrayTypeAnnotation<'gc> {
22131 is_changed: bool,
22132 pub(super) inner: super::ArrayTypeAnnotation<'gc>,
22133 }
22134 impl<'gc> ArrayTypeAnnotation<'gc> {
22135 pub fn from_node(node: &'gc super::ArrayTypeAnnotation<'gc>) -> Self {
22137 Self {
22138 is_changed: false,
22139 inner: super::ArrayTypeAnnotation {
22140 metadata: node.metadata.duplicate(),
22141 element_type: node.element_type.duplicate(),
22142 },
22143 }
22144 }
22145 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22148 if self.is_changed {
22149 TransformResult::Changed(self.build_forced(gc))
22150 } else {
22151 TransformResult::Unchanged
22152 }
22153 }
22154 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22156 gc.alloc(Node::ArrayTypeAnnotation(self.inner))
22157 }
22158 pub fn element_type(&mut self, element_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.element_type = element_type; }
22160 }
22161 #[derive(Debug)]
22163 pub struct InferTypeAnnotation<'gc> {
22164 is_changed: bool,
22165 pub(super) inner: super::InferTypeAnnotation<'gc>,
22166 }
22167 impl<'gc> InferTypeAnnotation<'gc> {
22168 pub fn from_node(node: &'gc super::InferTypeAnnotation<'gc>) -> Self {
22170 Self {
22171 is_changed: false,
22172 inner: super::InferTypeAnnotation {
22173 metadata: node.metadata.duplicate(),
22174 type_parameter: node.type_parameter.duplicate(),
22175 },
22176 }
22177 }
22178 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22181 if self.is_changed {
22182 TransformResult::Changed(self.build_forced(gc))
22183 } else {
22184 TransformResult::Unchanged
22185 }
22186 }
22187 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22189 gc.alloc(Node::InferTypeAnnotation(self.inner))
22190 }
22191 pub fn type_parameter(&mut self, type_parameter: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_parameter = type_parameter; }
22193 }
22194 #[derive(Debug)]
22196 pub struct UnionTypeAnnotation<'gc> {
22197 is_changed: bool,
22198 pub(super) inner: super::UnionTypeAnnotation<'gc>,
22199 }
22200 impl<'gc> UnionTypeAnnotation<'gc> {
22201 pub fn from_node(node: &'gc super::UnionTypeAnnotation<'gc>) -> Self {
22203 Self {
22204 is_changed: false,
22205 inner: super::UnionTypeAnnotation {
22206 metadata: node.metadata.duplicate(),
22207 types: node.types.duplicate(),
22208 },
22209 }
22210 }
22211 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22214 if self.is_changed {
22215 TransformResult::Changed(self.build_forced(gc))
22216 } else {
22217 TransformResult::Unchanged
22218 }
22219 }
22220 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22222 gc.alloc(Node::UnionTypeAnnotation(self.inner))
22223 }
22224 pub fn types(&mut self, types: NodeList<'gc>) { self.is_changed = true; self.inner.types = types; }
22226 }
22227 #[derive(Debug)]
22229 pub struct IntersectionTypeAnnotation<'gc> {
22230 is_changed: bool,
22231 pub(super) inner: super::IntersectionTypeAnnotation<'gc>,
22232 }
22233 impl<'gc> IntersectionTypeAnnotation<'gc> {
22234 pub fn from_node(node: &'gc super::IntersectionTypeAnnotation<'gc>) -> Self {
22236 Self {
22237 is_changed: false,
22238 inner: super::IntersectionTypeAnnotation {
22239 metadata: node.metadata.duplicate(),
22240 types: node.types.duplicate(),
22241 },
22242 }
22243 }
22244 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22247 if self.is_changed {
22248 TransformResult::Changed(self.build_forced(gc))
22249 } else {
22250 TransformResult::Unchanged
22251 }
22252 }
22253 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22255 gc.alloc(Node::IntersectionTypeAnnotation(self.inner))
22256 }
22257 pub fn types(&mut self, types: NodeList<'gc>) { self.is_changed = true; self.inner.types = types; }
22259 }
22260 #[derive(Debug)]
22262 pub struct GenericTypeAnnotation<'gc> {
22263 is_changed: bool,
22264 pub(super) inner: super::GenericTypeAnnotation<'gc>,
22265 }
22266 impl<'gc> GenericTypeAnnotation<'gc> {
22267 pub fn from_node(node: &'gc super::GenericTypeAnnotation<'gc>) -> Self {
22269 Self {
22270 is_changed: false,
22271 inner: super::GenericTypeAnnotation {
22272 metadata: node.metadata.duplicate(),
22273 id: node.id.duplicate(),
22274 type_parameters: node.type_parameters.duplicate(),
22275 },
22276 }
22277 }
22278 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22281 if self.is_changed {
22282 TransformResult::Changed(self.build_forced(gc))
22283 } else {
22284 TransformResult::Unchanged
22285 }
22286 }
22287 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22289 gc.alloc(Node::GenericTypeAnnotation(self.inner))
22290 }
22291 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22293 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22295 }
22296 #[derive(Debug)]
22298 pub struct IndexedAccessType<'gc> {
22299 is_changed: bool,
22300 pub(super) inner: super::IndexedAccessType<'gc>,
22301 }
22302 impl<'gc> IndexedAccessType<'gc> {
22303 pub fn from_node(node: &'gc super::IndexedAccessType<'gc>) -> Self {
22305 Self {
22306 is_changed: false,
22307 inner: super::IndexedAccessType {
22308 metadata: node.metadata.duplicate(),
22309 object_type: node.object_type.duplicate(),
22310 index_type: node.index_type.duplicate(),
22311 },
22312 }
22313 }
22314 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22317 if self.is_changed {
22318 TransformResult::Changed(self.build_forced(gc))
22319 } else {
22320 TransformResult::Unchanged
22321 }
22322 }
22323 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22325 gc.alloc(Node::IndexedAccessType(self.inner))
22326 }
22327 pub fn object_type(&mut self, object_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.object_type = object_type; }
22329 pub fn index_type(&mut self, index_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.index_type = index_type; }
22331 }
22332 #[derive(Debug)]
22334 pub struct OptionalIndexedAccessType<'gc> {
22335 is_changed: bool,
22336 pub(super) inner: super::OptionalIndexedAccessType<'gc>,
22337 }
22338 impl<'gc> OptionalIndexedAccessType<'gc> {
22339 pub fn from_node(node: &'gc super::OptionalIndexedAccessType<'gc>) -> Self {
22341 Self {
22342 is_changed: false,
22343 inner: super::OptionalIndexedAccessType {
22344 metadata: node.metadata.duplicate(),
22345 object_type: node.object_type.duplicate(),
22346 index_type: node.index_type.duplicate(),
22347 optional: Cell::new(node.optional.get()),
22348 },
22349 }
22350 }
22351 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22354 if self.is_changed {
22355 TransformResult::Changed(self.build_forced(gc))
22356 } else {
22357 TransformResult::Unchanged
22358 }
22359 }
22360 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22362 gc.alloc(Node::OptionalIndexedAccessType(self.inner))
22363 }
22364 pub fn object_type(&mut self, object_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.object_type = object_type; }
22366 pub fn index_type(&mut self, index_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.index_type = index_type; }
22368 }
22369 #[derive(Debug)]
22371 pub struct ConditionalTypeAnnotation<'gc> {
22372 is_changed: bool,
22373 pub(super) inner: super::ConditionalTypeAnnotation<'gc>,
22374 }
22375 impl<'gc> ConditionalTypeAnnotation<'gc> {
22376 pub fn from_node(node: &'gc super::ConditionalTypeAnnotation<'gc>) -> Self {
22378 Self {
22379 is_changed: false,
22380 inner: super::ConditionalTypeAnnotation {
22381 metadata: node.metadata.duplicate(),
22382 check_type: node.check_type.duplicate(),
22383 extends_type: node.extends_type.duplicate(),
22384 true_type: node.true_type.duplicate(),
22385 false_type: node.false_type.duplicate(),
22386 },
22387 }
22388 }
22389 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22392 if self.is_changed {
22393 TransformResult::Changed(self.build_forced(gc))
22394 } else {
22395 TransformResult::Unchanged
22396 }
22397 }
22398 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22400 gc.alloc(Node::ConditionalTypeAnnotation(self.inner))
22401 }
22402 pub fn check_type(&mut self, check_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.check_type = check_type; }
22404 pub fn extends_type(&mut self, extends_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.extends_type = extends_type; }
22406 pub fn true_type(&mut self, true_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.true_type = true_type; }
22408 pub fn false_type(&mut self, false_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.false_type = false_type; }
22410 }
22411 #[derive(Debug)]
22413 pub struct TypePredicate<'gc> {
22414 is_changed: bool,
22415 pub(super) inner: super::TypePredicate<'gc>,
22416 }
22417 impl<'gc> TypePredicate<'gc> {
22418 pub fn from_node(node: &'gc super::TypePredicate<'gc>) -> Self {
22420 Self {
22421 is_changed: false,
22422 inner: super::TypePredicate {
22423 metadata: node.metadata.duplicate(),
22424 parameter_name: node.parameter_name.duplicate(),
22425 type_annotation: node.type_annotation.duplicate(),
22426 kind: Cell::new(node.kind.get()),
22427 },
22428 }
22429 }
22430 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22433 if self.is_changed {
22434 TransformResult::Changed(self.build_forced(gc))
22435 } else {
22436 TransformResult::Unchanged
22437 }
22438 }
22439 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22441 gc.alloc(Node::TypePredicate(self.inner))
22442 }
22443 pub fn parameter_name(&mut self, parameter_name: &'gc Node<'gc>) { self.is_changed = true; self.inner.parameter_name = parameter_name; }
22445 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
22447 }
22448 #[derive(Debug)]
22450 pub struct InterfaceTypeAnnotation<'gc> {
22451 is_changed: bool,
22452 pub(super) inner: super::InterfaceTypeAnnotation<'gc>,
22453 }
22454 impl<'gc> InterfaceTypeAnnotation<'gc> {
22455 pub fn from_node(node: &'gc super::InterfaceTypeAnnotation<'gc>) -> Self {
22457 Self {
22458 is_changed: false,
22459 inner: super::InterfaceTypeAnnotation {
22460 metadata: node.metadata.duplicate(),
22461 extends: node.extends.duplicate(),
22462 body: node.body.duplicate(),
22463 },
22464 }
22465 }
22466 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22469 if self.is_changed {
22470 TransformResult::Changed(self.build_forced(gc))
22471 } else {
22472 TransformResult::Unchanged
22473 }
22474 }
22475 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22477 gc.alloc(Node::InterfaceTypeAnnotation(self.inner))
22478 }
22479 pub fn extends(&mut self, extends: NodeList<'gc>) { self.is_changed = true; self.inner.extends = extends; }
22481 pub fn body(&mut self, body: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.body = body; }
22483 }
22484 #[derive(Debug)]
22486 pub struct TypeAlias<'gc> {
22487 is_changed: bool,
22488 pub(super) inner: super::TypeAlias<'gc>,
22489 }
22490 impl<'gc> TypeAlias<'gc> {
22491 pub fn from_node(node: &'gc super::TypeAlias<'gc>) -> Self {
22493 Self {
22494 is_changed: false,
22495 inner: super::TypeAlias {
22496 metadata: node.metadata.duplicate(),
22497 id: node.id.duplicate(),
22498 type_parameters: node.type_parameters.duplicate(),
22499 right: node.right.duplicate(),
22500 },
22501 }
22502 }
22503 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22506 if self.is_changed {
22507 TransformResult::Changed(self.build_forced(gc))
22508 } else {
22509 TransformResult::Unchanged
22510 }
22511 }
22512 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22514 gc.alloc(Node::TypeAlias(self.inner))
22515 }
22516 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22518 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22520 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
22522 }
22523 #[derive(Debug)]
22525 pub struct OpaqueType<'gc> {
22526 is_changed: bool,
22527 pub(super) inner: super::OpaqueType<'gc>,
22528 }
22529 impl<'gc> OpaqueType<'gc> {
22530 pub fn from_node(node: &'gc super::OpaqueType<'gc>) -> Self {
22532 Self {
22533 is_changed: false,
22534 inner: super::OpaqueType {
22535 metadata: node.metadata.duplicate(),
22536 id: node.id.duplicate(),
22537 type_parameters: node.type_parameters.duplicate(),
22538 impltype: node.impltype.duplicate(),
22539 lower_bound: node.lower_bound.duplicate(),
22540 upper_bound: node.upper_bound.duplicate(),
22541 supertype: node.supertype.duplicate(),
22542 },
22543 }
22544 }
22545 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22548 if self.is_changed {
22549 TransformResult::Changed(self.build_forced(gc))
22550 } else {
22551 TransformResult::Unchanged
22552 }
22553 }
22554 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22556 gc.alloc(Node::OpaqueType(self.inner))
22557 }
22558 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22560 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22562 pub fn impltype(&mut self, impltype: &'gc Node<'gc>) { self.is_changed = true; self.inner.impltype = impltype; }
22564 pub fn lower_bound(&mut self, lower_bound: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.lower_bound = lower_bound; }
22566 pub fn upper_bound(&mut self, upper_bound: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.upper_bound = upper_bound; }
22568 pub fn supertype(&mut self, supertype: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.supertype = supertype; }
22570 }
22571 #[derive(Debug)]
22573 pub struct InterfaceDeclaration<'gc> {
22574 is_changed: bool,
22575 pub(super) inner: super::InterfaceDeclaration<'gc>,
22576 }
22577 impl<'gc> InterfaceDeclaration<'gc> {
22578 pub fn from_node(node: &'gc super::InterfaceDeclaration<'gc>) -> Self {
22580 Self {
22581 is_changed: false,
22582 inner: super::InterfaceDeclaration {
22583 metadata: node.metadata.duplicate(),
22584 id: node.id.duplicate(),
22585 type_parameters: node.type_parameters.duplicate(),
22586 extends: node.extends.duplicate(),
22587 body: node.body.duplicate(),
22588 },
22589 }
22590 }
22591 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22594 if self.is_changed {
22595 TransformResult::Changed(self.build_forced(gc))
22596 } else {
22597 TransformResult::Unchanged
22598 }
22599 }
22600 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22602 gc.alloc(Node::InterfaceDeclaration(self.inner))
22603 }
22604 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22606 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22608 pub fn extends(&mut self, extends: NodeList<'gc>) { self.is_changed = true; self.inner.extends = extends; }
22610 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
22612 }
22613 #[derive(Debug)]
22615 pub struct DeclareTypeAlias<'gc> {
22616 is_changed: bool,
22617 pub(super) inner: super::DeclareTypeAlias<'gc>,
22618 }
22619 impl<'gc> DeclareTypeAlias<'gc> {
22620 pub fn from_node(node: &'gc super::DeclareTypeAlias<'gc>) -> Self {
22622 Self {
22623 is_changed: false,
22624 inner: super::DeclareTypeAlias {
22625 metadata: node.metadata.duplicate(),
22626 id: node.id.duplicate(),
22627 type_parameters: node.type_parameters.duplicate(),
22628 right: node.right.duplicate(),
22629 },
22630 }
22631 }
22632 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22635 if self.is_changed {
22636 TransformResult::Changed(self.build_forced(gc))
22637 } else {
22638 TransformResult::Unchanged
22639 }
22640 }
22641 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22643 gc.alloc(Node::DeclareTypeAlias(self.inner))
22644 }
22645 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22647 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22649 pub fn right(&mut self, right: &'gc Node<'gc>) { self.is_changed = true; self.inner.right = right; }
22651 }
22652 #[derive(Debug)]
22654 pub struct DeclareOpaqueType<'gc> {
22655 is_changed: bool,
22656 pub(super) inner: super::DeclareOpaqueType<'gc>,
22657 }
22658 impl<'gc> DeclareOpaqueType<'gc> {
22659 pub fn from_node(node: &'gc super::DeclareOpaqueType<'gc>) -> Self {
22661 Self {
22662 is_changed: false,
22663 inner: super::DeclareOpaqueType {
22664 metadata: node.metadata.duplicate(),
22665 id: node.id.duplicate(),
22666 type_parameters: node.type_parameters.duplicate(),
22667 impltype: node.impltype.duplicate(),
22668 lower_bound: node.lower_bound.duplicate(),
22669 upper_bound: node.upper_bound.duplicate(),
22670 supertype: node.supertype.duplicate(),
22671 },
22672 }
22673 }
22674 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22677 if self.is_changed {
22678 TransformResult::Changed(self.build_forced(gc))
22679 } else {
22680 TransformResult::Unchanged
22681 }
22682 }
22683 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22685 gc.alloc(Node::DeclareOpaqueType(self.inner))
22686 }
22687 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22689 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22691 pub fn impltype(&mut self, impltype: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.impltype = impltype; }
22693 pub fn lower_bound(&mut self, lower_bound: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.lower_bound = lower_bound; }
22695 pub fn upper_bound(&mut self, upper_bound: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.upper_bound = upper_bound; }
22697 pub fn supertype(&mut self, supertype: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.supertype = supertype; }
22699 }
22700 #[derive(Debug)]
22702 pub struct DeclareInterface<'gc> {
22703 is_changed: bool,
22704 pub(super) inner: super::DeclareInterface<'gc>,
22705 }
22706 impl<'gc> DeclareInterface<'gc> {
22707 pub fn from_node(node: &'gc super::DeclareInterface<'gc>) -> Self {
22709 Self {
22710 is_changed: false,
22711 inner: super::DeclareInterface {
22712 metadata: node.metadata.duplicate(),
22713 id: node.id.duplicate(),
22714 type_parameters: node.type_parameters.duplicate(),
22715 extends: node.extends.duplicate(),
22716 body: node.body.duplicate(),
22717 },
22718 }
22719 }
22720 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22723 if self.is_changed {
22724 TransformResult::Changed(self.build_forced(gc))
22725 } else {
22726 TransformResult::Unchanged
22727 }
22728 }
22729 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22731 gc.alloc(Node::DeclareInterface(self.inner))
22732 }
22733 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22735 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22737 pub fn extends(&mut self, extends: NodeList<'gc>) { self.is_changed = true; self.inner.extends = extends; }
22739 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
22741 }
22742 #[derive(Debug)]
22744 pub struct DeclareClass<'gc> {
22745 is_changed: bool,
22746 pub(super) inner: super::DeclareClass<'gc>,
22747 }
22748 impl<'gc> DeclareClass<'gc> {
22749 pub fn from_node(node: &'gc super::DeclareClass<'gc>) -> Self {
22751 Self {
22752 is_changed: false,
22753 inner: super::DeclareClass {
22754 metadata: node.metadata.duplicate(),
22755 id: node.id.duplicate(),
22756 type_parameters: node.type_parameters.duplicate(),
22757 extends: node.extends.duplicate(),
22758 implements: node.implements.duplicate(),
22759 mixins: node.mixins.duplicate(),
22760 body: node.body.duplicate(),
22761 },
22762 }
22763 }
22764 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22767 if self.is_changed {
22768 TransformResult::Changed(self.build_forced(gc))
22769 } else {
22770 TransformResult::Unchanged
22771 }
22772 }
22773 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22775 gc.alloc(Node::DeclareClass(self.inner))
22776 }
22777 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22779 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22781 pub fn extends(&mut self, extends: NodeList<'gc>) { self.is_changed = true; self.inner.extends = extends; }
22783 pub fn implements(&mut self, implements: NodeList<'gc>) { self.is_changed = true; self.inner.implements = implements; }
22785 pub fn mixins(&mut self, mixins: NodeList<'gc>) { self.is_changed = true; self.inner.mixins = mixins; }
22787 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
22789 }
22790 #[derive(Debug)]
22792 pub struct DeclareFunction<'gc> {
22793 is_changed: bool,
22794 pub(super) inner: super::DeclareFunction<'gc>,
22795 }
22796 impl<'gc> DeclareFunction<'gc> {
22797 pub fn from_node(node: &'gc super::DeclareFunction<'gc>) -> Self {
22799 Self {
22800 is_changed: false,
22801 inner: super::DeclareFunction {
22802 metadata: node.metadata.duplicate(),
22803 id: node.id.duplicate(),
22804 predicate: node.predicate.duplicate(),
22805 },
22806 }
22807 }
22808 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22811 if self.is_changed {
22812 TransformResult::Changed(self.build_forced(gc))
22813 } else {
22814 TransformResult::Unchanged
22815 }
22816 }
22817 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22819 gc.alloc(Node::DeclareFunction(self.inner))
22820 }
22821 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22823 pub fn predicate(&mut self, predicate: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.predicate = predicate; }
22825 }
22826 #[derive(Debug)]
22828 pub struct DeclareHook<'gc> {
22829 is_changed: bool,
22830 pub(super) inner: super::DeclareHook<'gc>,
22831 }
22832 impl<'gc> DeclareHook<'gc> {
22833 pub fn from_node(node: &'gc super::DeclareHook<'gc>) -> Self {
22835 Self {
22836 is_changed: false,
22837 inner: super::DeclareHook {
22838 metadata: node.metadata.duplicate(),
22839 id: node.id.duplicate(),
22840 },
22841 }
22842 }
22843 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22846 if self.is_changed {
22847 TransformResult::Changed(self.build_forced(gc))
22848 } else {
22849 TransformResult::Unchanged
22850 }
22851 }
22852 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22854 gc.alloc(Node::DeclareHook(self.inner))
22855 }
22856 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22858 }
22859 #[derive(Debug)]
22861 pub struct DeclareComponent<'gc> {
22862 is_changed: bool,
22863 pub(super) inner: super::DeclareComponent<'gc>,
22864 }
22865 impl<'gc> DeclareComponent<'gc> {
22866 pub fn from_node(node: &'gc super::DeclareComponent<'gc>) -> Self {
22868 Self {
22869 is_changed: false,
22870 inner: super::DeclareComponent {
22871 metadata: node.metadata.duplicate(),
22872 id: node.id.duplicate(),
22873 params: node.params.duplicate(),
22874 rest: node.rest.duplicate(),
22875 type_parameters: node.type_parameters.duplicate(),
22876 renders_type: node.renders_type.duplicate(),
22877 },
22878 }
22879 }
22880 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22883 if self.is_changed {
22884 TransformResult::Changed(self.build_forced(gc))
22885 } else {
22886 TransformResult::Unchanged
22887 }
22888 }
22889 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22891 gc.alloc(Node::DeclareComponent(self.inner))
22892 }
22893 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22895 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
22897 pub fn rest(&mut self, rest: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.rest = rest; }
22899 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
22901 pub fn renders_type(&mut self, renders_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.renders_type = renders_type; }
22903 }
22904 #[derive(Debug)]
22906 pub struct DeclareVariable<'gc> {
22907 is_changed: bool,
22908 pub(super) inner: super::DeclareVariable<'gc>,
22909 }
22910 impl<'gc> DeclareVariable<'gc> {
22911 pub fn from_node(node: &'gc super::DeclareVariable<'gc>) -> Self {
22913 Self {
22914 is_changed: false,
22915 inner: super::DeclareVariable {
22916 metadata: node.metadata.duplicate(),
22917 id: node.id.duplicate(),
22918 kind: Cell::new(node.kind.get()),
22919 },
22920 }
22921 }
22922 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22925 if self.is_changed {
22926 TransformResult::Changed(self.build_forced(gc))
22927 } else {
22928 TransformResult::Unchanged
22929 }
22930 }
22931 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22933 gc.alloc(Node::DeclareVariable(self.inner))
22934 }
22935 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22937 }
22938 #[derive(Debug)]
22940 pub struct DeclareEnum<'gc> {
22941 is_changed: bool,
22942 pub(super) inner: super::DeclareEnum<'gc>,
22943 }
22944 impl<'gc> DeclareEnum<'gc> {
22945 pub fn from_node(node: &'gc super::DeclareEnum<'gc>) -> Self {
22947 Self {
22948 is_changed: false,
22949 inner: super::DeclareEnum {
22950 metadata: node.metadata.duplicate(),
22951 id: node.id.duplicate(),
22952 body: node.body.duplicate(),
22953 },
22954 }
22955 }
22956 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22959 if self.is_changed {
22960 TransformResult::Changed(self.build_forced(gc))
22961 } else {
22962 TransformResult::Unchanged
22963 }
22964 }
22965 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
22967 gc.alloc(Node::DeclareEnum(self.inner))
22968 }
22969 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
22971 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
22973 }
22974 #[derive(Debug)]
22976 pub struct DeclareExportDeclaration<'gc> {
22977 is_changed: bool,
22978 pub(super) inner: super::DeclareExportDeclaration<'gc>,
22979 }
22980 impl<'gc> DeclareExportDeclaration<'gc> {
22981 pub fn from_node(node: &'gc super::DeclareExportDeclaration<'gc>) -> Self {
22983 Self {
22984 is_changed: false,
22985 inner: super::DeclareExportDeclaration {
22986 metadata: node.metadata.duplicate(),
22987 declaration: node.declaration.duplicate(),
22988 specifiers: node.specifiers.duplicate(),
22989 source: node.source.duplicate(),
22990 default: Cell::new(node.default.get()),
22991 },
22992 }
22993 }
22994 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
22997 if self.is_changed {
22998 TransformResult::Changed(self.build_forced(gc))
22999 } else {
23000 TransformResult::Unchanged
23001 }
23002 }
23003 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23005 gc.alloc(Node::DeclareExportDeclaration(self.inner))
23006 }
23007 pub fn declaration(&mut self, declaration: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.declaration = declaration; }
23009 pub fn specifiers(&mut self, specifiers: NodeList<'gc>) { self.is_changed = true; self.inner.specifiers = specifiers; }
23011 pub fn source(&mut self, source: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.source = source; }
23013 }
23014 #[derive(Debug)]
23016 pub struct DeclareExportAllDeclaration<'gc> {
23017 is_changed: bool,
23018 pub(super) inner: super::DeclareExportAllDeclaration<'gc>,
23019 }
23020 impl<'gc> DeclareExportAllDeclaration<'gc> {
23021 pub fn from_node(node: &'gc super::DeclareExportAllDeclaration<'gc>) -> Self {
23023 Self {
23024 is_changed: false,
23025 inner: super::DeclareExportAllDeclaration {
23026 metadata: node.metadata.duplicate(),
23027 source: node.source.duplicate(),
23028 },
23029 }
23030 }
23031 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23034 if self.is_changed {
23035 TransformResult::Changed(self.build_forced(gc))
23036 } else {
23037 TransformResult::Unchanged
23038 }
23039 }
23040 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23042 gc.alloc(Node::DeclareExportAllDeclaration(self.inner))
23043 }
23044 pub fn source(&mut self, source: &'gc Node<'gc>) { self.is_changed = true; self.inner.source = source; }
23046 }
23047 #[derive(Debug)]
23049 pub struct DeclareModule<'gc> {
23050 is_changed: bool,
23051 pub(super) inner: super::DeclareModule<'gc>,
23052 }
23053 impl<'gc> DeclareModule<'gc> {
23054 pub fn from_node(node: &'gc super::DeclareModule<'gc>) -> Self {
23056 Self {
23057 is_changed: false,
23058 inner: super::DeclareModule {
23059 metadata: node.metadata.duplicate(),
23060 id: node.id.duplicate(),
23061 body: node.body.duplicate(),
23062 },
23063 }
23064 }
23065 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23068 if self.is_changed {
23069 TransformResult::Changed(self.build_forced(gc))
23070 } else {
23071 TransformResult::Unchanged
23072 }
23073 }
23074 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23076 gc.alloc(Node::DeclareModule(self.inner))
23077 }
23078 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
23080 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
23082 }
23083 #[derive(Debug)]
23085 pub struct DeclareNamespace<'gc> {
23086 is_changed: bool,
23087 pub(super) inner: super::DeclareNamespace<'gc>,
23088 }
23089 impl<'gc> DeclareNamespace<'gc> {
23090 pub fn from_node(node: &'gc super::DeclareNamespace<'gc>) -> Self {
23092 Self {
23093 is_changed: false,
23094 inner: super::DeclareNamespace {
23095 metadata: node.metadata.duplicate(),
23096 id: node.id.duplicate(),
23097 body: node.body.duplicate(),
23098 },
23099 }
23100 }
23101 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23104 if self.is_changed {
23105 TransformResult::Changed(self.build_forced(gc))
23106 } else {
23107 TransformResult::Unchanged
23108 }
23109 }
23110 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23112 gc.alloc(Node::DeclareNamespace(self.inner))
23113 }
23114 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
23116 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
23118 }
23119 #[derive(Debug)]
23121 pub struct DeclareModuleExports<'gc> {
23122 is_changed: bool,
23123 pub(super) inner: super::DeclareModuleExports<'gc>,
23124 }
23125 impl<'gc> DeclareModuleExports<'gc> {
23126 pub fn from_node(node: &'gc super::DeclareModuleExports<'gc>) -> Self {
23128 Self {
23129 is_changed: false,
23130 inner: super::DeclareModuleExports {
23131 metadata: node.metadata.duplicate(),
23132 type_annotation: node.type_annotation.duplicate(),
23133 },
23134 }
23135 }
23136 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23139 if self.is_changed {
23140 TransformResult::Changed(self.build_forced(gc))
23141 } else {
23142 TransformResult::Unchanged
23143 }
23144 }
23145 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23147 gc.alloc(Node::DeclareModuleExports(self.inner))
23148 }
23149 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
23151 }
23152 #[derive(Debug)]
23154 pub struct InterfaceExtends<'gc> {
23155 is_changed: bool,
23156 pub(super) inner: super::InterfaceExtends<'gc>,
23157 }
23158 impl<'gc> InterfaceExtends<'gc> {
23159 pub fn from_node(node: &'gc super::InterfaceExtends<'gc>) -> Self {
23161 Self {
23162 is_changed: false,
23163 inner: super::InterfaceExtends {
23164 metadata: node.metadata.duplicate(),
23165 id: node.id.duplicate(),
23166 type_parameters: node.type_parameters.duplicate(),
23167 },
23168 }
23169 }
23170 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23173 if self.is_changed {
23174 TransformResult::Changed(self.build_forced(gc))
23175 } else {
23176 TransformResult::Unchanged
23177 }
23178 }
23179 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23181 gc.alloc(Node::InterfaceExtends(self.inner))
23182 }
23183 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
23185 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
23187 }
23188 #[derive(Debug)]
23190 pub struct ClassImplements<'gc> {
23191 is_changed: bool,
23192 pub(super) inner: super::ClassImplements<'gc>,
23193 }
23194 impl<'gc> ClassImplements<'gc> {
23195 pub fn from_node(node: &'gc super::ClassImplements<'gc>) -> Self {
23197 Self {
23198 is_changed: false,
23199 inner: super::ClassImplements {
23200 metadata: node.metadata.duplicate(),
23201 id: node.id.duplicate(),
23202 type_parameters: node.type_parameters.duplicate(),
23203 },
23204 }
23205 }
23206 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23209 if self.is_changed {
23210 TransformResult::Changed(self.build_forced(gc))
23211 } else {
23212 TransformResult::Unchanged
23213 }
23214 }
23215 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23217 gc.alloc(Node::ClassImplements(self.inner))
23218 }
23219 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
23221 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
23223 }
23224 #[derive(Debug)]
23226 pub struct TypeAnnotation<'gc> {
23227 is_changed: bool,
23228 pub(super) inner: super::TypeAnnotation<'gc>,
23229 }
23230 impl<'gc> TypeAnnotation<'gc> {
23231 pub fn from_node(node: &'gc super::TypeAnnotation<'gc>) -> Self {
23233 Self {
23234 is_changed: false,
23235 inner: super::TypeAnnotation {
23236 metadata: node.metadata.duplicate(),
23237 type_annotation: node.type_annotation.duplicate(),
23238 },
23239 }
23240 }
23241 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23244 if self.is_changed {
23245 TransformResult::Changed(self.build_forced(gc))
23246 } else {
23247 TransformResult::Unchanged
23248 }
23249 }
23250 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23252 gc.alloc(Node::TypeAnnotation(self.inner))
23253 }
23254 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
23256 }
23257 #[derive(Debug)]
23259 pub struct ObjectTypeAnnotation<'gc> {
23260 is_changed: bool,
23261 pub(super) inner: super::ObjectTypeAnnotation<'gc>,
23262 }
23263 impl<'gc> ObjectTypeAnnotation<'gc> {
23264 pub fn from_node(node: &'gc super::ObjectTypeAnnotation<'gc>) -> Self {
23266 Self {
23267 is_changed: false,
23268 inner: super::ObjectTypeAnnotation {
23269 metadata: node.metadata.duplicate(),
23270 properties: node.properties.duplicate(),
23271 indexers: node.indexers.duplicate(),
23272 call_properties: node.call_properties.duplicate(),
23273 internal_slots: node.internal_slots.duplicate(),
23274 inexact: Cell::new(node.inexact.get()),
23275 exact: Cell::new(node.exact.get()),
23276 },
23277 }
23278 }
23279 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23282 if self.is_changed {
23283 TransformResult::Changed(self.build_forced(gc))
23284 } else {
23285 TransformResult::Unchanged
23286 }
23287 }
23288 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23290 gc.alloc(Node::ObjectTypeAnnotation(self.inner))
23291 }
23292 pub fn properties(&mut self, properties: NodeList<'gc>) { self.is_changed = true; self.inner.properties = properties; }
23294 pub fn indexers(&mut self, indexers: NodeList<'gc>) { self.is_changed = true; self.inner.indexers = indexers; }
23296 pub fn call_properties(&mut self, call_properties: NodeList<'gc>) { self.is_changed = true; self.inner.call_properties = call_properties; }
23298 pub fn internal_slots(&mut self, internal_slots: NodeList<'gc>) { self.is_changed = true; self.inner.internal_slots = internal_slots; }
23300 }
23301 #[derive(Debug)]
23303 pub struct ObjectTypeProperty<'gc> {
23304 is_changed: bool,
23305 pub(super) inner: super::ObjectTypeProperty<'gc>,
23306 }
23307 impl<'gc> ObjectTypeProperty<'gc> {
23308 pub fn from_node(node: &'gc super::ObjectTypeProperty<'gc>) -> Self {
23310 Self {
23311 is_changed: false,
23312 inner: super::ObjectTypeProperty {
23313 metadata: node.metadata.duplicate(),
23314 key: node.key.duplicate(),
23315 value: node.value.duplicate(),
23316 method: Cell::new(node.method.get()),
23317 optional: Cell::new(node.optional.get()),
23318 r#static: Cell::new(node.r#static.get()),
23319 proto: Cell::new(node.proto.get()),
23320 variance: node.variance.duplicate(),
23321 kind: Cell::new(node.kind.get()),
23322 },
23323 }
23324 }
23325 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23328 if self.is_changed {
23329 TransformResult::Changed(self.build_forced(gc))
23330 } else {
23331 TransformResult::Unchanged
23332 }
23333 }
23334 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23336 gc.alloc(Node::ObjectTypeProperty(self.inner))
23337 }
23338 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
23340 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
23342 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
23344 }
23345 #[derive(Debug)]
23347 pub struct ObjectTypeSpreadProperty<'gc> {
23348 is_changed: bool,
23349 pub(super) inner: super::ObjectTypeSpreadProperty<'gc>,
23350 }
23351 impl<'gc> ObjectTypeSpreadProperty<'gc> {
23352 pub fn from_node(node: &'gc super::ObjectTypeSpreadProperty<'gc>) -> Self {
23354 Self {
23355 is_changed: false,
23356 inner: super::ObjectTypeSpreadProperty {
23357 metadata: node.metadata.duplicate(),
23358 argument: node.argument.duplicate(),
23359 },
23360 }
23361 }
23362 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23365 if self.is_changed {
23366 TransformResult::Changed(self.build_forced(gc))
23367 } else {
23368 TransformResult::Unchanged
23369 }
23370 }
23371 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23373 gc.alloc(Node::ObjectTypeSpreadProperty(self.inner))
23374 }
23375 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
23377 }
23378 #[derive(Debug)]
23380 pub struct ObjectTypeInternalSlot<'gc> {
23381 is_changed: bool,
23382 pub(super) inner: super::ObjectTypeInternalSlot<'gc>,
23383 }
23384 impl<'gc> ObjectTypeInternalSlot<'gc> {
23385 pub fn from_node(node: &'gc super::ObjectTypeInternalSlot<'gc>) -> Self {
23387 Self {
23388 is_changed: false,
23389 inner: super::ObjectTypeInternalSlot {
23390 metadata: node.metadata.duplicate(),
23391 id: node.id.duplicate(),
23392 value: node.value.duplicate(),
23393 optional: Cell::new(node.optional.get()),
23394 r#static: Cell::new(node.r#static.get()),
23395 method: Cell::new(node.method.get()),
23396 },
23397 }
23398 }
23399 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23402 if self.is_changed {
23403 TransformResult::Changed(self.build_forced(gc))
23404 } else {
23405 TransformResult::Unchanged
23406 }
23407 }
23408 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23410 gc.alloc(Node::ObjectTypeInternalSlot(self.inner))
23411 }
23412 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
23414 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
23416 }
23417 #[derive(Debug)]
23419 pub struct ObjectTypeCallProperty<'gc> {
23420 is_changed: bool,
23421 pub(super) inner: super::ObjectTypeCallProperty<'gc>,
23422 }
23423 impl<'gc> ObjectTypeCallProperty<'gc> {
23424 pub fn from_node(node: &'gc super::ObjectTypeCallProperty<'gc>) -> Self {
23426 Self {
23427 is_changed: false,
23428 inner: super::ObjectTypeCallProperty {
23429 metadata: node.metadata.duplicate(),
23430 value: node.value.duplicate(),
23431 r#static: Cell::new(node.r#static.get()),
23432 },
23433 }
23434 }
23435 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23438 if self.is_changed {
23439 TransformResult::Changed(self.build_forced(gc))
23440 } else {
23441 TransformResult::Unchanged
23442 }
23443 }
23444 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23446 gc.alloc(Node::ObjectTypeCallProperty(self.inner))
23447 }
23448 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
23450 }
23451 #[derive(Debug)]
23453 pub struct ObjectTypeIndexer<'gc> {
23454 is_changed: bool,
23455 pub(super) inner: super::ObjectTypeIndexer<'gc>,
23456 }
23457 impl<'gc> ObjectTypeIndexer<'gc> {
23458 pub fn from_node(node: &'gc super::ObjectTypeIndexer<'gc>) -> Self {
23460 Self {
23461 is_changed: false,
23462 inner: super::ObjectTypeIndexer {
23463 metadata: node.metadata.duplicate(),
23464 id: node.id.duplicate(),
23465 key: node.key.duplicate(),
23466 value: node.value.duplicate(),
23467 r#static: Cell::new(node.r#static.get()),
23468 variance: node.variance.duplicate(),
23469 },
23470 }
23471 }
23472 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23475 if self.is_changed {
23476 TransformResult::Changed(self.build_forced(gc))
23477 } else {
23478 TransformResult::Unchanged
23479 }
23480 }
23481 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23483 gc.alloc(Node::ObjectTypeIndexer(self.inner))
23484 }
23485 pub fn id(&mut self, id: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.id = id; }
23487 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
23489 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
23491 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
23493 }
23494 #[derive(Debug)]
23496 pub struct ObjectTypeMappedTypeProperty<'gc> {
23497 is_changed: bool,
23498 pub(super) inner: super::ObjectTypeMappedTypeProperty<'gc>,
23499 }
23500 impl<'gc> ObjectTypeMappedTypeProperty<'gc> {
23501 pub fn from_node(node: &'gc super::ObjectTypeMappedTypeProperty<'gc>) -> Self {
23503 Self {
23504 is_changed: false,
23505 inner: super::ObjectTypeMappedTypeProperty {
23506 metadata: node.metadata.duplicate(),
23507 key_tparam: node.key_tparam.duplicate(),
23508 prop_type: node.prop_type.duplicate(),
23509 source_type: node.source_type.duplicate(),
23510 variance: node.variance.duplicate(),
23511 optional: Cell::new(node.optional.get()),
23512 },
23513 }
23514 }
23515 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23518 if self.is_changed {
23519 TransformResult::Changed(self.build_forced(gc))
23520 } else {
23521 TransformResult::Unchanged
23522 }
23523 }
23524 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23526 gc.alloc(Node::ObjectTypeMappedTypeProperty(self.inner))
23527 }
23528 pub fn key_tparam(&mut self, key_tparam: &'gc Node<'gc>) { self.is_changed = true; self.inner.key_tparam = key_tparam; }
23530 pub fn prop_type(&mut self, prop_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.prop_type = prop_type; }
23532 pub fn source_type(&mut self, source_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.source_type = source_type; }
23534 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
23536 }
23537 #[derive(Debug)]
23539 pub struct Variance<'gc> {
23540 is_changed: bool,
23541 pub(super) inner: super::Variance<'gc>,
23542 }
23543 impl<'gc> Variance<'gc> {
23544 pub fn from_node(node: &'gc super::Variance<'gc>) -> Self {
23546 Self {
23547 is_changed: false,
23548 inner: super::Variance {
23549 metadata: node.metadata.duplicate(),
23550 kind: Cell::new(node.kind.get()),
23551 },
23552 }
23553 }
23554 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23557 if self.is_changed {
23558 TransformResult::Changed(self.build_forced(gc))
23559 } else {
23560 TransformResult::Unchanged
23561 }
23562 }
23563 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23565 gc.alloc(Node::Variance(self.inner))
23566 }
23567 }
23568 #[derive(Debug)]
23570 pub struct TypeParameterDeclaration<'gc> {
23571 is_changed: bool,
23572 pub(super) inner: super::TypeParameterDeclaration<'gc>,
23573 }
23574 impl<'gc> TypeParameterDeclaration<'gc> {
23575 pub fn from_node(node: &'gc super::TypeParameterDeclaration<'gc>) -> Self {
23577 Self {
23578 is_changed: false,
23579 inner: super::TypeParameterDeclaration {
23580 metadata: node.metadata.duplicate(),
23581 params: node.params.duplicate(),
23582 },
23583 }
23584 }
23585 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23588 if self.is_changed {
23589 TransformResult::Changed(self.build_forced(gc))
23590 } else {
23591 TransformResult::Unchanged
23592 }
23593 }
23594 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23596 gc.alloc(Node::TypeParameterDeclaration(self.inner))
23597 }
23598 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
23600 }
23601 #[derive(Debug)]
23603 pub struct TypeParameter<'gc> {
23604 is_changed: bool,
23605 pub(super) inner: super::TypeParameter<'gc>,
23606 }
23607 impl<'gc> TypeParameter<'gc> {
23608 pub fn from_node(node: &'gc super::TypeParameter<'gc>) -> Self {
23610 Self {
23611 is_changed: false,
23612 inner: super::TypeParameter {
23613 metadata: node.metadata.duplicate(),
23614 name: Cell::new(node.name.get()),
23615 r#const: Cell::new(node.r#const.get()),
23616 bound: node.bound.duplicate(),
23617 variance: node.variance.duplicate(),
23618 default: node.default.duplicate(),
23619 uses_extends_bound: Cell::new(node.uses_extends_bound.get()),
23620 },
23621 }
23622 }
23623 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23626 if self.is_changed {
23627 TransformResult::Changed(self.build_forced(gc))
23628 } else {
23629 TransformResult::Unchanged
23630 }
23631 }
23632 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23634 gc.alloc(Node::TypeParameter(self.inner))
23635 }
23636 pub fn bound(&mut self, bound: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.bound = bound; }
23638 pub fn variance(&mut self, variance: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.variance = variance; }
23640 pub fn default(&mut self, default: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.default = default; }
23642 }
23643 #[derive(Debug)]
23645 pub struct TypeParameterInstantiation<'gc> {
23646 is_changed: bool,
23647 pub(super) inner: super::TypeParameterInstantiation<'gc>,
23648 }
23649 impl<'gc> TypeParameterInstantiation<'gc> {
23650 pub fn from_node(node: &'gc super::TypeParameterInstantiation<'gc>) -> Self {
23652 Self {
23653 is_changed: false,
23654 inner: super::TypeParameterInstantiation {
23655 metadata: node.metadata.duplicate(),
23656 params: node.params.duplicate(),
23657 },
23658 }
23659 }
23660 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23663 if self.is_changed {
23664 TransformResult::Changed(self.build_forced(gc))
23665 } else {
23666 TransformResult::Unchanged
23667 }
23668 }
23669 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23671 gc.alloc(Node::TypeParameterInstantiation(self.inner))
23672 }
23673 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
23675 }
23676 #[derive(Debug)]
23678 pub struct TypeCastExpression<'gc> {
23679 is_changed: bool,
23680 pub(super) inner: super::TypeCastExpression<'gc>,
23681 }
23682 impl<'gc> TypeCastExpression<'gc> {
23683 pub fn from_node(node: &'gc super::TypeCastExpression<'gc>) -> Self {
23685 Self {
23686 is_changed: false,
23687 inner: super::TypeCastExpression {
23688 metadata: node.metadata.duplicate(),
23689 expression: node.expression.duplicate(),
23690 type_annotation: node.type_annotation.duplicate(),
23691 },
23692 }
23693 }
23694 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23697 if self.is_changed {
23698 TransformResult::Changed(self.build_forced(gc))
23699 } else {
23700 TransformResult::Unchanged
23701 }
23702 }
23703 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23705 gc.alloc(Node::TypeCastExpression(self.inner))
23706 }
23707 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
23709 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
23711 }
23712 #[derive(Debug)]
23714 pub struct AsExpression<'gc> {
23715 is_changed: bool,
23716 pub(super) inner: super::AsExpression<'gc>,
23717 }
23718 impl<'gc> AsExpression<'gc> {
23719 pub fn from_node(node: &'gc super::AsExpression<'gc>) -> Self {
23721 Self {
23722 is_changed: false,
23723 inner: super::AsExpression {
23724 metadata: node.metadata.duplicate(),
23725 expression: node.expression.duplicate(),
23726 type_annotation: node.type_annotation.duplicate(),
23727 },
23728 }
23729 }
23730 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23733 if self.is_changed {
23734 TransformResult::Changed(self.build_forced(gc))
23735 } else {
23736 TransformResult::Unchanged
23737 }
23738 }
23739 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23741 gc.alloc(Node::AsExpression(self.inner))
23742 }
23743 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
23745 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
23747 }
23748 #[derive(Debug)]
23750 pub struct AsConstExpression<'gc> {
23751 is_changed: bool,
23752 pub(super) inner: super::AsConstExpression<'gc>,
23753 }
23754 impl<'gc> AsConstExpression<'gc> {
23755 pub fn from_node(node: &'gc super::AsConstExpression<'gc>) -> Self {
23757 Self {
23758 is_changed: false,
23759 inner: super::AsConstExpression {
23760 metadata: node.metadata.duplicate(),
23761 expression: node.expression.duplicate(),
23762 },
23763 }
23764 }
23765 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23768 if self.is_changed {
23769 TransformResult::Changed(self.build_forced(gc))
23770 } else {
23771 TransformResult::Unchanged
23772 }
23773 }
23774 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23776 gc.alloc(Node::AsConstExpression(self.inner))
23777 }
23778 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
23780 }
23781 #[derive(Debug)]
23783 pub struct InferredPredicate<'gc> {
23784 is_changed: bool,
23785 pub(super) inner: super::InferredPredicate<'gc>,
23786 }
23787 impl<'gc> InferredPredicate<'gc> {
23788 pub fn from_node(node: &'gc super::InferredPredicate<'gc>) -> Self {
23790 Self {
23791 is_changed: false,
23792 inner: super::InferredPredicate {
23793 metadata: node.metadata.duplicate(),
23794 },
23795 }
23796 }
23797 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23800 if self.is_changed {
23801 TransformResult::Changed(self.build_forced(gc))
23802 } else {
23803 TransformResult::Unchanged
23804 }
23805 }
23806 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23808 gc.alloc(Node::InferredPredicate(self.inner))
23809 }
23810 }
23811 #[derive(Debug)]
23813 pub struct DeclaredPredicate<'gc> {
23814 is_changed: bool,
23815 pub(super) inner: super::DeclaredPredicate<'gc>,
23816 }
23817 impl<'gc> DeclaredPredicate<'gc> {
23818 pub fn from_node(node: &'gc super::DeclaredPredicate<'gc>) -> Self {
23820 Self {
23821 is_changed: false,
23822 inner: super::DeclaredPredicate {
23823 metadata: node.metadata.duplicate(),
23824 value: node.value.duplicate(),
23825 },
23826 }
23827 }
23828 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23831 if self.is_changed {
23832 TransformResult::Changed(self.build_forced(gc))
23833 } else {
23834 TransformResult::Unchanged
23835 }
23836 }
23837 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23839 gc.alloc(Node::DeclaredPredicate(self.inner))
23840 }
23841 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
23843 }
23844 #[derive(Debug)]
23846 pub struct EnumDeclaration<'gc> {
23847 is_changed: bool,
23848 pub(super) inner: super::EnumDeclaration<'gc>,
23849 }
23850 impl<'gc> EnumDeclaration<'gc> {
23851 pub fn from_node(node: &'gc super::EnumDeclaration<'gc>) -> Self {
23853 Self {
23854 is_changed: false,
23855 inner: super::EnumDeclaration {
23856 metadata: node.metadata.duplicate(),
23857 id: node.id.duplicate(),
23858 body: node.body.duplicate(),
23859 },
23860 }
23861 }
23862 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23865 if self.is_changed {
23866 TransformResult::Changed(self.build_forced(gc))
23867 } else {
23868 TransformResult::Unchanged
23869 }
23870 }
23871 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23873 gc.alloc(Node::EnumDeclaration(self.inner))
23874 }
23875 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
23877 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
23879 }
23880 #[derive(Debug)]
23882 pub struct EnumStringBody<'gc> {
23883 is_changed: bool,
23884 pub(super) inner: super::EnumStringBody<'gc>,
23885 }
23886 impl<'gc> EnumStringBody<'gc> {
23887 pub fn from_node(node: &'gc super::EnumStringBody<'gc>) -> Self {
23889 Self {
23890 is_changed: false,
23891 inner: super::EnumStringBody {
23892 metadata: node.metadata.duplicate(),
23893 members: node.members.duplicate(),
23894 explicit_type: Cell::new(node.explicit_type.get()),
23895 has_unknown_members: Cell::new(node.has_unknown_members.get()),
23896 },
23897 }
23898 }
23899 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23902 if self.is_changed {
23903 TransformResult::Changed(self.build_forced(gc))
23904 } else {
23905 TransformResult::Unchanged
23906 }
23907 }
23908 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23910 gc.alloc(Node::EnumStringBody(self.inner))
23911 }
23912 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
23914 }
23915 #[derive(Debug)]
23917 pub struct EnumNumberBody<'gc> {
23918 is_changed: bool,
23919 pub(super) inner: super::EnumNumberBody<'gc>,
23920 }
23921 impl<'gc> EnumNumberBody<'gc> {
23922 pub fn from_node(node: &'gc super::EnumNumberBody<'gc>) -> Self {
23924 Self {
23925 is_changed: false,
23926 inner: super::EnumNumberBody {
23927 metadata: node.metadata.duplicate(),
23928 members: node.members.duplicate(),
23929 explicit_type: Cell::new(node.explicit_type.get()),
23930 has_unknown_members: Cell::new(node.has_unknown_members.get()),
23931 },
23932 }
23933 }
23934 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23937 if self.is_changed {
23938 TransformResult::Changed(self.build_forced(gc))
23939 } else {
23940 TransformResult::Unchanged
23941 }
23942 }
23943 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23945 gc.alloc(Node::EnumNumberBody(self.inner))
23946 }
23947 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
23949 }
23950 #[derive(Debug)]
23952 pub struct EnumBigIntBody<'gc> {
23953 is_changed: bool,
23954 pub(super) inner: super::EnumBigIntBody<'gc>,
23955 }
23956 impl<'gc> EnumBigIntBody<'gc> {
23957 pub fn from_node(node: &'gc super::EnumBigIntBody<'gc>) -> Self {
23959 Self {
23960 is_changed: false,
23961 inner: super::EnumBigIntBody {
23962 metadata: node.metadata.duplicate(),
23963 members: node.members.duplicate(),
23964 explicit_type: Cell::new(node.explicit_type.get()),
23965 has_unknown_members: Cell::new(node.has_unknown_members.get()),
23966 },
23967 }
23968 }
23969 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
23972 if self.is_changed {
23973 TransformResult::Changed(self.build_forced(gc))
23974 } else {
23975 TransformResult::Unchanged
23976 }
23977 }
23978 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
23980 gc.alloc(Node::EnumBigIntBody(self.inner))
23981 }
23982 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
23984 }
23985 #[derive(Debug)]
23987 pub struct EnumBooleanBody<'gc> {
23988 is_changed: bool,
23989 pub(super) inner: super::EnumBooleanBody<'gc>,
23990 }
23991 impl<'gc> EnumBooleanBody<'gc> {
23992 pub fn from_node(node: &'gc super::EnumBooleanBody<'gc>) -> Self {
23994 Self {
23995 is_changed: false,
23996 inner: super::EnumBooleanBody {
23997 metadata: node.metadata.duplicate(),
23998 members: node.members.duplicate(),
23999 explicit_type: Cell::new(node.explicit_type.get()),
24000 has_unknown_members: Cell::new(node.has_unknown_members.get()),
24001 },
24002 }
24003 }
24004 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24007 if self.is_changed {
24008 TransformResult::Changed(self.build_forced(gc))
24009 } else {
24010 TransformResult::Unchanged
24011 }
24012 }
24013 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24015 gc.alloc(Node::EnumBooleanBody(self.inner))
24016 }
24017 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
24019 }
24020 #[derive(Debug)]
24022 pub struct EnumSymbolBody<'gc> {
24023 is_changed: bool,
24024 pub(super) inner: super::EnumSymbolBody<'gc>,
24025 }
24026 impl<'gc> EnumSymbolBody<'gc> {
24027 pub fn from_node(node: &'gc super::EnumSymbolBody<'gc>) -> Self {
24029 Self {
24030 is_changed: false,
24031 inner: super::EnumSymbolBody {
24032 metadata: node.metadata.duplicate(),
24033 members: node.members.duplicate(),
24034 has_unknown_members: Cell::new(node.has_unknown_members.get()),
24035 },
24036 }
24037 }
24038 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24041 if self.is_changed {
24042 TransformResult::Changed(self.build_forced(gc))
24043 } else {
24044 TransformResult::Unchanged
24045 }
24046 }
24047 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24049 gc.alloc(Node::EnumSymbolBody(self.inner))
24050 }
24051 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
24053 }
24054 #[derive(Debug)]
24056 pub struct EnumDefaultedMember<'gc> {
24057 is_changed: bool,
24058 pub(super) inner: super::EnumDefaultedMember<'gc>,
24059 }
24060 impl<'gc> EnumDefaultedMember<'gc> {
24061 pub fn from_node(node: &'gc super::EnumDefaultedMember<'gc>) -> Self {
24063 Self {
24064 is_changed: false,
24065 inner: super::EnumDefaultedMember {
24066 metadata: node.metadata.duplicate(),
24067 id: node.id.duplicate(),
24068 },
24069 }
24070 }
24071 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24074 if self.is_changed {
24075 TransformResult::Changed(self.build_forced(gc))
24076 } else {
24077 TransformResult::Unchanged
24078 }
24079 }
24080 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24082 gc.alloc(Node::EnumDefaultedMember(self.inner))
24083 }
24084 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24086 }
24087 #[derive(Debug)]
24089 pub struct EnumStringMember<'gc> {
24090 is_changed: bool,
24091 pub(super) inner: super::EnumStringMember<'gc>,
24092 }
24093 impl<'gc> EnumStringMember<'gc> {
24094 pub fn from_node(node: &'gc super::EnumStringMember<'gc>) -> Self {
24096 Self {
24097 is_changed: false,
24098 inner: super::EnumStringMember {
24099 metadata: node.metadata.duplicate(),
24100 id: node.id.duplicate(),
24101 init: node.init.duplicate(),
24102 },
24103 }
24104 }
24105 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24108 if self.is_changed {
24109 TransformResult::Changed(self.build_forced(gc))
24110 } else {
24111 TransformResult::Unchanged
24112 }
24113 }
24114 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24116 gc.alloc(Node::EnumStringMember(self.inner))
24117 }
24118 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24120 pub fn init(&mut self, init: &'gc Node<'gc>) { self.is_changed = true; self.inner.init = init; }
24122 }
24123 #[derive(Debug)]
24125 pub struct EnumNumberMember<'gc> {
24126 is_changed: bool,
24127 pub(super) inner: super::EnumNumberMember<'gc>,
24128 }
24129 impl<'gc> EnumNumberMember<'gc> {
24130 pub fn from_node(node: &'gc super::EnumNumberMember<'gc>) -> Self {
24132 Self {
24133 is_changed: false,
24134 inner: super::EnumNumberMember {
24135 metadata: node.metadata.duplicate(),
24136 id: node.id.duplicate(),
24137 init: node.init.duplicate(),
24138 },
24139 }
24140 }
24141 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24144 if self.is_changed {
24145 TransformResult::Changed(self.build_forced(gc))
24146 } else {
24147 TransformResult::Unchanged
24148 }
24149 }
24150 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24152 gc.alloc(Node::EnumNumberMember(self.inner))
24153 }
24154 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24156 pub fn init(&mut self, init: &'gc Node<'gc>) { self.is_changed = true; self.inner.init = init; }
24158 }
24159 #[derive(Debug)]
24161 pub struct EnumBigIntMember<'gc> {
24162 is_changed: bool,
24163 pub(super) inner: super::EnumBigIntMember<'gc>,
24164 }
24165 impl<'gc> EnumBigIntMember<'gc> {
24166 pub fn from_node(node: &'gc super::EnumBigIntMember<'gc>) -> Self {
24168 Self {
24169 is_changed: false,
24170 inner: super::EnumBigIntMember {
24171 metadata: node.metadata.duplicate(),
24172 id: node.id.duplicate(),
24173 init: node.init.duplicate(),
24174 },
24175 }
24176 }
24177 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24180 if self.is_changed {
24181 TransformResult::Changed(self.build_forced(gc))
24182 } else {
24183 TransformResult::Unchanged
24184 }
24185 }
24186 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24188 gc.alloc(Node::EnumBigIntMember(self.inner))
24189 }
24190 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24192 pub fn init(&mut self, init: &'gc Node<'gc>) { self.is_changed = true; self.inner.init = init; }
24194 }
24195 #[derive(Debug)]
24197 pub struct EnumBooleanMember<'gc> {
24198 is_changed: bool,
24199 pub(super) inner: super::EnumBooleanMember<'gc>,
24200 }
24201 impl<'gc> EnumBooleanMember<'gc> {
24202 pub fn from_node(node: &'gc super::EnumBooleanMember<'gc>) -> Self {
24204 Self {
24205 is_changed: false,
24206 inner: super::EnumBooleanMember {
24207 metadata: node.metadata.duplicate(),
24208 id: node.id.duplicate(),
24209 init: node.init.duplicate(),
24210 },
24211 }
24212 }
24213 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24216 if self.is_changed {
24217 TransformResult::Changed(self.build_forced(gc))
24218 } else {
24219 TransformResult::Unchanged
24220 }
24221 }
24222 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24224 gc.alloc(Node::EnumBooleanMember(self.inner))
24225 }
24226 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24228 pub fn init(&mut self, init: &'gc Node<'gc>) { self.is_changed = true; self.inner.init = init; }
24230 }
24231 #[derive(Debug)]
24233 pub struct ComponentParameter<'gc> {
24234 is_changed: bool,
24235 pub(super) inner: super::ComponentParameter<'gc>,
24236 }
24237 impl<'gc> ComponentParameter<'gc> {
24238 pub fn from_node(node: &'gc super::ComponentParameter<'gc>) -> Self {
24240 Self {
24241 is_changed: false,
24242 inner: super::ComponentParameter {
24243 metadata: node.metadata.duplicate(),
24244 name: node.name.duplicate(),
24245 local: node.local.duplicate(),
24246 shorthand: Cell::new(node.shorthand.get()),
24247 },
24248 }
24249 }
24250 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24253 if self.is_changed {
24254 TransformResult::Changed(self.build_forced(gc))
24255 } else {
24256 TransformResult::Unchanged
24257 }
24258 }
24259 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24261 gc.alloc(Node::ComponentParameter(self.inner))
24262 }
24263 pub fn name(&mut self, name: &'gc Node<'gc>) { self.is_changed = true; self.inner.name = name; }
24265 pub fn local(&mut self, local: &'gc Node<'gc>) { self.is_changed = true; self.inner.local = local; }
24267 }
24268 #[derive(Debug)]
24270 pub struct RecordDeclaration<'gc> {
24271 is_changed: bool,
24272 pub(super) inner: super::RecordDeclaration<'gc>,
24273 }
24274 impl<'gc> RecordDeclaration<'gc> {
24275 pub fn from_node(node: &'gc super::RecordDeclaration<'gc>) -> Self {
24277 Self {
24278 is_changed: false,
24279 inner: super::RecordDeclaration {
24280 metadata: node.metadata.duplicate(),
24281 id: node.id.duplicate(),
24282 type_parameters: node.type_parameters.duplicate(),
24283 implements: node.implements.duplicate(),
24284 body: node.body.duplicate(),
24285 },
24286 }
24287 }
24288 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24291 if self.is_changed {
24292 TransformResult::Changed(self.build_forced(gc))
24293 } else {
24294 TransformResult::Unchanged
24295 }
24296 }
24297 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24299 gc.alloc(Node::RecordDeclaration(self.inner))
24300 }
24301 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24303 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
24305 pub fn implements(&mut self, implements: NodeList<'gc>) { self.is_changed = true; self.inner.implements = implements; }
24307 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
24309 }
24310 #[derive(Debug)]
24312 pub struct RecordDeclarationImplements<'gc> {
24313 is_changed: bool,
24314 pub(super) inner: super::RecordDeclarationImplements<'gc>,
24315 }
24316 impl<'gc> RecordDeclarationImplements<'gc> {
24317 pub fn from_node(node: &'gc super::RecordDeclarationImplements<'gc>) -> Self {
24319 Self {
24320 is_changed: false,
24321 inner: super::RecordDeclarationImplements {
24322 metadata: node.metadata.duplicate(),
24323 id: node.id.duplicate(),
24324 type_arguments: node.type_arguments.duplicate(),
24325 },
24326 }
24327 }
24328 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24331 if self.is_changed {
24332 TransformResult::Changed(self.build_forced(gc))
24333 } else {
24334 TransformResult::Unchanged
24335 }
24336 }
24337 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24339 gc.alloc(Node::RecordDeclarationImplements(self.inner))
24340 }
24341 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
24343 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
24345 }
24346 #[derive(Debug)]
24348 pub struct RecordDeclarationBody<'gc> {
24349 is_changed: bool,
24350 pub(super) inner: super::RecordDeclarationBody<'gc>,
24351 }
24352 impl<'gc> RecordDeclarationBody<'gc> {
24353 pub fn from_node(node: &'gc super::RecordDeclarationBody<'gc>) -> Self {
24355 Self {
24356 is_changed: false,
24357 inner: super::RecordDeclarationBody {
24358 metadata: node.metadata.duplicate(),
24359 elements: node.elements.duplicate(),
24360 },
24361 }
24362 }
24363 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24366 if self.is_changed {
24367 TransformResult::Changed(self.build_forced(gc))
24368 } else {
24369 TransformResult::Unchanged
24370 }
24371 }
24372 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24374 gc.alloc(Node::RecordDeclarationBody(self.inner))
24375 }
24376 pub fn elements(&mut self, elements: NodeList<'gc>) { self.is_changed = true; self.inner.elements = elements; }
24378 }
24379 #[derive(Debug)]
24381 pub struct RecordDeclarationProperty<'gc> {
24382 is_changed: bool,
24383 pub(super) inner: super::RecordDeclarationProperty<'gc>,
24384 }
24385 impl<'gc> RecordDeclarationProperty<'gc> {
24386 pub fn from_node(node: &'gc super::RecordDeclarationProperty<'gc>) -> Self {
24388 Self {
24389 is_changed: false,
24390 inner: super::RecordDeclarationProperty {
24391 metadata: node.metadata.duplicate(),
24392 key: node.key.duplicate(),
24393 type_annotation: node.type_annotation.duplicate(),
24394 default_value: node.default_value.duplicate(),
24395 },
24396 }
24397 }
24398 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24401 if self.is_changed {
24402 TransformResult::Changed(self.build_forced(gc))
24403 } else {
24404 TransformResult::Unchanged
24405 }
24406 }
24407 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24409 gc.alloc(Node::RecordDeclarationProperty(self.inner))
24410 }
24411 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
24413 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
24415 pub fn default_value(&mut self, default_value: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.default_value = default_value; }
24417 }
24418 #[derive(Debug)]
24421 pub struct RecordDeclarationStaticProperty<'gc> {
24422 is_changed: bool,
24423 pub(super) inner: super::RecordDeclarationStaticProperty<'gc>,
24424 }
24425 impl<'gc> RecordDeclarationStaticProperty<'gc> {
24426 pub fn from_node(node: &'gc super::RecordDeclarationStaticProperty<'gc>) -> Self {
24428 Self {
24429 is_changed: false,
24430 inner: super::RecordDeclarationStaticProperty {
24431 metadata: node.metadata.duplicate(),
24432 key: node.key.duplicate(),
24433 type_annotation: node.type_annotation.duplicate(),
24434 value: node.value.duplicate(),
24435 },
24436 }
24437 }
24438 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24441 if self.is_changed {
24442 TransformResult::Changed(self.build_forced(gc))
24443 } else {
24444 TransformResult::Unchanged
24445 }
24446 }
24447 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24449 gc.alloc(Node::RecordDeclarationStaticProperty(self.inner))
24450 }
24451 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
24453 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
24455 pub fn value(&mut self, value: &'gc Node<'gc>) { self.is_changed = true; self.inner.value = value; }
24457 }
24458 #[derive(Debug)]
24460 pub struct RecordExpression<'gc> {
24461 is_changed: bool,
24462 pub(super) inner: super::RecordExpression<'gc>,
24463 }
24464 impl<'gc> RecordExpression<'gc> {
24465 pub fn from_node(node: &'gc super::RecordExpression<'gc>) -> Self {
24467 Self {
24468 is_changed: false,
24469 inner: super::RecordExpression {
24470 metadata: node.metadata.duplicate(),
24471 record_constructor: node.record_constructor.duplicate(),
24472 type_arguments: node.type_arguments.duplicate(),
24473 properties: node.properties.duplicate(),
24474 },
24475 }
24476 }
24477 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24480 if self.is_changed {
24481 TransformResult::Changed(self.build_forced(gc))
24482 } else {
24483 TransformResult::Unchanged
24484 }
24485 }
24486 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24488 gc.alloc(Node::RecordExpression(self.inner))
24489 }
24490 pub fn record_constructor(&mut self, record_constructor: &'gc Node<'gc>) { self.is_changed = true; self.inner.record_constructor = record_constructor; }
24492 pub fn type_arguments(&mut self, type_arguments: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_arguments = type_arguments; }
24494 pub fn properties(&mut self, properties: &'gc Node<'gc>) { self.is_changed = true; self.inner.properties = properties; }
24496 }
24497 #[derive(Debug)]
24499 pub struct RecordExpressionProperties<'gc> {
24500 is_changed: bool,
24501 pub(super) inner: super::RecordExpressionProperties<'gc>,
24502 }
24503 impl<'gc> RecordExpressionProperties<'gc> {
24504 pub fn from_node(node: &'gc super::RecordExpressionProperties<'gc>) -> Self {
24506 Self {
24507 is_changed: false,
24508 inner: super::RecordExpressionProperties {
24509 metadata: node.metadata.duplicate(),
24510 properties: node.properties.duplicate(),
24511 },
24512 }
24513 }
24514 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24517 if self.is_changed {
24518 TransformResult::Changed(self.build_forced(gc))
24519 } else {
24520 TransformResult::Unchanged
24521 }
24522 }
24523 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24525 gc.alloc(Node::RecordExpressionProperties(self.inner))
24526 }
24527 pub fn properties(&mut self, properties: NodeList<'gc>) { self.is_changed = true; self.inner.properties = properties; }
24529 }
24530 #[derive(Debug)]
24532 pub struct TSTypeAnnotation<'gc> {
24533 is_changed: bool,
24534 pub(super) inner: super::TSTypeAnnotation<'gc>,
24535 }
24536 impl<'gc> TSTypeAnnotation<'gc> {
24537 pub fn from_node(node: &'gc super::TSTypeAnnotation<'gc>) -> Self {
24539 Self {
24540 is_changed: false,
24541 inner: super::TSTypeAnnotation {
24542 metadata: node.metadata.duplicate(),
24543 type_annotation: node.type_annotation.duplicate(),
24544 },
24545 }
24546 }
24547 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24550 if self.is_changed {
24551 TransformResult::Changed(self.build_forced(gc))
24552 } else {
24553 TransformResult::Unchanged
24554 }
24555 }
24556 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24558 gc.alloc(Node::TSTypeAnnotation(self.inner))
24559 }
24560 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
24562 }
24563 #[derive(Debug)]
24565 pub struct TSAnyKeyword<'gc> {
24566 is_changed: bool,
24567 pub(super) inner: super::TSAnyKeyword<'gc>,
24568 }
24569 impl<'gc> TSAnyKeyword<'gc> {
24570 pub fn from_node(node: &'gc super::TSAnyKeyword<'gc>) -> Self {
24572 Self {
24573 is_changed: false,
24574 inner: super::TSAnyKeyword {
24575 metadata: node.metadata.duplicate(),
24576 },
24577 }
24578 }
24579 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24582 if self.is_changed {
24583 TransformResult::Changed(self.build_forced(gc))
24584 } else {
24585 TransformResult::Unchanged
24586 }
24587 }
24588 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24590 gc.alloc(Node::TSAnyKeyword(self.inner))
24591 }
24592 }
24593 #[derive(Debug)]
24595 pub struct TSNumberKeyword<'gc> {
24596 is_changed: bool,
24597 pub(super) inner: super::TSNumberKeyword<'gc>,
24598 }
24599 impl<'gc> TSNumberKeyword<'gc> {
24600 pub fn from_node(node: &'gc super::TSNumberKeyword<'gc>) -> Self {
24602 Self {
24603 is_changed: false,
24604 inner: super::TSNumberKeyword {
24605 metadata: node.metadata.duplicate(),
24606 },
24607 }
24608 }
24609 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24612 if self.is_changed {
24613 TransformResult::Changed(self.build_forced(gc))
24614 } else {
24615 TransformResult::Unchanged
24616 }
24617 }
24618 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24620 gc.alloc(Node::TSNumberKeyword(self.inner))
24621 }
24622 }
24623 #[derive(Debug)]
24625 pub struct TSBooleanKeyword<'gc> {
24626 is_changed: bool,
24627 pub(super) inner: super::TSBooleanKeyword<'gc>,
24628 }
24629 impl<'gc> TSBooleanKeyword<'gc> {
24630 pub fn from_node(node: &'gc super::TSBooleanKeyword<'gc>) -> Self {
24632 Self {
24633 is_changed: false,
24634 inner: super::TSBooleanKeyword {
24635 metadata: node.metadata.duplicate(),
24636 },
24637 }
24638 }
24639 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24642 if self.is_changed {
24643 TransformResult::Changed(self.build_forced(gc))
24644 } else {
24645 TransformResult::Unchanged
24646 }
24647 }
24648 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24650 gc.alloc(Node::TSBooleanKeyword(self.inner))
24651 }
24652 }
24653 #[derive(Debug)]
24655 pub struct TSStringKeyword<'gc> {
24656 is_changed: bool,
24657 pub(super) inner: super::TSStringKeyword<'gc>,
24658 }
24659 impl<'gc> TSStringKeyword<'gc> {
24660 pub fn from_node(node: &'gc super::TSStringKeyword<'gc>) -> Self {
24662 Self {
24663 is_changed: false,
24664 inner: super::TSStringKeyword {
24665 metadata: node.metadata.duplicate(),
24666 },
24667 }
24668 }
24669 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24672 if self.is_changed {
24673 TransformResult::Changed(self.build_forced(gc))
24674 } else {
24675 TransformResult::Unchanged
24676 }
24677 }
24678 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24680 gc.alloc(Node::TSStringKeyword(self.inner))
24681 }
24682 }
24683 #[derive(Debug)]
24685 pub struct TSSymbolKeyword<'gc> {
24686 is_changed: bool,
24687 pub(super) inner: super::TSSymbolKeyword<'gc>,
24688 }
24689 impl<'gc> TSSymbolKeyword<'gc> {
24690 pub fn from_node(node: &'gc super::TSSymbolKeyword<'gc>) -> Self {
24692 Self {
24693 is_changed: false,
24694 inner: super::TSSymbolKeyword {
24695 metadata: node.metadata.duplicate(),
24696 },
24697 }
24698 }
24699 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24702 if self.is_changed {
24703 TransformResult::Changed(self.build_forced(gc))
24704 } else {
24705 TransformResult::Unchanged
24706 }
24707 }
24708 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24710 gc.alloc(Node::TSSymbolKeyword(self.inner))
24711 }
24712 }
24713 #[derive(Debug)]
24715 pub struct TSVoidKeyword<'gc> {
24716 is_changed: bool,
24717 pub(super) inner: super::TSVoidKeyword<'gc>,
24718 }
24719 impl<'gc> TSVoidKeyword<'gc> {
24720 pub fn from_node(node: &'gc super::TSVoidKeyword<'gc>) -> Self {
24722 Self {
24723 is_changed: false,
24724 inner: super::TSVoidKeyword {
24725 metadata: node.metadata.duplicate(),
24726 },
24727 }
24728 }
24729 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24732 if self.is_changed {
24733 TransformResult::Changed(self.build_forced(gc))
24734 } else {
24735 TransformResult::Unchanged
24736 }
24737 }
24738 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24740 gc.alloc(Node::TSVoidKeyword(self.inner))
24741 }
24742 }
24743 #[derive(Debug)]
24745 pub struct TSUndefinedKeyword<'gc> {
24746 is_changed: bool,
24747 pub(super) inner: super::TSUndefinedKeyword<'gc>,
24748 }
24749 impl<'gc> TSUndefinedKeyword<'gc> {
24750 pub fn from_node(node: &'gc super::TSUndefinedKeyword<'gc>) -> Self {
24752 Self {
24753 is_changed: false,
24754 inner: super::TSUndefinedKeyword {
24755 metadata: node.metadata.duplicate(),
24756 },
24757 }
24758 }
24759 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24762 if self.is_changed {
24763 TransformResult::Changed(self.build_forced(gc))
24764 } else {
24765 TransformResult::Unchanged
24766 }
24767 }
24768 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24770 gc.alloc(Node::TSUndefinedKeyword(self.inner))
24771 }
24772 }
24773 #[derive(Debug)]
24775 pub struct TSUnknownKeyword<'gc> {
24776 is_changed: bool,
24777 pub(super) inner: super::TSUnknownKeyword<'gc>,
24778 }
24779 impl<'gc> TSUnknownKeyword<'gc> {
24780 pub fn from_node(node: &'gc super::TSUnknownKeyword<'gc>) -> Self {
24782 Self {
24783 is_changed: false,
24784 inner: super::TSUnknownKeyword {
24785 metadata: node.metadata.duplicate(),
24786 },
24787 }
24788 }
24789 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24792 if self.is_changed {
24793 TransformResult::Changed(self.build_forced(gc))
24794 } else {
24795 TransformResult::Unchanged
24796 }
24797 }
24798 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24800 gc.alloc(Node::TSUnknownKeyword(self.inner))
24801 }
24802 }
24803 #[derive(Debug)]
24805 pub struct TSNeverKeyword<'gc> {
24806 is_changed: bool,
24807 pub(super) inner: super::TSNeverKeyword<'gc>,
24808 }
24809 impl<'gc> TSNeverKeyword<'gc> {
24810 pub fn from_node(node: &'gc super::TSNeverKeyword<'gc>) -> Self {
24812 Self {
24813 is_changed: false,
24814 inner: super::TSNeverKeyword {
24815 metadata: node.metadata.duplicate(),
24816 },
24817 }
24818 }
24819 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24822 if self.is_changed {
24823 TransformResult::Changed(self.build_forced(gc))
24824 } else {
24825 TransformResult::Unchanged
24826 }
24827 }
24828 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24830 gc.alloc(Node::TSNeverKeyword(self.inner))
24831 }
24832 }
24833 #[derive(Debug)]
24835 pub struct TSBigIntKeyword<'gc> {
24836 is_changed: bool,
24837 pub(super) inner: super::TSBigIntKeyword<'gc>,
24838 }
24839 impl<'gc> TSBigIntKeyword<'gc> {
24840 pub fn from_node(node: &'gc super::TSBigIntKeyword<'gc>) -> Self {
24842 Self {
24843 is_changed: false,
24844 inner: super::TSBigIntKeyword {
24845 metadata: node.metadata.duplicate(),
24846 },
24847 }
24848 }
24849 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24852 if self.is_changed {
24853 TransformResult::Changed(self.build_forced(gc))
24854 } else {
24855 TransformResult::Unchanged
24856 }
24857 }
24858 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24860 gc.alloc(Node::TSBigIntKeyword(self.inner))
24861 }
24862 }
24863 #[derive(Debug)]
24865 pub struct TSThisType<'gc> {
24866 is_changed: bool,
24867 pub(super) inner: super::TSThisType<'gc>,
24868 }
24869 impl<'gc> TSThisType<'gc> {
24870 pub fn from_node(node: &'gc super::TSThisType<'gc>) -> Self {
24872 Self {
24873 is_changed: false,
24874 inner: super::TSThisType {
24875 metadata: node.metadata.duplicate(),
24876 },
24877 }
24878 }
24879 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24882 if self.is_changed {
24883 TransformResult::Changed(self.build_forced(gc))
24884 } else {
24885 TransformResult::Unchanged
24886 }
24887 }
24888 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24890 gc.alloc(Node::TSThisType(self.inner))
24891 }
24892 }
24893 #[derive(Debug)]
24895 pub struct TSLiteralType<'gc> {
24896 is_changed: bool,
24897 pub(super) inner: super::TSLiteralType<'gc>,
24898 }
24899 impl<'gc> TSLiteralType<'gc> {
24900 pub fn from_node(node: &'gc super::TSLiteralType<'gc>) -> Self {
24902 Self {
24903 is_changed: false,
24904 inner: super::TSLiteralType {
24905 metadata: node.metadata.duplicate(),
24906 literal: node.literal.duplicate(),
24907 },
24908 }
24909 }
24910 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24913 if self.is_changed {
24914 TransformResult::Changed(self.build_forced(gc))
24915 } else {
24916 TransformResult::Unchanged
24917 }
24918 }
24919 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24921 gc.alloc(Node::TSLiteralType(self.inner))
24922 }
24923 pub fn literal(&mut self, literal: &'gc Node<'gc>) { self.is_changed = true; self.inner.literal = literal; }
24925 }
24926 #[derive(Debug)]
24928 pub struct TSIndexedAccessType<'gc> {
24929 is_changed: bool,
24930 pub(super) inner: super::TSIndexedAccessType<'gc>,
24931 }
24932 impl<'gc> TSIndexedAccessType<'gc> {
24933 pub fn from_node(node: &'gc super::TSIndexedAccessType<'gc>) -> Self {
24935 Self {
24936 is_changed: false,
24937 inner: super::TSIndexedAccessType {
24938 metadata: node.metadata.duplicate(),
24939 object_type: node.object_type.duplicate(),
24940 index_type: node.index_type.duplicate(),
24941 },
24942 }
24943 }
24944 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24947 if self.is_changed {
24948 TransformResult::Changed(self.build_forced(gc))
24949 } else {
24950 TransformResult::Unchanged
24951 }
24952 }
24953 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24955 gc.alloc(Node::TSIndexedAccessType(self.inner))
24956 }
24957 pub fn object_type(&mut self, object_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.object_type = object_type; }
24959 pub fn index_type(&mut self, index_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.index_type = index_type; }
24961 }
24962 #[derive(Debug)]
24964 pub struct TSArrayType<'gc> {
24965 is_changed: bool,
24966 pub(super) inner: super::TSArrayType<'gc>,
24967 }
24968 impl<'gc> TSArrayType<'gc> {
24969 pub fn from_node(node: &'gc super::TSArrayType<'gc>) -> Self {
24971 Self {
24972 is_changed: false,
24973 inner: super::TSArrayType {
24974 metadata: node.metadata.duplicate(),
24975 element_type: node.element_type.duplicate(),
24976 },
24977 }
24978 }
24979 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
24982 if self.is_changed {
24983 TransformResult::Changed(self.build_forced(gc))
24984 } else {
24985 TransformResult::Unchanged
24986 }
24987 }
24988 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
24990 gc.alloc(Node::TSArrayType(self.inner))
24991 }
24992 pub fn element_type(&mut self, element_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.element_type = element_type; }
24994 }
24995 #[derive(Debug)]
24997 pub struct TSTypeReference<'gc> {
24998 is_changed: bool,
24999 pub(super) inner: super::TSTypeReference<'gc>,
25000 }
25001 impl<'gc> TSTypeReference<'gc> {
25002 pub fn from_node(node: &'gc super::TSTypeReference<'gc>) -> Self {
25004 Self {
25005 is_changed: false,
25006 inner: super::TSTypeReference {
25007 metadata: node.metadata.duplicate(),
25008 type_name: node.type_name.duplicate(),
25009 type_parameters: node.type_parameters.duplicate(),
25010 },
25011 }
25012 }
25013 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25016 if self.is_changed {
25017 TransformResult::Changed(self.build_forced(gc))
25018 } else {
25019 TransformResult::Unchanged
25020 }
25021 }
25022 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25024 gc.alloc(Node::TSTypeReference(self.inner))
25025 }
25026 pub fn type_name(&mut self, type_name: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_name = type_name; }
25028 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
25030 }
25031 #[derive(Debug)]
25033 pub struct TSQualifiedName<'gc> {
25034 is_changed: bool,
25035 pub(super) inner: super::TSQualifiedName<'gc>,
25036 }
25037 impl<'gc> TSQualifiedName<'gc> {
25038 pub fn from_node(node: &'gc super::TSQualifiedName<'gc>) -> Self {
25040 Self {
25041 is_changed: false,
25042 inner: super::TSQualifiedName {
25043 metadata: node.metadata.duplicate(),
25044 left: node.left.duplicate(),
25045 right: node.right.duplicate(),
25046 },
25047 }
25048 }
25049 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25052 if self.is_changed {
25053 TransformResult::Changed(self.build_forced(gc))
25054 } else {
25055 TransformResult::Unchanged
25056 }
25057 }
25058 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25060 gc.alloc(Node::TSQualifiedName(self.inner))
25061 }
25062 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
25064 pub fn right(&mut self, right: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.right = right; }
25066 }
25067 #[derive(Debug)]
25069 pub struct TSFunctionType<'gc> {
25070 is_changed: bool,
25071 pub(super) inner: super::TSFunctionType<'gc>,
25072 }
25073 impl<'gc> TSFunctionType<'gc> {
25074 pub fn from_node(node: &'gc super::TSFunctionType<'gc>) -> Self {
25076 Self {
25077 is_changed: false,
25078 inner: super::TSFunctionType {
25079 metadata: node.metadata.duplicate(),
25080 params: node.params.duplicate(),
25081 return_type: node.return_type.duplicate(),
25082 type_parameters: node.type_parameters.duplicate(),
25083 },
25084 }
25085 }
25086 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25089 if self.is_changed {
25090 TransformResult::Changed(self.build_forced(gc))
25091 } else {
25092 TransformResult::Unchanged
25093 }
25094 }
25095 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25097 gc.alloc(Node::TSFunctionType(self.inner))
25098 }
25099 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
25101 pub fn return_type(&mut self, return_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.return_type = return_type; }
25103 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
25105 }
25106 #[derive(Debug)]
25108 pub struct TSConstructorType<'gc> {
25109 is_changed: bool,
25110 pub(super) inner: super::TSConstructorType<'gc>,
25111 }
25112 impl<'gc> TSConstructorType<'gc> {
25113 pub fn from_node(node: &'gc super::TSConstructorType<'gc>) -> Self {
25115 Self {
25116 is_changed: false,
25117 inner: super::TSConstructorType {
25118 metadata: node.metadata.duplicate(),
25119 params: node.params.duplicate(),
25120 return_type: node.return_type.duplicate(),
25121 type_parameters: node.type_parameters.duplicate(),
25122 },
25123 }
25124 }
25125 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25128 if self.is_changed {
25129 TransformResult::Changed(self.build_forced(gc))
25130 } else {
25131 TransformResult::Unchanged
25132 }
25133 }
25134 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25136 gc.alloc(Node::TSConstructorType(self.inner))
25137 }
25138 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
25140 pub fn return_type(&mut self, return_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.return_type = return_type; }
25142 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
25144 }
25145 #[derive(Debug)]
25147 pub struct TSTypePredicate<'gc> {
25148 is_changed: bool,
25149 pub(super) inner: super::TSTypePredicate<'gc>,
25150 }
25151 impl<'gc> TSTypePredicate<'gc> {
25152 pub fn from_node(node: &'gc super::TSTypePredicate<'gc>) -> Self {
25154 Self {
25155 is_changed: false,
25156 inner: super::TSTypePredicate {
25157 metadata: node.metadata.duplicate(),
25158 parameter_name: node.parameter_name.duplicate(),
25159 type_annotation: node.type_annotation.duplicate(),
25160 },
25161 }
25162 }
25163 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25166 if self.is_changed {
25167 TransformResult::Changed(self.build_forced(gc))
25168 } else {
25169 TransformResult::Unchanged
25170 }
25171 }
25172 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25174 gc.alloc(Node::TSTypePredicate(self.inner))
25175 }
25176 pub fn parameter_name(&mut self, parameter_name: &'gc Node<'gc>) { self.is_changed = true; self.inner.parameter_name = parameter_name; }
25178 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
25180 }
25181 #[derive(Debug)]
25183 pub struct TSTupleType<'gc> {
25184 is_changed: bool,
25185 pub(super) inner: super::TSTupleType<'gc>,
25186 }
25187 impl<'gc> TSTupleType<'gc> {
25188 pub fn from_node(node: &'gc super::TSTupleType<'gc>) -> Self {
25190 Self {
25191 is_changed: false,
25192 inner: super::TSTupleType {
25193 metadata: node.metadata.duplicate(),
25194 element_types: node.element_types.duplicate(),
25195 },
25196 }
25197 }
25198 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25201 if self.is_changed {
25202 TransformResult::Changed(self.build_forced(gc))
25203 } else {
25204 TransformResult::Unchanged
25205 }
25206 }
25207 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25209 gc.alloc(Node::TSTupleType(self.inner))
25210 }
25211 pub fn element_types(&mut self, element_types: NodeList<'gc>) { self.is_changed = true; self.inner.element_types = element_types; }
25213 }
25214 #[derive(Debug)]
25216 pub struct TSTypeAssertion<'gc> {
25217 is_changed: bool,
25218 pub(super) inner: super::TSTypeAssertion<'gc>,
25219 }
25220 impl<'gc> TSTypeAssertion<'gc> {
25221 pub fn from_node(node: &'gc super::TSTypeAssertion<'gc>) -> Self {
25223 Self {
25224 is_changed: false,
25225 inner: super::TSTypeAssertion {
25226 metadata: node.metadata.duplicate(),
25227 type_annotation: node.type_annotation.duplicate(),
25228 expression: node.expression.duplicate(),
25229 },
25230 }
25231 }
25232 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25235 if self.is_changed {
25236 TransformResult::Changed(self.build_forced(gc))
25237 } else {
25238 TransformResult::Unchanged
25239 }
25240 }
25241 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25243 gc.alloc(Node::TSTypeAssertion(self.inner))
25244 }
25245 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
25247 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
25249 }
25250 #[derive(Debug)]
25252 pub struct TSAsExpression<'gc> {
25253 is_changed: bool,
25254 pub(super) inner: super::TSAsExpression<'gc>,
25255 }
25256 impl<'gc> TSAsExpression<'gc> {
25257 pub fn from_node(node: &'gc super::TSAsExpression<'gc>) -> Self {
25259 Self {
25260 is_changed: false,
25261 inner: super::TSAsExpression {
25262 metadata: node.metadata.duplicate(),
25263 expression: node.expression.duplicate(),
25264 type_annotation: node.type_annotation.duplicate(),
25265 },
25266 }
25267 }
25268 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25271 if self.is_changed {
25272 TransformResult::Changed(self.build_forced(gc))
25273 } else {
25274 TransformResult::Unchanged
25275 }
25276 }
25277 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25279 gc.alloc(Node::TSAsExpression(self.inner))
25280 }
25281 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
25283 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
25285 }
25286 #[derive(Debug)]
25288 pub struct TSParameterProperty<'gc> {
25289 is_changed: bool,
25290 pub(super) inner: super::TSParameterProperty<'gc>,
25291 }
25292 impl<'gc> TSParameterProperty<'gc> {
25293 pub fn from_node(node: &'gc super::TSParameterProperty<'gc>) -> Self {
25295 Self {
25296 is_changed: false,
25297 inner: super::TSParameterProperty {
25298 metadata: node.metadata.duplicate(),
25299 parameter: node.parameter.duplicate(),
25300 accessibility: Cell::new(node.accessibility.get()),
25301 readonly: Cell::new(node.readonly.get()),
25302 r#static: Cell::new(node.r#static.get()),
25303 export: Cell::new(node.export.get()),
25304 },
25305 }
25306 }
25307 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25310 if self.is_changed {
25311 TransformResult::Changed(self.build_forced(gc))
25312 } else {
25313 TransformResult::Unchanged
25314 }
25315 }
25316 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25318 gc.alloc(Node::TSParameterProperty(self.inner))
25319 }
25320 pub fn parameter(&mut self, parameter: &'gc Node<'gc>) { self.is_changed = true; self.inner.parameter = parameter; }
25322 }
25323 #[derive(Debug)]
25325 pub struct TSTypeAliasDeclaration<'gc> {
25326 is_changed: bool,
25327 pub(super) inner: super::TSTypeAliasDeclaration<'gc>,
25328 }
25329 impl<'gc> TSTypeAliasDeclaration<'gc> {
25330 pub fn from_node(node: &'gc super::TSTypeAliasDeclaration<'gc>) -> Self {
25332 Self {
25333 is_changed: false,
25334 inner: super::TSTypeAliasDeclaration {
25335 metadata: node.metadata.duplicate(),
25336 id: node.id.duplicate(),
25337 type_parameters: node.type_parameters.duplicate(),
25338 type_annotation: node.type_annotation.duplicate(),
25339 },
25340 }
25341 }
25342 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25345 if self.is_changed {
25346 TransformResult::Changed(self.build_forced(gc))
25347 } else {
25348 TransformResult::Unchanged
25349 }
25350 }
25351 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25353 gc.alloc(Node::TSTypeAliasDeclaration(self.inner))
25354 }
25355 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
25357 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
25359 pub fn type_annotation(&mut self, type_annotation: &'gc Node<'gc>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
25361 }
25362 #[derive(Debug)]
25364 pub struct TSInterfaceDeclaration<'gc> {
25365 is_changed: bool,
25366 pub(super) inner: super::TSInterfaceDeclaration<'gc>,
25367 }
25368 impl<'gc> TSInterfaceDeclaration<'gc> {
25369 pub fn from_node(node: &'gc super::TSInterfaceDeclaration<'gc>) -> Self {
25371 Self {
25372 is_changed: false,
25373 inner: super::TSInterfaceDeclaration {
25374 metadata: node.metadata.duplicate(),
25375 id: node.id.duplicate(),
25376 body: node.body.duplicate(),
25377 extends: node.extends.duplicate(),
25378 type_parameters: node.type_parameters.duplicate(),
25379 },
25380 }
25381 }
25382 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25385 if self.is_changed {
25386 TransformResult::Changed(self.build_forced(gc))
25387 } else {
25388 TransformResult::Unchanged
25389 }
25390 }
25391 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25393 gc.alloc(Node::TSInterfaceDeclaration(self.inner))
25394 }
25395 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
25397 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
25399 pub fn extends(&mut self, extends: NodeList<'gc>) { self.is_changed = true; self.inner.extends = extends; }
25401 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
25403 }
25404 #[derive(Debug)]
25406 pub struct TSInterfaceHeritage<'gc> {
25407 is_changed: bool,
25408 pub(super) inner: super::TSInterfaceHeritage<'gc>,
25409 }
25410 impl<'gc> TSInterfaceHeritage<'gc> {
25411 pub fn from_node(node: &'gc super::TSInterfaceHeritage<'gc>) -> Self {
25413 Self {
25414 is_changed: false,
25415 inner: super::TSInterfaceHeritage {
25416 metadata: node.metadata.duplicate(),
25417 expression: node.expression.duplicate(),
25418 type_parameters: node.type_parameters.duplicate(),
25419 },
25420 }
25421 }
25422 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25425 if self.is_changed {
25426 TransformResult::Changed(self.build_forced(gc))
25427 } else {
25428 TransformResult::Unchanged
25429 }
25430 }
25431 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25433 gc.alloc(Node::TSInterfaceHeritage(self.inner))
25434 }
25435 pub fn expression(&mut self, expression: &'gc Node<'gc>) { self.is_changed = true; self.inner.expression = expression; }
25437 pub fn type_parameters(&mut self, type_parameters: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_parameters = type_parameters; }
25439 }
25440 #[derive(Debug)]
25442 pub struct TSInterfaceBody<'gc> {
25443 is_changed: bool,
25444 pub(super) inner: super::TSInterfaceBody<'gc>,
25445 }
25446 impl<'gc> TSInterfaceBody<'gc> {
25447 pub fn from_node(node: &'gc super::TSInterfaceBody<'gc>) -> Self {
25449 Self {
25450 is_changed: false,
25451 inner: super::TSInterfaceBody {
25452 metadata: node.metadata.duplicate(),
25453 body: node.body.duplicate(),
25454 },
25455 }
25456 }
25457 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25460 if self.is_changed {
25461 TransformResult::Changed(self.build_forced(gc))
25462 } else {
25463 TransformResult::Unchanged
25464 }
25465 }
25466 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25468 gc.alloc(Node::TSInterfaceBody(self.inner))
25469 }
25470 pub fn body(&mut self, body: NodeList<'gc>) { self.is_changed = true; self.inner.body = body; }
25472 }
25473 #[derive(Debug)]
25475 pub struct TSEnumDeclaration<'gc> {
25476 is_changed: bool,
25477 pub(super) inner: super::TSEnumDeclaration<'gc>,
25478 }
25479 impl<'gc> TSEnumDeclaration<'gc> {
25480 pub fn from_node(node: &'gc super::TSEnumDeclaration<'gc>) -> Self {
25482 Self {
25483 is_changed: false,
25484 inner: super::TSEnumDeclaration {
25485 metadata: node.metadata.duplicate(),
25486 id: node.id.duplicate(),
25487 members: node.members.duplicate(),
25488 },
25489 }
25490 }
25491 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25494 if self.is_changed {
25495 TransformResult::Changed(self.build_forced(gc))
25496 } else {
25497 TransformResult::Unchanged
25498 }
25499 }
25500 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25502 gc.alloc(Node::TSEnumDeclaration(self.inner))
25503 }
25504 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
25506 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
25508 }
25509 #[derive(Debug)]
25511 pub struct TSEnumMember<'gc> {
25512 is_changed: bool,
25513 pub(super) inner: super::TSEnumMember<'gc>,
25514 }
25515 impl<'gc> TSEnumMember<'gc> {
25516 pub fn from_node(node: &'gc super::TSEnumMember<'gc>) -> Self {
25518 Self {
25519 is_changed: false,
25520 inner: super::TSEnumMember {
25521 metadata: node.metadata.duplicate(),
25522 id: node.id.duplicate(),
25523 initializer: node.initializer.duplicate(),
25524 },
25525 }
25526 }
25527 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25530 if self.is_changed {
25531 TransformResult::Changed(self.build_forced(gc))
25532 } else {
25533 TransformResult::Unchanged
25534 }
25535 }
25536 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25538 gc.alloc(Node::TSEnumMember(self.inner))
25539 }
25540 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
25542 pub fn initializer(&mut self, initializer: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.initializer = initializer; }
25544 }
25545 #[derive(Debug)]
25547 pub struct TSModuleDeclaration<'gc> {
25548 is_changed: bool,
25549 pub(super) inner: super::TSModuleDeclaration<'gc>,
25550 }
25551 impl<'gc> TSModuleDeclaration<'gc> {
25552 pub fn from_node(node: &'gc super::TSModuleDeclaration<'gc>) -> Self {
25554 Self {
25555 is_changed: false,
25556 inner: super::TSModuleDeclaration {
25557 metadata: node.metadata.duplicate(),
25558 id: node.id.duplicate(),
25559 body: node.body.duplicate(),
25560 },
25561 }
25562 }
25563 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25566 if self.is_changed {
25567 TransformResult::Changed(self.build_forced(gc))
25568 } else {
25569 TransformResult::Unchanged
25570 }
25571 }
25572 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25574 gc.alloc(Node::TSModuleDeclaration(self.inner))
25575 }
25576 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
25578 pub fn body(&mut self, body: &'gc Node<'gc>) { self.is_changed = true; self.inner.body = body; }
25580 }
25581 #[derive(Debug)]
25583 pub struct TSModuleBlock<'gc> {
25584 is_changed: bool,
25585 pub(super) inner: super::TSModuleBlock<'gc>,
25586 }
25587 impl<'gc> TSModuleBlock<'gc> {
25588 pub fn from_node(node: &'gc super::TSModuleBlock<'gc>) -> Self {
25590 Self {
25591 is_changed: false,
25592 inner: super::TSModuleBlock {
25593 metadata: node.metadata.duplicate(),
25594 body: node.body.duplicate(),
25595 },
25596 }
25597 }
25598 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25601 if self.is_changed {
25602 TransformResult::Changed(self.build_forced(gc))
25603 } else {
25604 TransformResult::Unchanged
25605 }
25606 }
25607 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25609 gc.alloc(Node::TSModuleBlock(self.inner))
25610 }
25611 pub fn body(&mut self, body: NodeList<'gc>) { self.is_changed = true; self.inner.body = body; }
25613 }
25614 #[derive(Debug)]
25616 pub struct TSModuleMember<'gc> {
25617 is_changed: bool,
25618 pub(super) inner: super::TSModuleMember<'gc>,
25619 }
25620 impl<'gc> TSModuleMember<'gc> {
25621 pub fn from_node(node: &'gc super::TSModuleMember<'gc>) -> Self {
25623 Self {
25624 is_changed: false,
25625 inner: super::TSModuleMember {
25626 metadata: node.metadata.duplicate(),
25627 id: node.id.duplicate(),
25628 initializer: node.initializer.duplicate(),
25629 },
25630 }
25631 }
25632 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25635 if self.is_changed {
25636 TransformResult::Changed(self.build_forced(gc))
25637 } else {
25638 TransformResult::Unchanged
25639 }
25640 }
25641 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25643 gc.alloc(Node::TSModuleMember(self.inner))
25644 }
25645 pub fn id(&mut self, id: &'gc Node<'gc>) { self.is_changed = true; self.inner.id = id; }
25647 pub fn initializer(&mut self, initializer: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.initializer = initializer; }
25649 }
25650 #[derive(Debug)]
25652 pub struct TSTypeParameterDeclaration<'gc> {
25653 is_changed: bool,
25654 pub(super) inner: super::TSTypeParameterDeclaration<'gc>,
25655 }
25656 impl<'gc> TSTypeParameterDeclaration<'gc> {
25657 pub fn from_node(node: &'gc super::TSTypeParameterDeclaration<'gc>) -> Self {
25659 Self {
25660 is_changed: false,
25661 inner: super::TSTypeParameterDeclaration {
25662 metadata: node.metadata.duplicate(),
25663 params: node.params.duplicate(),
25664 },
25665 }
25666 }
25667 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25670 if self.is_changed {
25671 TransformResult::Changed(self.build_forced(gc))
25672 } else {
25673 TransformResult::Unchanged
25674 }
25675 }
25676 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25678 gc.alloc(Node::TSTypeParameterDeclaration(self.inner))
25679 }
25680 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
25682 }
25683 #[derive(Debug)]
25685 pub struct TSTypeParameter<'gc> {
25686 is_changed: bool,
25687 pub(super) inner: super::TSTypeParameter<'gc>,
25688 }
25689 impl<'gc> TSTypeParameter<'gc> {
25690 pub fn from_node(node: &'gc super::TSTypeParameter<'gc>) -> Self {
25692 Self {
25693 is_changed: false,
25694 inner: super::TSTypeParameter {
25695 metadata: node.metadata.duplicate(),
25696 name: node.name.duplicate(),
25697 constraint: node.constraint.duplicate(),
25698 default: node.default.duplicate(),
25699 },
25700 }
25701 }
25702 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25705 if self.is_changed {
25706 TransformResult::Changed(self.build_forced(gc))
25707 } else {
25708 TransformResult::Unchanged
25709 }
25710 }
25711 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25713 gc.alloc(Node::TSTypeParameter(self.inner))
25714 }
25715 pub fn name(&mut self, name: &'gc Node<'gc>) { self.is_changed = true; self.inner.name = name; }
25717 pub fn constraint(&mut self, constraint: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.constraint = constraint; }
25719 pub fn default(&mut self, default: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.default = default; }
25721 }
25722 #[derive(Debug)]
25724 pub struct TSTypeParameterInstantiation<'gc> {
25725 is_changed: bool,
25726 pub(super) inner: super::TSTypeParameterInstantiation<'gc>,
25727 }
25728 impl<'gc> TSTypeParameterInstantiation<'gc> {
25729 pub fn from_node(node: &'gc super::TSTypeParameterInstantiation<'gc>) -> Self {
25731 Self {
25732 is_changed: false,
25733 inner: super::TSTypeParameterInstantiation {
25734 metadata: node.metadata.duplicate(),
25735 params: node.params.duplicate(),
25736 },
25737 }
25738 }
25739 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25742 if self.is_changed {
25743 TransformResult::Changed(self.build_forced(gc))
25744 } else {
25745 TransformResult::Unchanged
25746 }
25747 }
25748 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25750 gc.alloc(Node::TSTypeParameterInstantiation(self.inner))
25751 }
25752 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
25754 }
25755 #[derive(Debug)]
25757 pub struct TSUnionType<'gc> {
25758 is_changed: bool,
25759 pub(super) inner: super::TSUnionType<'gc>,
25760 }
25761 impl<'gc> TSUnionType<'gc> {
25762 pub fn from_node(node: &'gc super::TSUnionType<'gc>) -> Self {
25764 Self {
25765 is_changed: false,
25766 inner: super::TSUnionType {
25767 metadata: node.metadata.duplicate(),
25768 types: node.types.duplicate(),
25769 },
25770 }
25771 }
25772 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25775 if self.is_changed {
25776 TransformResult::Changed(self.build_forced(gc))
25777 } else {
25778 TransformResult::Unchanged
25779 }
25780 }
25781 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25783 gc.alloc(Node::TSUnionType(self.inner))
25784 }
25785 pub fn types(&mut self, types: NodeList<'gc>) { self.is_changed = true; self.inner.types = types; }
25787 }
25788 #[derive(Debug)]
25790 pub struct TSIntersectionType<'gc> {
25791 is_changed: bool,
25792 pub(super) inner: super::TSIntersectionType<'gc>,
25793 }
25794 impl<'gc> TSIntersectionType<'gc> {
25795 pub fn from_node(node: &'gc super::TSIntersectionType<'gc>) -> Self {
25797 Self {
25798 is_changed: false,
25799 inner: super::TSIntersectionType {
25800 metadata: node.metadata.duplicate(),
25801 types: node.types.duplicate(),
25802 },
25803 }
25804 }
25805 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25808 if self.is_changed {
25809 TransformResult::Changed(self.build_forced(gc))
25810 } else {
25811 TransformResult::Unchanged
25812 }
25813 }
25814 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25816 gc.alloc(Node::TSIntersectionType(self.inner))
25817 }
25818 pub fn types(&mut self, types: NodeList<'gc>) { self.is_changed = true; self.inner.types = types; }
25820 }
25821 #[derive(Debug)]
25823 pub struct TSTypeQuery<'gc> {
25824 is_changed: bool,
25825 pub(super) inner: super::TSTypeQuery<'gc>,
25826 }
25827 impl<'gc> TSTypeQuery<'gc> {
25828 pub fn from_node(node: &'gc super::TSTypeQuery<'gc>) -> Self {
25830 Self {
25831 is_changed: false,
25832 inner: super::TSTypeQuery {
25833 metadata: node.metadata.duplicate(),
25834 expr_name: node.expr_name.duplicate(),
25835 },
25836 }
25837 }
25838 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25841 if self.is_changed {
25842 TransformResult::Changed(self.build_forced(gc))
25843 } else {
25844 TransformResult::Unchanged
25845 }
25846 }
25847 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25849 gc.alloc(Node::TSTypeQuery(self.inner))
25850 }
25851 pub fn expr_name(&mut self, expr_name: &'gc Node<'gc>) { self.is_changed = true; self.inner.expr_name = expr_name; }
25853 }
25854 #[derive(Debug)]
25856 pub struct TSConditionalType<'gc> {
25857 is_changed: bool,
25858 pub(super) inner: super::TSConditionalType<'gc>,
25859 }
25860 impl<'gc> TSConditionalType<'gc> {
25861 pub fn from_node(node: &'gc super::TSConditionalType<'gc>) -> Self {
25863 Self {
25864 is_changed: false,
25865 inner: super::TSConditionalType {
25866 metadata: node.metadata.duplicate(),
25867 check_type: node.check_type.duplicate(),
25868 extends_type: node.extends_type.duplicate(),
25869 true_type: node.true_type.duplicate(),
25870 false_type: node.false_type.duplicate(),
25871 },
25872 }
25873 }
25874 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25877 if self.is_changed {
25878 TransformResult::Changed(self.build_forced(gc))
25879 } else {
25880 TransformResult::Unchanged
25881 }
25882 }
25883 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25885 gc.alloc(Node::TSConditionalType(self.inner))
25886 }
25887 pub fn check_type(&mut self, check_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.check_type = check_type; }
25889 pub fn extends_type(&mut self, extends_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.extends_type = extends_type; }
25891 pub fn true_type(&mut self, true_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.true_type = true_type; }
25893 pub fn false_type(&mut self, false_type: &'gc Node<'gc>) { self.is_changed = true; self.inner.false_type = false_type; }
25895 }
25896 #[derive(Debug)]
25898 pub struct TSTypeLiteral<'gc> {
25899 is_changed: bool,
25900 pub(super) inner: super::TSTypeLiteral<'gc>,
25901 }
25902 impl<'gc> TSTypeLiteral<'gc> {
25903 pub fn from_node(node: &'gc super::TSTypeLiteral<'gc>) -> Self {
25905 Self {
25906 is_changed: false,
25907 inner: super::TSTypeLiteral {
25908 metadata: node.metadata.duplicate(),
25909 members: node.members.duplicate(),
25910 },
25911 }
25912 }
25913 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25916 if self.is_changed {
25917 TransformResult::Changed(self.build_forced(gc))
25918 } else {
25919 TransformResult::Unchanged
25920 }
25921 }
25922 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25924 gc.alloc(Node::TSTypeLiteral(self.inner))
25925 }
25926 pub fn members(&mut self, members: NodeList<'gc>) { self.is_changed = true; self.inner.members = members; }
25928 }
25929 #[derive(Debug)]
25931 pub struct TSPropertySignature<'gc> {
25932 is_changed: bool,
25933 pub(super) inner: super::TSPropertySignature<'gc>,
25934 }
25935 impl<'gc> TSPropertySignature<'gc> {
25936 pub fn from_node(node: &'gc super::TSPropertySignature<'gc>) -> Self {
25938 Self {
25939 is_changed: false,
25940 inner: super::TSPropertySignature {
25941 metadata: node.metadata.duplicate(),
25942 key: node.key.duplicate(),
25943 type_annotation: node.type_annotation.duplicate(),
25944 initializer: node.initializer.duplicate(),
25945 optional: Cell::new(node.optional.get()),
25946 computed: Cell::new(node.computed.get()),
25947 readonly: Cell::new(node.readonly.get()),
25948 r#static: Cell::new(node.r#static.get()),
25949 export: Cell::new(node.export.get()),
25950 },
25951 }
25952 }
25953 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25956 if self.is_changed {
25957 TransformResult::Changed(self.build_forced(gc))
25958 } else {
25959 TransformResult::Unchanged
25960 }
25961 }
25962 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
25964 gc.alloc(Node::TSPropertySignature(self.inner))
25965 }
25966 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
25968 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
25970 pub fn initializer(&mut self, initializer: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.initializer = initializer; }
25972 }
25973 #[derive(Debug)]
25975 pub struct TSMethodSignature<'gc> {
25976 is_changed: bool,
25977 pub(super) inner: super::TSMethodSignature<'gc>,
25978 }
25979 impl<'gc> TSMethodSignature<'gc> {
25980 pub fn from_node(node: &'gc super::TSMethodSignature<'gc>) -> Self {
25982 Self {
25983 is_changed: false,
25984 inner: super::TSMethodSignature {
25985 metadata: node.metadata.duplicate(),
25986 key: node.key.duplicate(),
25987 params: node.params.duplicate(),
25988 return_type: node.return_type.duplicate(),
25989 computed: Cell::new(node.computed.get()),
25990 },
25991 }
25992 }
25993 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
25996 if self.is_changed {
25997 TransformResult::Changed(self.build_forced(gc))
25998 } else {
25999 TransformResult::Unchanged
26000 }
26001 }
26002 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26004 gc.alloc(Node::TSMethodSignature(self.inner))
26005 }
26006 pub fn key(&mut self, key: &'gc Node<'gc>) { self.is_changed = true; self.inner.key = key; }
26008 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
26010 pub fn return_type(&mut self, return_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.return_type = return_type; }
26012 }
26013 #[derive(Debug)]
26015 pub struct TSIndexSignature<'gc> {
26016 is_changed: bool,
26017 pub(super) inner: super::TSIndexSignature<'gc>,
26018 }
26019 impl<'gc> TSIndexSignature<'gc> {
26020 pub fn from_node(node: &'gc super::TSIndexSignature<'gc>) -> Self {
26022 Self {
26023 is_changed: false,
26024 inner: super::TSIndexSignature {
26025 metadata: node.metadata.duplicate(),
26026 parameters: node.parameters.duplicate(),
26027 type_annotation: node.type_annotation.duplicate(),
26028 },
26029 }
26030 }
26031 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26034 if self.is_changed {
26035 TransformResult::Changed(self.build_forced(gc))
26036 } else {
26037 TransformResult::Unchanged
26038 }
26039 }
26040 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26042 gc.alloc(Node::TSIndexSignature(self.inner))
26043 }
26044 pub fn parameters(&mut self, parameters: NodeList<'gc>) { self.is_changed = true; self.inner.parameters = parameters; }
26046 pub fn type_annotation(&mut self, type_annotation: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.type_annotation = type_annotation; }
26048 }
26049 #[derive(Debug)]
26051 pub struct TSCallSignatureDeclaration<'gc> {
26052 is_changed: bool,
26053 pub(super) inner: super::TSCallSignatureDeclaration<'gc>,
26054 }
26055 impl<'gc> TSCallSignatureDeclaration<'gc> {
26056 pub fn from_node(node: &'gc super::TSCallSignatureDeclaration<'gc>) -> Self {
26058 Self {
26059 is_changed: false,
26060 inner: super::TSCallSignatureDeclaration {
26061 metadata: node.metadata.duplicate(),
26062 params: node.params.duplicate(),
26063 return_type: node.return_type.duplicate(),
26064 },
26065 }
26066 }
26067 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26070 if self.is_changed {
26071 TransformResult::Changed(self.build_forced(gc))
26072 } else {
26073 TransformResult::Unchanged
26074 }
26075 }
26076 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26078 gc.alloc(Node::TSCallSignatureDeclaration(self.inner))
26079 }
26080 pub fn params(&mut self, params: NodeList<'gc>) { self.is_changed = true; self.inner.params = params; }
26082 pub fn return_type(&mut self, return_type: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.return_type = return_type; }
26084 }
26085 #[derive(Debug)]
26087 pub struct TSModifiers<'gc> {
26088 is_changed: bool,
26089 pub(super) inner: super::TSModifiers<'gc>,
26090 }
26091 impl<'gc> TSModifiers<'gc> {
26092 pub fn from_node(node: &'gc super::TSModifiers<'gc>) -> Self {
26094 Self {
26095 is_changed: false,
26096 inner: super::TSModifiers {
26097 metadata: node.metadata.duplicate(),
26098 accessibility: Cell::new(node.accessibility.get()),
26099 readonly: Cell::new(node.readonly.get()),
26100 },
26101 }
26102 }
26103 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26106 if self.is_changed {
26107 TransformResult::Changed(self.build_forced(gc))
26108 } else {
26109 TransformResult::Unchanged
26110 }
26111 }
26112 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26114 gc.alloc(Node::TSModifiers(self.inner))
26115 }
26116 }
26117 #[derive(Debug)]
26119 pub struct CoverEmptyArgs<'gc> {
26120 is_changed: bool,
26121 pub(super) inner: super::CoverEmptyArgs<'gc>,
26122 }
26123 impl<'gc> CoverEmptyArgs<'gc> {
26124 pub fn from_node(node: &'gc super::CoverEmptyArgs<'gc>) -> Self {
26126 Self {
26127 is_changed: false,
26128 inner: super::CoverEmptyArgs {
26129 metadata: node.metadata.duplicate(),
26130 },
26131 }
26132 }
26133 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26136 if self.is_changed {
26137 TransformResult::Changed(self.build_forced(gc))
26138 } else {
26139 TransformResult::Unchanged
26140 }
26141 }
26142 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26144 gc.alloc(Node::CoverEmptyArgs(self.inner))
26145 }
26146 }
26147 #[derive(Debug)]
26149 pub struct CoverTrailingComma<'gc> {
26150 is_changed: bool,
26151 pub(super) inner: super::CoverTrailingComma<'gc>,
26152 }
26153 impl<'gc> CoverTrailingComma<'gc> {
26154 pub fn from_node(node: &'gc super::CoverTrailingComma<'gc>) -> Self {
26156 Self {
26157 is_changed: false,
26158 inner: super::CoverTrailingComma {
26159 metadata: node.metadata.duplicate(),
26160 },
26161 }
26162 }
26163 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26166 if self.is_changed {
26167 TransformResult::Changed(self.build_forced(gc))
26168 } else {
26169 TransformResult::Unchanged
26170 }
26171 }
26172 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26174 gc.alloc(Node::CoverTrailingComma(self.inner))
26175 }
26176 }
26177 #[derive(Debug)]
26179 pub struct CoverInitializer<'gc> {
26180 is_changed: bool,
26181 pub(super) inner: super::CoverInitializer<'gc>,
26182 }
26183 impl<'gc> CoverInitializer<'gc> {
26184 pub fn from_node(node: &'gc super::CoverInitializer<'gc>) -> Self {
26186 Self {
26187 is_changed: false,
26188 inner: super::CoverInitializer {
26189 metadata: node.metadata.duplicate(),
26190 init: node.init.duplicate(),
26191 },
26192 }
26193 }
26194 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26197 if self.is_changed {
26198 TransformResult::Changed(self.build_forced(gc))
26199 } else {
26200 TransformResult::Unchanged
26201 }
26202 }
26203 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26205 gc.alloc(Node::CoverInitializer(self.inner))
26206 }
26207 pub fn init(&mut self, init: &'gc Node<'gc>) { self.is_changed = true; self.inner.init = init; }
26209 }
26210 #[derive(Debug)]
26212 pub struct CoverRestElement<'gc> {
26213 is_changed: bool,
26214 pub(super) inner: super::CoverRestElement<'gc>,
26215 }
26216 impl<'gc> CoverRestElement<'gc> {
26217 pub fn from_node(node: &'gc super::CoverRestElement<'gc>) -> Self {
26219 Self {
26220 is_changed: false,
26221 inner: super::CoverRestElement {
26222 metadata: node.metadata.duplicate(),
26223 rest: node.rest.duplicate(),
26224 },
26225 }
26226 }
26227 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26230 if self.is_changed {
26231 TransformResult::Changed(self.build_forced(gc))
26232 } else {
26233 TransformResult::Unchanged
26234 }
26235 }
26236 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26238 gc.alloc(Node::CoverRestElement(self.inner))
26239 }
26240 pub fn rest(&mut self, rest: &'gc Node<'gc>) { self.is_changed = true; self.inner.rest = rest; }
26242 }
26243 #[derive(Debug)]
26245 pub struct CoverTypedIdentifier<'gc> {
26246 is_changed: bool,
26247 pub(super) inner: super::CoverTypedIdentifier<'gc>,
26248 }
26249 impl<'gc> CoverTypedIdentifier<'gc> {
26250 pub fn from_node(node: &'gc super::CoverTypedIdentifier<'gc>) -> Self {
26252 Self {
26253 is_changed: false,
26254 inner: super::CoverTypedIdentifier {
26255 metadata: node.metadata.duplicate(),
26256 left: node.left.duplicate(),
26257 right: node.right.duplicate(),
26258 optional: Cell::new(node.optional.get()),
26259 },
26260 }
26261 }
26262 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26265 if self.is_changed {
26266 TransformResult::Changed(self.build_forced(gc))
26267 } else {
26268 TransformResult::Unchanged
26269 }
26270 }
26271 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26273 gc.alloc(Node::CoverTypedIdentifier(self.inner))
26274 }
26275 pub fn left(&mut self, left: &'gc Node<'gc>) { self.is_changed = true; self.inner.left = left; }
26277 pub fn right(&mut self, right: Option<&'gc Node<'gc>>) { self.is_changed = true; self.inner.right = right; }
26279 }
26280 #[derive(Debug)]
26282 pub struct SHBuiltin<'gc> {
26283 is_changed: bool,
26284 pub(super) inner: super::SHBuiltin<'gc>,
26285 }
26286 impl<'gc> SHBuiltin<'gc> {
26287 pub fn from_node(node: &'gc super::SHBuiltin<'gc>) -> Self {
26289 Self {
26290 is_changed: false,
26291 inner: super::SHBuiltin {
26292 metadata: node.metadata.duplicate(),
26293 },
26294 }
26295 }
26296 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26299 if self.is_changed {
26300 TransformResult::Changed(self.build_forced(gc))
26301 } else {
26302 TransformResult::Unchanged
26303 }
26304 }
26305 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26307 gc.alloc(Node::SHBuiltin(self.inner))
26308 }
26309 }
26310 #[derive(Debug)]
26312 pub struct ImplicitCheckedCast<'gc> {
26313 is_changed: bool,
26314 pub(super) inner: super::ImplicitCheckedCast<'gc>,
26315 }
26316 impl<'gc> ImplicitCheckedCast<'gc> {
26317 pub fn from_node(node: &'gc super::ImplicitCheckedCast<'gc>) -> Self {
26319 Self {
26320 is_changed: false,
26321 inner: super::ImplicitCheckedCast {
26322 metadata: node.metadata.duplicate(),
26323 argument: node.argument.duplicate(),
26324 },
26325 }
26326 }
26327 pub fn build(self, gc: &'gc crate::context::GCLock<'_, '_>) -> TransformResult<&'gc Node<'gc>> {
26330 if self.is_changed {
26331 TransformResult::Changed(self.build_forced(gc))
26332 } else {
26333 TransformResult::Unchanged
26334 }
26335 }
26336 pub fn build_forced(self, gc: &'gc crate::context::GCLock<'_, '_>) -> &'gc Node<'gc> {
26338 gc.alloc(Node::ImplicitCheckedCast(self.inner))
26339 }
26340 pub fn argument(&mut self, argument: &'gc Node<'gc>) { self.is_changed = true; self.inner.argument = argument; }
26342 }
26343}