oxc_ast/generated/
derive_dummy.rs

1// Auto-generated code, DO NOT EDIT DIRECTLY!
2// To edit this generated file you have to edit `tasks/ast_tools/src/derives/dummy.rs`.
3
4#![allow(unused_variables, clippy::inline_always)]
5
6use oxc_allocator::{Allocator, Dummy};
7
8use crate::ast::js::*;
9use crate::ast::jsx::*;
10use crate::ast::literal::*;
11use crate::ast::ts::*;
12
13impl<'a> Dummy<'a> for Program<'a> {
14    /// Create a dummy [`Program`].
15    ///
16    /// Does not allocate any data into arena.
17    fn dummy(allocator: &'a Allocator) -> Self {
18        Self {
19            span: Dummy::dummy(allocator),
20            source_type: Dummy::dummy(allocator),
21            source_text: Dummy::dummy(allocator),
22            comments: Dummy::dummy(allocator),
23            hashbang: Dummy::dummy(allocator),
24            directives: Dummy::dummy(allocator),
25            body: Dummy::dummy(allocator),
26            scope_id: Dummy::dummy(allocator),
27        }
28    }
29}
30
31impl<'a> Dummy<'a> for Expression<'a> {
32    /// Create a dummy [`Expression`].
33    ///
34    /// Has cost of making 1 allocation (8 bytes).
35    fn dummy(allocator: &'a Allocator) -> Self {
36        Self::NullLiteral(Dummy::dummy(allocator))
37    }
38}
39
40impl<'a> Dummy<'a> for IdentifierName<'a> {
41    /// Create a dummy [`IdentifierName`].
42    ///
43    /// Does not allocate any data into arena.
44    fn dummy(allocator: &'a Allocator) -> Self {
45        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
46    }
47}
48
49impl<'a> Dummy<'a> for IdentifierReference<'a> {
50    /// Create a dummy [`IdentifierReference`].
51    ///
52    /// Does not allocate any data into arena.
53    fn dummy(allocator: &'a Allocator) -> Self {
54        Self {
55            span: Dummy::dummy(allocator),
56            name: Dummy::dummy(allocator),
57            reference_id: Dummy::dummy(allocator),
58        }
59    }
60}
61
62impl<'a> Dummy<'a> for BindingIdentifier<'a> {
63    /// Create a dummy [`BindingIdentifier`].
64    ///
65    /// Does not allocate any data into arena.
66    fn dummy(allocator: &'a Allocator) -> Self {
67        Self {
68            span: Dummy::dummy(allocator),
69            name: Dummy::dummy(allocator),
70            symbol_id: Dummy::dummy(allocator),
71        }
72    }
73}
74
75impl<'a> Dummy<'a> for LabelIdentifier<'a> {
76    /// Create a dummy [`LabelIdentifier`].
77    ///
78    /// Does not allocate any data into arena.
79    fn dummy(allocator: &'a Allocator) -> Self {
80        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
81    }
82}
83
84impl<'a> Dummy<'a> for ThisExpression {
85    /// Create a dummy [`ThisExpression`].
86    ///
87    /// Does not allocate any data into arena.
88    fn dummy(allocator: &'a Allocator) -> Self {
89        Self { span: Dummy::dummy(allocator) }
90    }
91}
92
93impl<'a> Dummy<'a> for ArrayExpression<'a> {
94    /// Create a dummy [`ArrayExpression`].
95    ///
96    /// Does not allocate any data into arena.
97    fn dummy(allocator: &'a Allocator) -> Self {
98        Self { span: Dummy::dummy(allocator), elements: Dummy::dummy(allocator) }
99    }
100}
101
102impl<'a> Dummy<'a> for ArrayExpressionElement<'a> {
103    /// Create a dummy [`ArrayExpressionElement`].
104    ///
105    /// Does not allocate any data into arena.
106    fn dummy(allocator: &'a Allocator) -> Self {
107        Self::Elision(Dummy::dummy(allocator))
108    }
109}
110
111impl<'a> Dummy<'a> for Elision {
112    /// Create a dummy [`Elision`].
113    ///
114    /// Does not allocate any data into arena.
115    fn dummy(allocator: &'a Allocator) -> Self {
116        Self { span: Dummy::dummy(allocator) }
117    }
118}
119
120impl<'a> Dummy<'a> for ObjectExpression<'a> {
121    /// Create a dummy [`ObjectExpression`].
122    ///
123    /// Does not allocate any data into arena.
124    fn dummy(allocator: &'a Allocator) -> Self {
125        Self { span: Dummy::dummy(allocator), properties: Dummy::dummy(allocator) }
126    }
127}
128
129impl<'a> Dummy<'a> for ObjectPropertyKind<'a> {
130    /// Create a dummy [`ObjectPropertyKind`].
131    ///
132    /// Has cost of making 2 allocations (32 bytes).
133    fn dummy(allocator: &'a Allocator) -> Self {
134        Self::SpreadProperty(Dummy::dummy(allocator))
135    }
136}
137
138impl<'a> Dummy<'a> for ObjectProperty<'a> {
139    /// Create a dummy [`ObjectProperty`].
140    ///
141    /// Has cost of making 2 allocations (16 bytes).
142    fn dummy(allocator: &'a Allocator) -> Self {
143        Self {
144            span: Dummy::dummy(allocator),
145            kind: Dummy::dummy(allocator),
146            key: Dummy::dummy(allocator),
147            value: Dummy::dummy(allocator),
148            method: Dummy::dummy(allocator),
149            shorthand: Dummy::dummy(allocator),
150            computed: Dummy::dummy(allocator),
151        }
152    }
153}
154
155impl<'a> Dummy<'a> for PropertyKey<'a> {
156    /// Create a dummy [`PropertyKey`].
157    ///
158    /// Has cost of making 1 allocation (8 bytes).
159    fn dummy(allocator: &'a Allocator) -> Self {
160        Self::NullLiteral(Dummy::dummy(allocator))
161    }
162}
163
164impl<'a> Dummy<'a> for PropertyKind {
165    /// Create a dummy [`PropertyKind`].
166    ///
167    /// Does not allocate any data into arena.
168    #[inline(always)]
169    fn dummy(allocator: &'a Allocator) -> Self {
170        Self::Init
171    }
172}
173
174impl<'a> Dummy<'a> for TemplateLiteral<'a> {
175    /// Create a dummy [`TemplateLiteral`].
176    ///
177    /// Does not allocate any data into arena.
178    fn dummy(allocator: &'a Allocator) -> Self {
179        Self {
180            span: Dummy::dummy(allocator),
181            quasis: Dummy::dummy(allocator),
182            expressions: Dummy::dummy(allocator),
183        }
184    }
185}
186
187impl<'a> Dummy<'a> for TaggedTemplateExpression<'a> {
188    /// Create a dummy [`TaggedTemplateExpression`].
189    ///
190    /// Has cost of making 1 allocation (8 bytes).
191    fn dummy(allocator: &'a Allocator) -> Self {
192        Self {
193            span: Dummy::dummy(allocator),
194            tag: Dummy::dummy(allocator),
195            type_arguments: Dummy::dummy(allocator),
196            quasi: Dummy::dummy(allocator),
197        }
198    }
199}
200
201impl<'a> Dummy<'a> for TemplateElement<'a> {
202    /// Create a dummy [`TemplateElement`].
203    ///
204    /// Does not allocate any data into arena.
205    fn dummy(allocator: &'a Allocator) -> Self {
206        Self {
207            span: Dummy::dummy(allocator),
208            value: Dummy::dummy(allocator),
209            tail: Dummy::dummy(allocator),
210            lone_surrogates: Dummy::dummy(allocator),
211        }
212    }
213}
214
215impl<'a> Dummy<'a> for TemplateElementValue<'a> {
216    /// Create a dummy [`TemplateElementValue`].
217    ///
218    /// Does not allocate any data into arena.
219    fn dummy(allocator: &'a Allocator) -> Self {
220        Self { raw: Dummy::dummy(allocator), cooked: Dummy::dummy(allocator) }
221    }
222}
223
224impl<'a> Dummy<'a> for MemberExpression<'a> {
225    /// Create a dummy [`MemberExpression`].
226    ///
227    /// Has cost of making 2 allocations (64 bytes).
228    fn dummy(allocator: &'a Allocator) -> Self {
229        Self::StaticMemberExpression(Dummy::dummy(allocator))
230    }
231}
232
233impl<'a> Dummy<'a> for ComputedMemberExpression<'a> {
234    /// Create a dummy [`ComputedMemberExpression`].
235    ///
236    /// Has cost of making 2 allocations (16 bytes).
237    fn dummy(allocator: &'a Allocator) -> Self {
238        Self {
239            span: Dummy::dummy(allocator),
240            object: Dummy::dummy(allocator),
241            expression: Dummy::dummy(allocator),
242            optional: Dummy::dummy(allocator),
243        }
244    }
245}
246
247impl<'a> Dummy<'a> for StaticMemberExpression<'a> {
248    /// Create a dummy [`StaticMemberExpression`].
249    ///
250    /// Has cost of making 1 allocation (8 bytes).
251    fn dummy(allocator: &'a Allocator) -> Self {
252        Self {
253            span: Dummy::dummy(allocator),
254            object: Dummy::dummy(allocator),
255            property: Dummy::dummy(allocator),
256            optional: Dummy::dummy(allocator),
257        }
258    }
259}
260
261impl<'a> Dummy<'a> for PrivateFieldExpression<'a> {
262    /// Create a dummy [`PrivateFieldExpression`].
263    ///
264    /// Has cost of making 1 allocation (8 bytes).
265    fn dummy(allocator: &'a Allocator) -> Self {
266        Self {
267            span: Dummy::dummy(allocator),
268            object: Dummy::dummy(allocator),
269            field: Dummy::dummy(allocator),
270            optional: Dummy::dummy(allocator),
271        }
272    }
273}
274
275impl<'a> Dummy<'a> for CallExpression<'a> {
276    /// Create a dummy [`CallExpression`].
277    ///
278    /// Has cost of making 1 allocation (8 bytes).
279    fn dummy(allocator: &'a Allocator) -> Self {
280        Self {
281            span: Dummy::dummy(allocator),
282            callee: Dummy::dummy(allocator),
283            type_arguments: Dummy::dummy(allocator),
284            arguments: Dummy::dummy(allocator),
285            optional: Dummy::dummy(allocator),
286            pure: Dummy::dummy(allocator),
287        }
288    }
289}
290
291impl<'a> Dummy<'a> for NewExpression<'a> {
292    /// Create a dummy [`NewExpression`].
293    ///
294    /// Has cost of making 1 allocation (8 bytes).
295    fn dummy(allocator: &'a Allocator) -> Self {
296        Self {
297            span: Dummy::dummy(allocator),
298            callee: Dummy::dummy(allocator),
299            type_arguments: Dummy::dummy(allocator),
300            arguments: Dummy::dummy(allocator),
301            pure: Dummy::dummy(allocator),
302        }
303    }
304}
305
306impl<'a> Dummy<'a> for MetaProperty<'a> {
307    /// Create a dummy [`MetaProperty`].
308    ///
309    /// Does not allocate any data into arena.
310    fn dummy(allocator: &'a Allocator) -> Self {
311        Self {
312            span: Dummy::dummy(allocator),
313            meta: Dummy::dummy(allocator),
314            property: Dummy::dummy(allocator),
315        }
316    }
317}
318
319impl<'a> Dummy<'a> for SpreadElement<'a> {
320    /// Create a dummy [`SpreadElement`].
321    ///
322    /// Has cost of making 1 allocation (8 bytes).
323    fn dummy(allocator: &'a Allocator) -> Self {
324        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
325    }
326}
327
328impl<'a> Dummy<'a> for Argument<'a> {
329    /// Create a dummy [`Argument`].
330    ///
331    /// Has cost of making 1 allocation (8 bytes).
332    fn dummy(allocator: &'a Allocator) -> Self {
333        Self::NullLiteral(Dummy::dummy(allocator))
334    }
335}
336
337impl<'a> Dummy<'a> for UpdateExpression<'a> {
338    /// Create a dummy [`UpdateExpression`].
339    ///
340    /// Has cost of making 1 allocation (32 bytes).
341    fn dummy(allocator: &'a Allocator) -> Self {
342        Self {
343            span: Dummy::dummy(allocator),
344            operator: Dummy::dummy(allocator),
345            prefix: Dummy::dummy(allocator),
346            argument: Dummy::dummy(allocator),
347        }
348    }
349}
350
351impl<'a> Dummy<'a> for UnaryExpression<'a> {
352    /// Create a dummy [`UnaryExpression`].
353    ///
354    /// Has cost of making 1 allocation (8 bytes).
355    fn dummy(allocator: &'a Allocator) -> Self {
356        Self {
357            span: Dummy::dummy(allocator),
358            operator: Dummy::dummy(allocator),
359            argument: Dummy::dummy(allocator),
360        }
361    }
362}
363
364impl<'a> Dummy<'a> for BinaryExpression<'a> {
365    /// Create a dummy [`BinaryExpression`].
366    ///
367    /// Has cost of making 2 allocations (16 bytes).
368    fn dummy(allocator: &'a Allocator) -> Self {
369        Self {
370            span: Dummy::dummy(allocator),
371            left: Dummy::dummy(allocator),
372            operator: Dummy::dummy(allocator),
373            right: Dummy::dummy(allocator),
374        }
375    }
376}
377
378impl<'a> Dummy<'a> for PrivateInExpression<'a> {
379    /// Create a dummy [`PrivateInExpression`].
380    ///
381    /// Has cost of making 1 allocation (8 bytes).
382    fn dummy(allocator: &'a Allocator) -> Self {
383        Self {
384            span: Dummy::dummy(allocator),
385            left: Dummy::dummy(allocator),
386            right: Dummy::dummy(allocator),
387        }
388    }
389}
390
391impl<'a> Dummy<'a> for LogicalExpression<'a> {
392    /// Create a dummy [`LogicalExpression`].
393    ///
394    /// Has cost of making 2 allocations (16 bytes).
395    fn dummy(allocator: &'a Allocator) -> Self {
396        Self {
397            span: Dummy::dummy(allocator),
398            left: Dummy::dummy(allocator),
399            operator: Dummy::dummy(allocator),
400            right: Dummy::dummy(allocator),
401        }
402    }
403}
404
405impl<'a> Dummy<'a> for ConditionalExpression<'a> {
406    /// Create a dummy [`ConditionalExpression`].
407    ///
408    /// Has cost of making 3 allocations (24 bytes).
409    fn dummy(allocator: &'a Allocator) -> Self {
410        Self {
411            span: Dummy::dummy(allocator),
412            test: Dummy::dummy(allocator),
413            consequent: Dummy::dummy(allocator),
414            alternate: Dummy::dummy(allocator),
415        }
416    }
417}
418
419impl<'a> Dummy<'a> for AssignmentExpression<'a> {
420    /// Create a dummy [`AssignmentExpression`].
421    ///
422    /// Has cost of making 2 allocations (40 bytes).
423    fn dummy(allocator: &'a Allocator) -> Self {
424        Self {
425            span: Dummy::dummy(allocator),
426            operator: Dummy::dummy(allocator),
427            left: Dummy::dummy(allocator),
428            right: Dummy::dummy(allocator),
429        }
430    }
431}
432
433impl<'a> Dummy<'a> for AssignmentTarget<'a> {
434    /// Create a dummy [`AssignmentTarget`].
435    ///
436    /// Has cost of making 1 allocation (32 bytes).
437    fn dummy(allocator: &'a Allocator) -> Self {
438        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
439    }
440}
441
442impl<'a> Dummy<'a> for SimpleAssignmentTarget<'a> {
443    /// Create a dummy [`SimpleAssignmentTarget`].
444    ///
445    /// Has cost of making 1 allocation (32 bytes).
446    fn dummy(allocator: &'a Allocator) -> Self {
447        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
448    }
449}
450
451impl<'a> Dummy<'a> for AssignmentTargetPattern<'a> {
452    /// Create a dummy [`AssignmentTargetPattern`].
453    ///
454    /// Has cost of making 1 allocation (56 bytes).
455    fn dummy(allocator: &'a Allocator) -> Self {
456        Self::ArrayAssignmentTarget(Dummy::dummy(allocator))
457    }
458}
459
460impl<'a> Dummy<'a> for ArrayAssignmentTarget<'a> {
461    /// Create a dummy [`ArrayAssignmentTarget`].
462    ///
463    /// Does not allocate any data into arena.
464    fn dummy(allocator: &'a Allocator) -> Self {
465        Self {
466            span: Dummy::dummy(allocator),
467            elements: Dummy::dummy(allocator),
468            rest: Dummy::dummy(allocator),
469        }
470    }
471}
472
473impl<'a> Dummy<'a> for ObjectAssignmentTarget<'a> {
474    /// Create a dummy [`ObjectAssignmentTarget`].
475    ///
476    /// Does not allocate any data into arena.
477    fn dummy(allocator: &'a Allocator) -> Self {
478        Self {
479            span: Dummy::dummy(allocator),
480            properties: Dummy::dummy(allocator),
481            rest: Dummy::dummy(allocator),
482        }
483    }
484}
485
486impl<'a> Dummy<'a> for AssignmentTargetRest<'a> {
487    /// Create a dummy [`AssignmentTargetRest`].
488    ///
489    /// Has cost of making 1 allocation (32 bytes).
490    fn dummy(allocator: &'a Allocator) -> Self {
491        Self { span: Dummy::dummy(allocator), target: Dummy::dummy(allocator) }
492    }
493}
494
495impl<'a> Dummy<'a> for AssignmentTargetMaybeDefault<'a> {
496    /// Create a dummy [`AssignmentTargetMaybeDefault`].
497    ///
498    /// Has cost of making 1 allocation (32 bytes).
499    fn dummy(allocator: &'a Allocator) -> Self {
500        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
501    }
502}
503
504impl<'a> Dummy<'a> for AssignmentTargetWithDefault<'a> {
505    /// Create a dummy [`AssignmentTargetWithDefault`].
506    ///
507    /// Has cost of making 2 allocations (40 bytes).
508    fn dummy(allocator: &'a Allocator) -> Self {
509        Self {
510            span: Dummy::dummy(allocator),
511            binding: Dummy::dummy(allocator),
512            init: Dummy::dummy(allocator),
513        }
514    }
515}
516
517impl<'a> Dummy<'a> for AssignmentTargetProperty<'a> {
518    /// Create a dummy [`AssignmentTargetProperty`].
519    ///
520    /// Has cost of making 1 allocation (56 bytes).
521    fn dummy(allocator: &'a Allocator) -> Self {
522        Self::AssignmentTargetPropertyIdentifier(Dummy::dummy(allocator))
523    }
524}
525
526impl<'a> Dummy<'a> for AssignmentTargetPropertyIdentifier<'a> {
527    /// Create a dummy [`AssignmentTargetPropertyIdentifier`].
528    ///
529    /// Does not allocate any data into arena.
530    fn dummy(allocator: &'a Allocator) -> Self {
531        Self {
532            span: Dummy::dummy(allocator),
533            binding: Dummy::dummy(allocator),
534            init: Dummy::dummy(allocator),
535        }
536    }
537}
538
539impl<'a> Dummy<'a> for AssignmentTargetPropertyProperty<'a> {
540    /// Create a dummy [`AssignmentTargetPropertyProperty`].
541    ///
542    /// Has cost of making 2 allocations (40 bytes).
543    fn dummy(allocator: &'a Allocator) -> Self {
544        Self {
545            span: Dummy::dummy(allocator),
546            name: Dummy::dummy(allocator),
547            binding: Dummy::dummy(allocator),
548            computed: Dummy::dummy(allocator),
549        }
550    }
551}
552
553impl<'a> Dummy<'a> for SequenceExpression<'a> {
554    /// Create a dummy [`SequenceExpression`].
555    ///
556    /// Does not allocate any data into arena.
557    fn dummy(allocator: &'a Allocator) -> Self {
558        Self { span: Dummy::dummy(allocator), expressions: Dummy::dummy(allocator) }
559    }
560}
561
562impl<'a> Dummy<'a> for Super {
563    /// Create a dummy [`Super`].
564    ///
565    /// Does not allocate any data into arena.
566    fn dummy(allocator: &'a Allocator) -> Self {
567        Self { span: Dummy::dummy(allocator) }
568    }
569}
570
571impl<'a> Dummy<'a> for AwaitExpression<'a> {
572    /// Create a dummy [`AwaitExpression`].
573    ///
574    /// Has cost of making 1 allocation (8 bytes).
575    fn dummy(allocator: &'a Allocator) -> Self {
576        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
577    }
578}
579
580impl<'a> Dummy<'a> for ChainExpression<'a> {
581    /// Create a dummy [`ChainExpression`].
582    ///
583    /// Has cost of making 2 allocations (32 bytes).
584    fn dummy(allocator: &'a Allocator) -> Self {
585        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
586    }
587}
588
589impl<'a> Dummy<'a> for ChainElement<'a> {
590    /// Create a dummy [`ChainElement`].
591    ///
592    /// Has cost of making 2 allocations (32 bytes).
593    fn dummy(allocator: &'a Allocator) -> Self {
594        Self::TSNonNullExpression(Dummy::dummy(allocator))
595    }
596}
597
598impl<'a> Dummy<'a> for ParenthesizedExpression<'a> {
599    /// Create a dummy [`ParenthesizedExpression`].
600    ///
601    /// Has cost of making 1 allocation (8 bytes).
602    fn dummy(allocator: &'a Allocator) -> Self {
603        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
604    }
605}
606
607impl<'a> Dummy<'a> for Statement<'a> {
608    /// Create a dummy [`Statement`].
609    ///
610    /// Has cost of making 1 allocation (8 bytes).
611    fn dummy(allocator: &'a Allocator) -> Self {
612        Self::DebuggerStatement(Dummy::dummy(allocator))
613    }
614}
615
616impl<'a> Dummy<'a> for Directive<'a> {
617    /// Create a dummy [`Directive`].
618    ///
619    /// Does not allocate any data into arena.
620    fn dummy(allocator: &'a Allocator) -> Self {
621        Self {
622            span: Dummy::dummy(allocator),
623            expression: Dummy::dummy(allocator),
624            directive: Dummy::dummy(allocator),
625        }
626    }
627}
628
629impl<'a> Dummy<'a> for Hashbang<'a> {
630    /// Create a dummy [`Hashbang`].
631    ///
632    /// Does not allocate any data into arena.
633    fn dummy(allocator: &'a Allocator) -> Self {
634        Self { span: Dummy::dummy(allocator), value: Dummy::dummy(allocator) }
635    }
636}
637
638impl<'a> Dummy<'a> for BlockStatement<'a> {
639    /// Create a dummy [`BlockStatement`].
640    ///
641    /// Does not allocate any data into arena.
642    fn dummy(allocator: &'a Allocator) -> Self {
643        Self {
644            span: Dummy::dummy(allocator),
645            body: Dummy::dummy(allocator),
646            scope_id: Dummy::dummy(allocator),
647        }
648    }
649}
650
651impl<'a> Dummy<'a> for Declaration<'a> {
652    /// Create a dummy [`Declaration`].
653    ///
654    /// Has cost of making 1 allocation (40 bytes).
655    fn dummy(allocator: &'a Allocator) -> Self {
656        Self::VariableDeclaration(Dummy::dummy(allocator))
657    }
658}
659
660impl<'a> Dummy<'a> for VariableDeclaration<'a> {
661    /// Create a dummy [`VariableDeclaration`].
662    ///
663    /// Does not allocate any data into arena.
664    fn dummy(allocator: &'a Allocator) -> Self {
665        Self {
666            span: Dummy::dummy(allocator),
667            kind: Dummy::dummy(allocator),
668            declarations: Dummy::dummy(allocator),
669            declare: Dummy::dummy(allocator),
670        }
671    }
672}
673
674impl<'a> Dummy<'a> for VariableDeclarationKind {
675    /// Create a dummy [`VariableDeclarationKind`].
676    ///
677    /// Does not allocate any data into arena.
678    #[inline(always)]
679    fn dummy(allocator: &'a Allocator) -> Self {
680        Self::Var
681    }
682}
683
684impl<'a> Dummy<'a> for VariableDeclarator<'a> {
685    /// Create a dummy [`VariableDeclarator`].
686    ///
687    /// Has cost of making 1 allocation (32 bytes).
688    fn dummy(allocator: &'a Allocator) -> Self {
689        Self {
690            span: Dummy::dummy(allocator),
691            kind: Dummy::dummy(allocator),
692            id: Dummy::dummy(allocator),
693            init: Dummy::dummy(allocator),
694            definite: Dummy::dummy(allocator),
695        }
696    }
697}
698
699impl<'a> Dummy<'a> for EmptyStatement {
700    /// Create a dummy [`EmptyStatement`].
701    ///
702    /// Does not allocate any data into arena.
703    fn dummy(allocator: &'a Allocator) -> Self {
704        Self { span: Dummy::dummy(allocator) }
705    }
706}
707
708impl<'a> Dummy<'a> for ExpressionStatement<'a> {
709    /// Create a dummy [`ExpressionStatement`].
710    ///
711    /// Has cost of making 1 allocation (8 bytes).
712    fn dummy(allocator: &'a Allocator) -> Self {
713        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
714    }
715}
716
717impl<'a> Dummy<'a> for IfStatement<'a> {
718    /// Create a dummy [`IfStatement`].
719    ///
720    /// Has cost of making 2 allocations (16 bytes).
721    fn dummy(allocator: &'a Allocator) -> Self {
722        Self {
723            span: Dummy::dummy(allocator),
724            test: Dummy::dummy(allocator),
725            consequent: Dummy::dummy(allocator),
726            alternate: Dummy::dummy(allocator),
727        }
728    }
729}
730
731impl<'a> Dummy<'a> for DoWhileStatement<'a> {
732    /// Create a dummy [`DoWhileStatement`].
733    ///
734    /// Has cost of making 2 allocations (16 bytes).
735    fn dummy(allocator: &'a Allocator) -> Self {
736        Self {
737            span: Dummy::dummy(allocator),
738            body: Dummy::dummy(allocator),
739            test: Dummy::dummy(allocator),
740        }
741    }
742}
743
744impl<'a> Dummy<'a> for WhileStatement<'a> {
745    /// Create a dummy [`WhileStatement`].
746    ///
747    /// Has cost of making 2 allocations (16 bytes).
748    fn dummy(allocator: &'a Allocator) -> Self {
749        Self {
750            span: Dummy::dummy(allocator),
751            test: Dummy::dummy(allocator),
752            body: Dummy::dummy(allocator),
753        }
754    }
755}
756
757impl<'a> Dummy<'a> for ForStatement<'a> {
758    /// Create a dummy [`ForStatement`].
759    ///
760    /// Has cost of making 1 allocation (8 bytes).
761    fn dummy(allocator: &'a Allocator) -> Self {
762        Self {
763            span: Dummy::dummy(allocator),
764            init: Dummy::dummy(allocator),
765            test: Dummy::dummy(allocator),
766            update: Dummy::dummy(allocator),
767            body: Dummy::dummy(allocator),
768            scope_id: Dummy::dummy(allocator),
769        }
770    }
771}
772
773impl<'a> Dummy<'a> for ForStatementInit<'a> {
774    /// Create a dummy [`ForStatementInit`].
775    ///
776    /// Has cost of making 1 allocation (8 bytes).
777    fn dummy(allocator: &'a Allocator) -> Self {
778        Self::NullLiteral(Dummy::dummy(allocator))
779    }
780}
781
782impl<'a> Dummy<'a> for ForInStatement<'a> {
783    /// Create a dummy [`ForInStatement`].
784    ///
785    /// Has cost of making 3 allocations (48 bytes).
786    fn dummy(allocator: &'a Allocator) -> Self {
787        Self {
788            span: Dummy::dummy(allocator),
789            left: Dummy::dummy(allocator),
790            right: Dummy::dummy(allocator),
791            body: Dummy::dummy(allocator),
792            scope_id: Dummy::dummy(allocator),
793        }
794    }
795}
796
797impl<'a> Dummy<'a> for ForStatementLeft<'a> {
798    /// Create a dummy [`ForStatementLeft`].
799    ///
800    /// Has cost of making 1 allocation (32 bytes).
801    fn dummy(allocator: &'a Allocator) -> Self {
802        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
803    }
804}
805
806impl<'a> Dummy<'a> for ForOfStatement<'a> {
807    /// Create a dummy [`ForOfStatement`].
808    ///
809    /// Has cost of making 3 allocations (48 bytes).
810    fn dummy(allocator: &'a Allocator) -> Self {
811        Self {
812            span: Dummy::dummy(allocator),
813            r#await: Dummy::dummy(allocator),
814            left: Dummy::dummy(allocator),
815            right: Dummy::dummy(allocator),
816            body: Dummy::dummy(allocator),
817            scope_id: Dummy::dummy(allocator),
818        }
819    }
820}
821
822impl<'a> Dummy<'a> for ContinueStatement<'a> {
823    /// Create a dummy [`ContinueStatement`].
824    ///
825    /// Does not allocate any data into arena.
826    fn dummy(allocator: &'a Allocator) -> Self {
827        Self { span: Dummy::dummy(allocator), label: Dummy::dummy(allocator) }
828    }
829}
830
831impl<'a> Dummy<'a> for BreakStatement<'a> {
832    /// Create a dummy [`BreakStatement`].
833    ///
834    /// Does not allocate any data into arena.
835    fn dummy(allocator: &'a Allocator) -> Self {
836        Self { span: Dummy::dummy(allocator), label: Dummy::dummy(allocator) }
837    }
838}
839
840impl<'a> Dummy<'a> for ReturnStatement<'a> {
841    /// Create a dummy [`ReturnStatement`].
842    ///
843    /// Does not allocate any data into arena.
844    fn dummy(allocator: &'a Allocator) -> Self {
845        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
846    }
847}
848
849impl<'a> Dummy<'a> for WithStatement<'a> {
850    /// Create a dummy [`WithStatement`].
851    ///
852    /// Has cost of making 2 allocations (16 bytes).
853    fn dummy(allocator: &'a Allocator) -> Self {
854        Self {
855            span: Dummy::dummy(allocator),
856            object: Dummy::dummy(allocator),
857            body: Dummy::dummy(allocator),
858        }
859    }
860}
861
862impl<'a> Dummy<'a> for SwitchStatement<'a> {
863    /// Create a dummy [`SwitchStatement`].
864    ///
865    /// Has cost of making 1 allocation (8 bytes).
866    fn dummy(allocator: &'a Allocator) -> Self {
867        Self {
868            span: Dummy::dummy(allocator),
869            discriminant: Dummy::dummy(allocator),
870            cases: Dummy::dummy(allocator),
871            scope_id: Dummy::dummy(allocator),
872        }
873    }
874}
875
876impl<'a> Dummy<'a> for SwitchCase<'a> {
877    /// Create a dummy [`SwitchCase`].
878    ///
879    /// Does not allocate any data into arena.
880    fn dummy(allocator: &'a Allocator) -> Self {
881        Self {
882            span: Dummy::dummy(allocator),
883            test: Dummy::dummy(allocator),
884            consequent: Dummy::dummy(allocator),
885        }
886    }
887}
888
889impl<'a> Dummy<'a> for LabeledStatement<'a> {
890    /// Create a dummy [`LabeledStatement`].
891    ///
892    /// Has cost of making 1 allocation (8 bytes).
893    fn dummy(allocator: &'a Allocator) -> Self {
894        Self {
895            span: Dummy::dummy(allocator),
896            label: Dummy::dummy(allocator),
897            body: Dummy::dummy(allocator),
898        }
899    }
900}
901
902impl<'a> Dummy<'a> for ThrowStatement<'a> {
903    /// Create a dummy [`ThrowStatement`].
904    ///
905    /// Has cost of making 1 allocation (8 bytes).
906    fn dummy(allocator: &'a Allocator) -> Self {
907        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
908    }
909}
910
911impl<'a> Dummy<'a> for TryStatement<'a> {
912    /// Create a dummy [`TryStatement`].
913    ///
914    /// Has cost of making 1 allocation (40 bytes).
915    fn dummy(allocator: &'a Allocator) -> Self {
916        Self {
917            span: Dummy::dummy(allocator),
918            block: Dummy::dummy(allocator),
919            handler: Dummy::dummy(allocator),
920            finalizer: Dummy::dummy(allocator),
921        }
922    }
923}
924
925impl<'a> Dummy<'a> for CatchClause<'a> {
926    /// Create a dummy [`CatchClause`].
927    ///
928    /// Has cost of making 1 allocation (40 bytes).
929    fn dummy(allocator: &'a Allocator) -> Self {
930        Self {
931            span: Dummy::dummy(allocator),
932            param: Dummy::dummy(allocator),
933            body: Dummy::dummy(allocator),
934            scope_id: Dummy::dummy(allocator),
935        }
936    }
937}
938
939impl<'a> Dummy<'a> for CatchParameter<'a> {
940    /// Create a dummy [`CatchParameter`].
941    ///
942    /// Has cost of making 1 allocation (32 bytes).
943    fn dummy(allocator: &'a Allocator) -> Self {
944        Self { span: Dummy::dummy(allocator), pattern: Dummy::dummy(allocator) }
945    }
946}
947
948impl<'a> Dummy<'a> for DebuggerStatement {
949    /// Create a dummy [`DebuggerStatement`].
950    ///
951    /// Does not allocate any data into arena.
952    fn dummy(allocator: &'a Allocator) -> Self {
953        Self { span: Dummy::dummy(allocator) }
954    }
955}
956
957impl<'a> Dummy<'a> for BindingPattern<'a> {
958    /// Create a dummy [`BindingPattern`].
959    ///
960    /// Has cost of making 1 allocation (32 bytes).
961    fn dummy(allocator: &'a Allocator) -> Self {
962        Self {
963            kind: Dummy::dummy(allocator),
964            type_annotation: Dummy::dummy(allocator),
965            optional: Dummy::dummy(allocator),
966        }
967    }
968}
969
970impl<'a> Dummy<'a> for BindingPatternKind<'a> {
971    /// Create a dummy [`BindingPatternKind`].
972    ///
973    /// Has cost of making 1 allocation (32 bytes).
974    fn dummy(allocator: &'a Allocator) -> Self {
975        Self::BindingIdentifier(Dummy::dummy(allocator))
976    }
977}
978
979impl<'a> Dummy<'a> for AssignmentPattern<'a> {
980    /// Create a dummy [`AssignmentPattern`].
981    ///
982    /// Has cost of making 2 allocations (40 bytes).
983    fn dummy(allocator: &'a Allocator) -> Self {
984        Self {
985            span: Dummy::dummy(allocator),
986            left: Dummy::dummy(allocator),
987            right: Dummy::dummy(allocator),
988        }
989    }
990}
991
992impl<'a> Dummy<'a> for ObjectPattern<'a> {
993    /// Create a dummy [`ObjectPattern`].
994    ///
995    /// Does not allocate any data into arena.
996    fn dummy(allocator: &'a Allocator) -> Self {
997        Self {
998            span: Dummy::dummy(allocator),
999            properties: Dummy::dummy(allocator),
1000            rest: Dummy::dummy(allocator),
1001        }
1002    }
1003}
1004
1005impl<'a> Dummy<'a> for BindingProperty<'a> {
1006    /// Create a dummy [`BindingProperty`].
1007    ///
1008    /// Has cost of making 2 allocations (40 bytes).
1009    fn dummy(allocator: &'a Allocator) -> Self {
1010        Self {
1011            span: Dummy::dummy(allocator),
1012            key: Dummy::dummy(allocator),
1013            value: Dummy::dummy(allocator),
1014            shorthand: Dummy::dummy(allocator),
1015            computed: Dummy::dummy(allocator),
1016        }
1017    }
1018}
1019
1020impl<'a> Dummy<'a> for ArrayPattern<'a> {
1021    /// Create a dummy [`ArrayPattern`].
1022    ///
1023    /// Does not allocate any data into arena.
1024    fn dummy(allocator: &'a Allocator) -> Self {
1025        Self {
1026            span: Dummy::dummy(allocator),
1027            elements: Dummy::dummy(allocator),
1028            rest: Dummy::dummy(allocator),
1029        }
1030    }
1031}
1032
1033impl<'a> Dummy<'a> for BindingRestElement<'a> {
1034    /// Create a dummy [`BindingRestElement`].
1035    ///
1036    /// Has cost of making 1 allocation (32 bytes).
1037    fn dummy(allocator: &'a Allocator) -> Self {
1038        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
1039    }
1040}
1041
1042impl<'a> Dummy<'a> for Function<'a> {
1043    /// Create a dummy [`Function`].
1044    ///
1045    /// Has cost of making 1 allocation (48 bytes).
1046    fn dummy(allocator: &'a Allocator) -> Self {
1047        Self {
1048            span: Dummy::dummy(allocator),
1049            r#type: Dummy::dummy(allocator),
1050            id: Dummy::dummy(allocator),
1051            generator: Dummy::dummy(allocator),
1052            r#async: Dummy::dummy(allocator),
1053            declare: Dummy::dummy(allocator),
1054            type_parameters: Dummy::dummy(allocator),
1055            this_param: Dummy::dummy(allocator),
1056            params: Dummy::dummy(allocator),
1057            return_type: Dummy::dummy(allocator),
1058            body: Dummy::dummy(allocator),
1059            scope_id: Dummy::dummy(allocator),
1060            pure: Dummy::dummy(allocator),
1061        }
1062    }
1063}
1064
1065impl<'a> Dummy<'a> for FunctionType {
1066    /// Create a dummy [`FunctionType`].
1067    ///
1068    /// Does not allocate any data into arena.
1069    #[inline(always)]
1070    fn dummy(allocator: &'a Allocator) -> Self {
1071        Self::FunctionDeclaration
1072    }
1073}
1074
1075impl<'a> Dummy<'a> for FormalParameters<'a> {
1076    /// Create a dummy [`FormalParameters`].
1077    ///
1078    /// Does not allocate any data into arena.
1079    fn dummy(allocator: &'a Allocator) -> Self {
1080        Self {
1081            span: Dummy::dummy(allocator),
1082            kind: Dummy::dummy(allocator),
1083            items: Dummy::dummy(allocator),
1084            rest: Dummy::dummy(allocator),
1085        }
1086    }
1087}
1088
1089impl<'a> Dummy<'a> for FormalParameter<'a> {
1090    /// Create a dummy [`FormalParameter`].
1091    ///
1092    /// Has cost of making 1 allocation (32 bytes).
1093    fn dummy(allocator: &'a Allocator) -> Self {
1094        Self {
1095            span: Dummy::dummy(allocator),
1096            decorators: Dummy::dummy(allocator),
1097            pattern: Dummy::dummy(allocator),
1098            accessibility: Dummy::dummy(allocator),
1099            readonly: Dummy::dummy(allocator),
1100            r#override: Dummy::dummy(allocator),
1101        }
1102    }
1103}
1104
1105impl<'a> Dummy<'a> for FormalParameterKind {
1106    /// Create a dummy [`FormalParameterKind`].
1107    ///
1108    /// Does not allocate any data into arena.
1109    #[inline(always)]
1110    fn dummy(allocator: &'a Allocator) -> Self {
1111        Self::FormalParameter
1112    }
1113}
1114
1115impl<'a> Dummy<'a> for FunctionBody<'a> {
1116    /// Create a dummy [`FunctionBody`].
1117    ///
1118    /// Does not allocate any data into arena.
1119    fn dummy(allocator: &'a Allocator) -> Self {
1120        Self {
1121            span: Dummy::dummy(allocator),
1122            directives: Dummy::dummy(allocator),
1123            statements: Dummy::dummy(allocator),
1124        }
1125    }
1126}
1127
1128impl<'a> Dummy<'a> for ArrowFunctionExpression<'a> {
1129    /// Create a dummy [`ArrowFunctionExpression`].
1130    ///
1131    /// Has cost of making 2 allocations (104 bytes).
1132    fn dummy(allocator: &'a Allocator) -> Self {
1133        Self {
1134            span: Dummy::dummy(allocator),
1135            expression: Dummy::dummy(allocator),
1136            r#async: Dummy::dummy(allocator),
1137            type_parameters: Dummy::dummy(allocator),
1138            params: Dummy::dummy(allocator),
1139            return_type: Dummy::dummy(allocator),
1140            body: Dummy::dummy(allocator),
1141            scope_id: Dummy::dummy(allocator),
1142            pure: Dummy::dummy(allocator),
1143        }
1144    }
1145}
1146
1147impl<'a> Dummy<'a> for YieldExpression<'a> {
1148    /// Create a dummy [`YieldExpression`].
1149    ///
1150    /// Does not allocate any data into arena.
1151    fn dummy(allocator: &'a Allocator) -> Self {
1152        Self {
1153            span: Dummy::dummy(allocator),
1154            delegate: Dummy::dummy(allocator),
1155            argument: Dummy::dummy(allocator),
1156        }
1157    }
1158}
1159
1160impl<'a> Dummy<'a> for Class<'a> {
1161    /// Create a dummy [`Class`].
1162    ///
1163    /// Has cost of making 1 allocation (32 bytes).
1164    fn dummy(allocator: &'a Allocator) -> Self {
1165        Self {
1166            span: Dummy::dummy(allocator),
1167            r#type: Dummy::dummy(allocator),
1168            decorators: Dummy::dummy(allocator),
1169            id: Dummy::dummy(allocator),
1170            type_parameters: Dummy::dummy(allocator),
1171            super_class: Dummy::dummy(allocator),
1172            super_type_arguments: Dummy::dummy(allocator),
1173            implements: Dummy::dummy(allocator),
1174            body: Dummy::dummy(allocator),
1175            r#abstract: Dummy::dummy(allocator),
1176            declare: Dummy::dummy(allocator),
1177            scope_id: Dummy::dummy(allocator),
1178        }
1179    }
1180}
1181
1182impl<'a> Dummy<'a> for ClassType {
1183    /// Create a dummy [`ClassType`].
1184    ///
1185    /// Does not allocate any data into arena.
1186    #[inline(always)]
1187    fn dummy(allocator: &'a Allocator) -> Self {
1188        Self::ClassDeclaration
1189    }
1190}
1191
1192impl<'a> Dummy<'a> for ClassBody<'a> {
1193    /// Create a dummy [`ClassBody`].
1194    ///
1195    /// Does not allocate any data into arena.
1196    fn dummy(allocator: &'a Allocator) -> Self {
1197        Self { span: Dummy::dummy(allocator), body: Dummy::dummy(allocator) }
1198    }
1199}
1200
1201impl<'a> Dummy<'a> for ClassElement<'a> {
1202    /// Create a dummy [`ClassElement`].
1203    ///
1204    /// Has cost of making 1 allocation (40 bytes).
1205    fn dummy(allocator: &'a Allocator) -> Self {
1206        Self::StaticBlock(Dummy::dummy(allocator))
1207    }
1208}
1209
1210impl<'a> Dummy<'a> for MethodDefinition<'a> {
1211    /// Create a dummy [`MethodDefinition`].
1212    ///
1213    /// Has cost of making 3 allocations (152 bytes).
1214    fn dummy(allocator: &'a Allocator) -> Self {
1215        Self {
1216            span: Dummy::dummy(allocator),
1217            r#type: Dummy::dummy(allocator),
1218            decorators: Dummy::dummy(allocator),
1219            key: Dummy::dummy(allocator),
1220            value: Dummy::dummy(allocator),
1221            kind: Dummy::dummy(allocator),
1222            computed: Dummy::dummy(allocator),
1223            r#static: Dummy::dummy(allocator),
1224            r#override: Dummy::dummy(allocator),
1225            optional: Dummy::dummy(allocator),
1226            accessibility: Dummy::dummy(allocator),
1227        }
1228    }
1229}
1230
1231impl<'a> Dummy<'a> for MethodDefinitionType {
1232    /// Create a dummy [`MethodDefinitionType`].
1233    ///
1234    /// Does not allocate any data into arena.
1235    #[inline(always)]
1236    fn dummy(allocator: &'a Allocator) -> Self {
1237        Self::MethodDefinition
1238    }
1239}
1240
1241impl<'a> Dummy<'a> for PropertyDefinition<'a> {
1242    /// Create a dummy [`PropertyDefinition`].
1243    ///
1244    /// Has cost of making 1 allocation (8 bytes).
1245    fn dummy(allocator: &'a Allocator) -> Self {
1246        Self {
1247            span: Dummy::dummy(allocator),
1248            r#type: Dummy::dummy(allocator),
1249            decorators: Dummy::dummy(allocator),
1250            key: Dummy::dummy(allocator),
1251            type_annotation: Dummy::dummy(allocator),
1252            value: Dummy::dummy(allocator),
1253            computed: Dummy::dummy(allocator),
1254            r#static: Dummy::dummy(allocator),
1255            declare: Dummy::dummy(allocator),
1256            r#override: Dummy::dummy(allocator),
1257            optional: Dummy::dummy(allocator),
1258            definite: Dummy::dummy(allocator),
1259            readonly: Dummy::dummy(allocator),
1260            accessibility: Dummy::dummy(allocator),
1261        }
1262    }
1263}
1264
1265impl<'a> Dummy<'a> for PropertyDefinitionType {
1266    /// Create a dummy [`PropertyDefinitionType`].
1267    ///
1268    /// Does not allocate any data into arena.
1269    #[inline(always)]
1270    fn dummy(allocator: &'a Allocator) -> Self {
1271        Self::PropertyDefinition
1272    }
1273}
1274
1275impl<'a> Dummy<'a> for MethodDefinitionKind {
1276    /// Create a dummy [`MethodDefinitionKind`].
1277    ///
1278    /// Does not allocate any data into arena.
1279    #[inline(always)]
1280    fn dummy(allocator: &'a Allocator) -> Self {
1281        Self::Constructor
1282    }
1283}
1284
1285impl<'a> Dummy<'a> for PrivateIdentifier<'a> {
1286    /// Create a dummy [`PrivateIdentifier`].
1287    ///
1288    /// Does not allocate any data into arena.
1289    fn dummy(allocator: &'a Allocator) -> Self {
1290        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1291    }
1292}
1293
1294impl<'a> Dummy<'a> for StaticBlock<'a> {
1295    /// Create a dummy [`StaticBlock`].
1296    ///
1297    /// Does not allocate any data into arena.
1298    fn dummy(allocator: &'a Allocator) -> Self {
1299        Self {
1300            span: Dummy::dummy(allocator),
1301            body: Dummy::dummy(allocator),
1302            scope_id: Dummy::dummy(allocator),
1303        }
1304    }
1305}
1306
1307impl<'a> Dummy<'a> for ModuleDeclaration<'a> {
1308    /// Create a dummy [`ModuleDeclaration`].
1309    ///
1310    /// Has cost of making 1 allocation (32 bytes).
1311    fn dummy(allocator: &'a Allocator) -> Self {
1312        Self::TSNamespaceExportDeclaration(Dummy::dummy(allocator))
1313    }
1314}
1315
1316impl<'a> Dummy<'a> for AccessorPropertyType {
1317    /// Create a dummy [`AccessorPropertyType`].
1318    ///
1319    /// Does not allocate any data into arena.
1320    #[inline(always)]
1321    fn dummy(allocator: &'a Allocator) -> Self {
1322        Self::AccessorProperty
1323    }
1324}
1325
1326impl<'a> Dummy<'a> for AccessorProperty<'a> {
1327    /// Create a dummy [`AccessorProperty`].
1328    ///
1329    /// Has cost of making 1 allocation (8 bytes).
1330    fn dummy(allocator: &'a Allocator) -> Self {
1331        Self {
1332            span: Dummy::dummy(allocator),
1333            r#type: Dummy::dummy(allocator),
1334            decorators: Dummy::dummy(allocator),
1335            key: Dummy::dummy(allocator),
1336            type_annotation: Dummy::dummy(allocator),
1337            value: Dummy::dummy(allocator),
1338            computed: Dummy::dummy(allocator),
1339            r#static: Dummy::dummy(allocator),
1340            r#override: Dummy::dummy(allocator),
1341            definite: Dummy::dummy(allocator),
1342            accessibility: Dummy::dummy(allocator),
1343        }
1344    }
1345}
1346
1347impl<'a> Dummy<'a> for ImportExpression<'a> {
1348    /// Create a dummy [`ImportExpression`].
1349    ///
1350    /// Has cost of making 1 allocation (8 bytes).
1351    fn dummy(allocator: &'a Allocator) -> Self {
1352        Self {
1353            span: Dummy::dummy(allocator),
1354            source: Dummy::dummy(allocator),
1355            options: Dummy::dummy(allocator),
1356            phase: Dummy::dummy(allocator),
1357        }
1358    }
1359}
1360
1361impl<'a> Dummy<'a> for ImportDeclaration<'a> {
1362    /// Create a dummy [`ImportDeclaration`].
1363    ///
1364    /// Does not allocate any data into arena.
1365    fn dummy(allocator: &'a Allocator) -> Self {
1366        Self {
1367            span: Dummy::dummy(allocator),
1368            specifiers: Dummy::dummy(allocator),
1369            source: Dummy::dummy(allocator),
1370            phase: Dummy::dummy(allocator),
1371            with_clause: Dummy::dummy(allocator),
1372            import_kind: Dummy::dummy(allocator),
1373        }
1374    }
1375}
1376
1377impl<'a> Dummy<'a> for ImportPhase {
1378    /// Create a dummy [`ImportPhase`].
1379    ///
1380    /// Does not allocate any data into arena.
1381    #[inline(always)]
1382    fn dummy(allocator: &'a Allocator) -> Self {
1383        Self::Source
1384    }
1385}
1386
1387impl<'a> Dummy<'a> for ImportDeclarationSpecifier<'a> {
1388    /// Create a dummy [`ImportDeclarationSpecifier`].
1389    ///
1390    /// Has cost of making 1 allocation (40 bytes).
1391    fn dummy(allocator: &'a Allocator) -> Self {
1392        Self::ImportDefaultSpecifier(Dummy::dummy(allocator))
1393    }
1394}
1395
1396impl<'a> Dummy<'a> for ImportSpecifier<'a> {
1397    /// Create a dummy [`ImportSpecifier`].
1398    ///
1399    /// Does not allocate any data into arena.
1400    fn dummy(allocator: &'a Allocator) -> Self {
1401        Self {
1402            span: Dummy::dummy(allocator),
1403            imported: Dummy::dummy(allocator),
1404            local: Dummy::dummy(allocator),
1405            import_kind: Dummy::dummy(allocator),
1406        }
1407    }
1408}
1409
1410impl<'a> Dummy<'a> for ImportDefaultSpecifier<'a> {
1411    /// Create a dummy [`ImportDefaultSpecifier`].
1412    ///
1413    /// Does not allocate any data into arena.
1414    fn dummy(allocator: &'a Allocator) -> Self {
1415        Self { span: Dummy::dummy(allocator), local: Dummy::dummy(allocator) }
1416    }
1417}
1418
1419impl<'a> Dummy<'a> for ImportNamespaceSpecifier<'a> {
1420    /// Create a dummy [`ImportNamespaceSpecifier`].
1421    ///
1422    /// Does not allocate any data into arena.
1423    fn dummy(allocator: &'a Allocator) -> Self {
1424        Self { span: Dummy::dummy(allocator), local: Dummy::dummy(allocator) }
1425    }
1426}
1427
1428impl<'a> Dummy<'a> for WithClause<'a> {
1429    /// Create a dummy [`WithClause`].
1430    ///
1431    /// Does not allocate any data into arena.
1432    fn dummy(allocator: &'a Allocator) -> Self {
1433        Self {
1434            span: Dummy::dummy(allocator),
1435            attributes_keyword: Dummy::dummy(allocator),
1436            with_entries: Dummy::dummy(allocator),
1437        }
1438    }
1439}
1440
1441impl<'a> Dummy<'a> for ImportAttribute<'a> {
1442    /// Create a dummy [`ImportAttribute`].
1443    ///
1444    /// Does not allocate any data into arena.
1445    fn dummy(allocator: &'a Allocator) -> Self {
1446        Self {
1447            span: Dummy::dummy(allocator),
1448            key: Dummy::dummy(allocator),
1449            value: Dummy::dummy(allocator),
1450        }
1451    }
1452}
1453
1454impl<'a> Dummy<'a> for ImportAttributeKey<'a> {
1455    /// Create a dummy [`ImportAttributeKey`].
1456    ///
1457    /// Does not allocate any data into arena.
1458    fn dummy(allocator: &'a Allocator) -> Self {
1459        Self::Identifier(Dummy::dummy(allocator))
1460    }
1461}
1462
1463impl<'a> Dummy<'a> for ExportNamedDeclaration<'a> {
1464    /// Create a dummy [`ExportNamedDeclaration`].
1465    ///
1466    /// Does not allocate any data into arena.
1467    fn dummy(allocator: &'a Allocator) -> Self {
1468        Self {
1469            span: Dummy::dummy(allocator),
1470            declaration: Dummy::dummy(allocator),
1471            specifiers: Dummy::dummy(allocator),
1472            source: Dummy::dummy(allocator),
1473            export_kind: Dummy::dummy(allocator),
1474            with_clause: Dummy::dummy(allocator),
1475        }
1476    }
1477}
1478
1479impl<'a> Dummy<'a> for ExportDefaultDeclaration<'a> {
1480    /// Create a dummy [`ExportDefaultDeclaration`].
1481    ///
1482    /// Has cost of making 1 allocation (8 bytes).
1483    fn dummy(allocator: &'a Allocator) -> Self {
1484        Self {
1485            span: Dummy::dummy(allocator),
1486            exported: Dummy::dummy(allocator),
1487            declaration: Dummy::dummy(allocator),
1488        }
1489    }
1490}
1491
1492impl<'a> Dummy<'a> for ExportAllDeclaration<'a> {
1493    /// Create a dummy [`ExportAllDeclaration`].
1494    ///
1495    /// Does not allocate any data into arena.
1496    fn dummy(allocator: &'a Allocator) -> Self {
1497        Self {
1498            span: Dummy::dummy(allocator),
1499            exported: Dummy::dummy(allocator),
1500            source: Dummy::dummy(allocator),
1501            with_clause: Dummy::dummy(allocator),
1502            export_kind: Dummy::dummy(allocator),
1503        }
1504    }
1505}
1506
1507impl<'a> Dummy<'a> for ExportSpecifier<'a> {
1508    /// Create a dummy [`ExportSpecifier`].
1509    ///
1510    /// Does not allocate any data into arena.
1511    fn dummy(allocator: &'a Allocator) -> Self {
1512        Self {
1513            span: Dummy::dummy(allocator),
1514            local: Dummy::dummy(allocator),
1515            exported: Dummy::dummy(allocator),
1516            export_kind: Dummy::dummy(allocator),
1517        }
1518    }
1519}
1520
1521impl<'a> Dummy<'a> for ExportDefaultDeclarationKind<'a> {
1522    /// Create a dummy [`ExportDefaultDeclarationKind`].
1523    ///
1524    /// Has cost of making 1 allocation (8 bytes).
1525    fn dummy(allocator: &'a Allocator) -> Self {
1526        Self::NullLiteral(Dummy::dummy(allocator))
1527    }
1528}
1529
1530impl<'a> Dummy<'a> for ModuleExportName<'a> {
1531    /// Create a dummy [`ModuleExportName`].
1532    ///
1533    /// Does not allocate any data into arena.
1534    fn dummy(allocator: &'a Allocator) -> Self {
1535        Self::IdentifierName(Dummy::dummy(allocator))
1536    }
1537}
1538
1539impl<'a> Dummy<'a> for V8IntrinsicExpression<'a> {
1540    /// Create a dummy [`V8IntrinsicExpression`].
1541    ///
1542    /// Does not allocate any data into arena.
1543    fn dummy(allocator: &'a Allocator) -> Self {
1544        Self {
1545            span: Dummy::dummy(allocator),
1546            name: Dummy::dummy(allocator),
1547            arguments: Dummy::dummy(allocator),
1548        }
1549    }
1550}
1551
1552impl<'a> Dummy<'a> for BooleanLiteral {
1553    /// Create a dummy [`BooleanLiteral`].
1554    ///
1555    /// Does not allocate any data into arena.
1556    fn dummy(allocator: &'a Allocator) -> Self {
1557        Self { span: Dummy::dummy(allocator), value: Dummy::dummy(allocator) }
1558    }
1559}
1560
1561impl<'a> Dummy<'a> for NullLiteral {
1562    /// Create a dummy [`NullLiteral`].
1563    ///
1564    /// Does not allocate any data into arena.
1565    fn dummy(allocator: &'a Allocator) -> Self {
1566        Self { span: Dummy::dummy(allocator) }
1567    }
1568}
1569
1570impl<'a> Dummy<'a> for NumericLiteral<'a> {
1571    /// Create a dummy [`NumericLiteral`].
1572    ///
1573    /// Does not allocate any data into arena.
1574    fn dummy(allocator: &'a Allocator) -> Self {
1575        Self {
1576            span: Dummy::dummy(allocator),
1577            value: Dummy::dummy(allocator),
1578            raw: Dummy::dummy(allocator),
1579            base: Dummy::dummy(allocator),
1580        }
1581    }
1582}
1583
1584impl<'a> Dummy<'a> for StringLiteral<'a> {
1585    /// Create a dummy [`StringLiteral`].
1586    ///
1587    /// Does not allocate any data into arena.
1588    fn dummy(allocator: &'a Allocator) -> Self {
1589        Self {
1590            span: Dummy::dummy(allocator),
1591            value: Dummy::dummy(allocator),
1592            raw: Dummy::dummy(allocator),
1593            lone_surrogates: Dummy::dummy(allocator),
1594        }
1595    }
1596}
1597
1598impl<'a> Dummy<'a> for BigIntLiteral<'a> {
1599    /// Create a dummy [`BigIntLiteral`].
1600    ///
1601    /// Does not allocate any data into arena.
1602    fn dummy(allocator: &'a Allocator) -> Self {
1603        Self {
1604            span: Dummy::dummy(allocator),
1605            value: Dummy::dummy(allocator),
1606            raw: Dummy::dummy(allocator),
1607            base: Dummy::dummy(allocator),
1608        }
1609    }
1610}
1611
1612impl<'a> Dummy<'a> for RegExpLiteral<'a> {
1613    /// Create a dummy [`RegExpLiteral`].
1614    ///
1615    /// Does not allocate any data into arena.
1616    fn dummy(allocator: &'a Allocator) -> Self {
1617        Self {
1618            span: Dummy::dummy(allocator),
1619            regex: Dummy::dummy(allocator),
1620            raw: Dummy::dummy(allocator),
1621        }
1622    }
1623}
1624
1625impl<'a> Dummy<'a> for RegExp<'a> {
1626    /// Create a dummy [`RegExp`].
1627    ///
1628    /// Does not allocate any data into arena.
1629    fn dummy(allocator: &'a Allocator) -> Self {
1630        Self { pattern: Dummy::dummy(allocator), flags: Dummy::dummy(allocator) }
1631    }
1632}
1633
1634impl<'a> Dummy<'a> for RegExpPattern<'a> {
1635    /// Create a dummy [`RegExpPattern`].
1636    ///
1637    /// Does not allocate any data into arena.
1638    fn dummy(allocator: &'a Allocator) -> Self {
1639        Self { text: Dummy::dummy(allocator), pattern: Dummy::dummy(allocator) }
1640    }
1641}
1642
1643impl<'a> Dummy<'a> for JSXElement<'a> {
1644    /// Create a dummy [`JSXElement`].
1645    ///
1646    /// Has cost of making 2 allocations (64 bytes).
1647    fn dummy(allocator: &'a Allocator) -> Self {
1648        Self {
1649            span: Dummy::dummy(allocator),
1650            opening_element: Dummy::dummy(allocator),
1651            children: Dummy::dummy(allocator),
1652            closing_element: Dummy::dummy(allocator),
1653        }
1654    }
1655}
1656
1657impl<'a> Dummy<'a> for JSXOpeningElement<'a> {
1658    /// Create a dummy [`JSXOpeningElement`].
1659    ///
1660    /// Has cost of making 1 allocation (8 bytes).
1661    fn dummy(allocator: &'a Allocator) -> Self {
1662        Self {
1663            span: Dummy::dummy(allocator),
1664            name: Dummy::dummy(allocator),
1665            type_arguments: Dummy::dummy(allocator),
1666            attributes: Dummy::dummy(allocator),
1667        }
1668    }
1669}
1670
1671impl<'a> Dummy<'a> for JSXClosingElement<'a> {
1672    /// Create a dummy [`JSXClosingElement`].
1673    ///
1674    /// Has cost of making 1 allocation (8 bytes).
1675    fn dummy(allocator: &'a Allocator) -> Self {
1676        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1677    }
1678}
1679
1680impl<'a> Dummy<'a> for JSXFragment<'a> {
1681    /// Create a dummy [`JSXFragment`].
1682    ///
1683    /// Does not allocate any data into arena.
1684    fn dummy(allocator: &'a Allocator) -> Self {
1685        Self {
1686            span: Dummy::dummy(allocator),
1687            opening_fragment: Dummy::dummy(allocator),
1688            children: Dummy::dummy(allocator),
1689            closing_fragment: Dummy::dummy(allocator),
1690        }
1691    }
1692}
1693
1694impl<'a> Dummy<'a> for JSXOpeningFragment {
1695    /// Create a dummy [`JSXOpeningFragment`].
1696    ///
1697    /// Does not allocate any data into arena.
1698    fn dummy(allocator: &'a Allocator) -> Self {
1699        Self { span: Dummy::dummy(allocator) }
1700    }
1701}
1702
1703impl<'a> Dummy<'a> for JSXClosingFragment {
1704    /// Create a dummy [`JSXClosingFragment`].
1705    ///
1706    /// Does not allocate any data into arena.
1707    fn dummy(allocator: &'a Allocator) -> Self {
1708        Self { span: Dummy::dummy(allocator) }
1709    }
1710}
1711
1712impl<'a> Dummy<'a> for JSXElementName<'a> {
1713    /// Create a dummy [`JSXElementName`].
1714    ///
1715    /// Has cost of making 1 allocation (8 bytes).
1716    fn dummy(allocator: &'a Allocator) -> Self {
1717        Self::ThisExpression(Dummy::dummy(allocator))
1718    }
1719}
1720
1721impl<'a> Dummy<'a> for JSXNamespacedName<'a> {
1722    /// Create a dummy [`JSXNamespacedName`].
1723    ///
1724    /// Does not allocate any data into arena.
1725    fn dummy(allocator: &'a Allocator) -> Self {
1726        Self {
1727            span: Dummy::dummy(allocator),
1728            namespace: Dummy::dummy(allocator),
1729            name: Dummy::dummy(allocator),
1730        }
1731    }
1732}
1733
1734impl<'a> Dummy<'a> for JSXMemberExpression<'a> {
1735    /// Create a dummy [`JSXMemberExpression`].
1736    ///
1737    /// Has cost of making 1 allocation (8 bytes).
1738    fn dummy(allocator: &'a Allocator) -> Self {
1739        Self {
1740            span: Dummy::dummy(allocator),
1741            object: Dummy::dummy(allocator),
1742            property: Dummy::dummy(allocator),
1743        }
1744    }
1745}
1746
1747impl<'a> Dummy<'a> for JSXMemberExpressionObject<'a> {
1748    /// Create a dummy [`JSXMemberExpressionObject`].
1749    ///
1750    /// Has cost of making 1 allocation (8 bytes).
1751    fn dummy(allocator: &'a Allocator) -> Self {
1752        Self::ThisExpression(Dummy::dummy(allocator))
1753    }
1754}
1755
1756impl<'a> Dummy<'a> for JSXExpressionContainer<'a> {
1757    /// Create a dummy [`JSXExpressionContainer`].
1758    ///
1759    /// Does not allocate any data into arena.
1760    fn dummy(allocator: &'a Allocator) -> Self {
1761        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
1762    }
1763}
1764
1765impl<'a> Dummy<'a> for JSXExpression<'a> {
1766    /// Create a dummy [`JSXExpression`].
1767    ///
1768    /// Does not allocate any data into arena.
1769    fn dummy(allocator: &'a Allocator) -> Self {
1770        Self::EmptyExpression(Dummy::dummy(allocator))
1771    }
1772}
1773
1774impl<'a> Dummy<'a> for JSXEmptyExpression {
1775    /// Create a dummy [`JSXEmptyExpression`].
1776    ///
1777    /// Does not allocate any data into arena.
1778    fn dummy(allocator: &'a Allocator) -> Self {
1779        Self { span: Dummy::dummy(allocator) }
1780    }
1781}
1782
1783impl<'a> Dummy<'a> for JSXAttributeItem<'a> {
1784    /// Create a dummy [`JSXAttributeItem`].
1785    ///
1786    /// Has cost of making 2 allocations (32 bytes).
1787    fn dummy(allocator: &'a Allocator) -> Self {
1788        Self::SpreadAttribute(Dummy::dummy(allocator))
1789    }
1790}
1791
1792impl<'a> Dummy<'a> for JSXAttribute<'a> {
1793    /// Create a dummy [`JSXAttribute`].
1794    ///
1795    /// Has cost of making 1 allocation (24 bytes).
1796    fn dummy(allocator: &'a Allocator) -> Self {
1797        Self {
1798            span: Dummy::dummy(allocator),
1799            name: Dummy::dummy(allocator),
1800            value: Dummy::dummy(allocator),
1801        }
1802    }
1803}
1804
1805impl<'a> Dummy<'a> for JSXSpreadAttribute<'a> {
1806    /// Create a dummy [`JSXSpreadAttribute`].
1807    ///
1808    /// Has cost of making 1 allocation (8 bytes).
1809    fn dummy(allocator: &'a Allocator) -> Self {
1810        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
1811    }
1812}
1813
1814impl<'a> Dummy<'a> for JSXAttributeName<'a> {
1815    /// Create a dummy [`JSXAttributeName`].
1816    ///
1817    /// Has cost of making 1 allocation (24 bytes).
1818    fn dummy(allocator: &'a Allocator) -> Self {
1819        Self::Identifier(Dummy::dummy(allocator))
1820    }
1821}
1822
1823impl<'a> Dummy<'a> for JSXAttributeValue<'a> {
1824    /// Create a dummy [`JSXAttributeValue`].
1825    ///
1826    /// Has cost of making 1 allocation (24 bytes).
1827    fn dummy(allocator: &'a Allocator) -> Self {
1828        Self::ExpressionContainer(Dummy::dummy(allocator))
1829    }
1830}
1831
1832impl<'a> Dummy<'a> for JSXIdentifier<'a> {
1833    /// Create a dummy [`JSXIdentifier`].
1834    ///
1835    /// Does not allocate any data into arena.
1836    fn dummy(allocator: &'a Allocator) -> Self {
1837        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1838    }
1839}
1840
1841impl<'a> Dummy<'a> for JSXChild<'a> {
1842    /// Create a dummy [`JSXChild`].
1843    ///
1844    /// Has cost of making 1 allocation (24 bytes).
1845    fn dummy(allocator: &'a Allocator) -> Self {
1846        Self::ExpressionContainer(Dummy::dummy(allocator))
1847    }
1848}
1849
1850impl<'a> Dummy<'a> for JSXSpreadChild<'a> {
1851    /// Create a dummy [`JSXSpreadChild`].
1852    ///
1853    /// Has cost of making 1 allocation (8 bytes).
1854    fn dummy(allocator: &'a Allocator) -> Self {
1855        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
1856    }
1857}
1858
1859impl<'a> Dummy<'a> for JSXText<'a> {
1860    /// Create a dummy [`JSXText`].
1861    ///
1862    /// Does not allocate any data into arena.
1863    fn dummy(allocator: &'a Allocator) -> Self {
1864        Self {
1865            span: Dummy::dummy(allocator),
1866            value: Dummy::dummy(allocator),
1867            raw: Dummy::dummy(allocator),
1868        }
1869    }
1870}
1871
1872impl<'a> Dummy<'a> for TSThisParameter<'a> {
1873    /// Create a dummy [`TSThisParameter`].
1874    ///
1875    /// Does not allocate any data into arena.
1876    fn dummy(allocator: &'a Allocator) -> Self {
1877        Self {
1878            span: Dummy::dummy(allocator),
1879            this_span: Dummy::dummy(allocator),
1880            type_annotation: Dummy::dummy(allocator),
1881        }
1882    }
1883}
1884
1885impl<'a> Dummy<'a> for TSEnumDeclaration<'a> {
1886    /// Create a dummy [`TSEnumDeclaration`].
1887    ///
1888    /// Does not allocate any data into arena.
1889    fn dummy(allocator: &'a Allocator) -> Self {
1890        Self {
1891            span: Dummy::dummy(allocator),
1892            id: Dummy::dummy(allocator),
1893            body: Dummy::dummy(allocator),
1894            r#const: Dummy::dummy(allocator),
1895            declare: Dummy::dummy(allocator),
1896            scope_id: Dummy::dummy(allocator),
1897        }
1898    }
1899}
1900
1901impl<'a> Dummy<'a> for TSEnumBody<'a> {
1902    /// Create a dummy [`TSEnumBody`].
1903    ///
1904    /// Does not allocate any data into arena.
1905    fn dummy(allocator: &'a Allocator) -> Self {
1906        Self { span: Dummy::dummy(allocator), members: Dummy::dummy(allocator) }
1907    }
1908}
1909
1910impl<'a> Dummy<'a> for TSEnumMember<'a> {
1911    /// Create a dummy [`TSEnumMember`].
1912    ///
1913    /// Has cost of making 1 allocation (24 bytes).
1914    fn dummy(allocator: &'a Allocator) -> Self {
1915        Self {
1916            span: Dummy::dummy(allocator),
1917            id: Dummy::dummy(allocator),
1918            initializer: Dummy::dummy(allocator),
1919        }
1920    }
1921}
1922
1923impl<'a> Dummy<'a> for TSEnumMemberName<'a> {
1924    /// Create a dummy [`TSEnumMemberName`].
1925    ///
1926    /// Has cost of making 1 allocation (24 bytes).
1927    fn dummy(allocator: &'a Allocator) -> Self {
1928        Self::Identifier(Dummy::dummy(allocator))
1929    }
1930}
1931
1932impl<'a> Dummy<'a> for TSTypeAnnotation<'a> {
1933    /// Create a dummy [`TSTypeAnnotation`].
1934    ///
1935    /// Has cost of making 1 allocation (8 bytes).
1936    fn dummy(allocator: &'a Allocator) -> Self {
1937        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
1938    }
1939}
1940
1941impl<'a> Dummy<'a> for TSLiteralType<'a> {
1942    /// Create a dummy [`TSLiteralType`].
1943    ///
1944    /// Has cost of making 1 allocation (16 bytes).
1945    fn dummy(allocator: &'a Allocator) -> Self {
1946        Self { span: Dummy::dummy(allocator), literal: Dummy::dummy(allocator) }
1947    }
1948}
1949
1950impl<'a> Dummy<'a> for TSLiteral<'a> {
1951    /// Create a dummy [`TSLiteral`].
1952    ///
1953    /// Has cost of making 1 allocation (16 bytes).
1954    fn dummy(allocator: &'a Allocator) -> Self {
1955        Self::BooleanLiteral(Dummy::dummy(allocator))
1956    }
1957}
1958
1959impl<'a> Dummy<'a> for TSType<'a> {
1960    /// Create a dummy [`TSType`].
1961    ///
1962    /// Has cost of making 1 allocation (8 bytes).
1963    fn dummy(allocator: &'a Allocator) -> Self {
1964        Self::TSAnyKeyword(Dummy::dummy(allocator))
1965    }
1966}
1967
1968impl<'a> Dummy<'a> for TSConditionalType<'a> {
1969    /// Create a dummy [`TSConditionalType`].
1970    ///
1971    /// Has cost of making 4 allocations (32 bytes).
1972    fn dummy(allocator: &'a Allocator) -> Self {
1973        Self {
1974            span: Dummy::dummy(allocator),
1975            check_type: Dummy::dummy(allocator),
1976            extends_type: Dummy::dummy(allocator),
1977            true_type: Dummy::dummy(allocator),
1978            false_type: Dummy::dummy(allocator),
1979            scope_id: Dummy::dummy(allocator),
1980        }
1981    }
1982}
1983
1984impl<'a> Dummy<'a> for TSUnionType<'a> {
1985    /// Create a dummy [`TSUnionType`].
1986    ///
1987    /// Does not allocate any data into arena.
1988    fn dummy(allocator: &'a Allocator) -> Self {
1989        Self { span: Dummy::dummy(allocator), types: Dummy::dummy(allocator) }
1990    }
1991}
1992
1993impl<'a> Dummy<'a> for TSIntersectionType<'a> {
1994    /// Create a dummy [`TSIntersectionType`].
1995    ///
1996    /// Does not allocate any data into arena.
1997    fn dummy(allocator: &'a Allocator) -> Self {
1998        Self { span: Dummy::dummy(allocator), types: Dummy::dummy(allocator) }
1999    }
2000}
2001
2002impl<'a> Dummy<'a> for TSParenthesizedType<'a> {
2003    /// Create a dummy [`TSParenthesizedType`].
2004    ///
2005    /// Has cost of making 1 allocation (8 bytes).
2006    fn dummy(allocator: &'a Allocator) -> Self {
2007        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2008    }
2009}
2010
2011impl<'a> Dummy<'a> for TSTypeOperator<'a> {
2012    /// Create a dummy [`TSTypeOperator`].
2013    ///
2014    /// Has cost of making 1 allocation (8 bytes).
2015    fn dummy(allocator: &'a Allocator) -> Self {
2016        Self {
2017            span: Dummy::dummy(allocator),
2018            operator: Dummy::dummy(allocator),
2019            type_annotation: Dummy::dummy(allocator),
2020        }
2021    }
2022}
2023
2024impl<'a> Dummy<'a> for TSTypeOperatorOperator {
2025    /// Create a dummy [`TSTypeOperatorOperator`].
2026    ///
2027    /// Does not allocate any data into arena.
2028    #[inline(always)]
2029    fn dummy(allocator: &'a Allocator) -> Self {
2030        Self::Keyof
2031    }
2032}
2033
2034impl<'a> Dummy<'a> for TSArrayType<'a> {
2035    /// Create a dummy [`TSArrayType`].
2036    ///
2037    /// Has cost of making 1 allocation (8 bytes).
2038    fn dummy(allocator: &'a Allocator) -> Self {
2039        Self { span: Dummy::dummy(allocator), element_type: Dummy::dummy(allocator) }
2040    }
2041}
2042
2043impl<'a> Dummy<'a> for TSIndexedAccessType<'a> {
2044    /// Create a dummy [`TSIndexedAccessType`].
2045    ///
2046    /// Has cost of making 2 allocations (16 bytes).
2047    fn dummy(allocator: &'a Allocator) -> Self {
2048        Self {
2049            span: Dummy::dummy(allocator),
2050            object_type: Dummy::dummy(allocator),
2051            index_type: Dummy::dummy(allocator),
2052        }
2053    }
2054}
2055
2056impl<'a> Dummy<'a> for TSTupleType<'a> {
2057    /// Create a dummy [`TSTupleType`].
2058    ///
2059    /// Does not allocate any data into arena.
2060    fn dummy(allocator: &'a Allocator) -> Self {
2061        Self { span: Dummy::dummy(allocator), element_types: Dummy::dummy(allocator) }
2062    }
2063}
2064
2065impl<'a> Dummy<'a> for TSNamedTupleMember<'a> {
2066    /// Create a dummy [`TSNamedTupleMember`].
2067    ///
2068    /// Has cost of making 1 allocation (8 bytes).
2069    fn dummy(allocator: &'a Allocator) -> Self {
2070        Self {
2071            span: Dummy::dummy(allocator),
2072            label: Dummy::dummy(allocator),
2073            element_type: Dummy::dummy(allocator),
2074            optional: Dummy::dummy(allocator),
2075        }
2076    }
2077}
2078
2079impl<'a> Dummy<'a> for TSOptionalType<'a> {
2080    /// Create a dummy [`TSOptionalType`].
2081    ///
2082    /// Has cost of making 1 allocation (8 bytes).
2083    fn dummy(allocator: &'a Allocator) -> Self {
2084        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2085    }
2086}
2087
2088impl<'a> Dummy<'a> for TSRestType<'a> {
2089    /// Create a dummy [`TSRestType`].
2090    ///
2091    /// Has cost of making 1 allocation (8 bytes).
2092    fn dummy(allocator: &'a Allocator) -> Self {
2093        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2094    }
2095}
2096
2097impl<'a> Dummy<'a> for TSTupleElement<'a> {
2098    /// Create a dummy [`TSTupleElement`].
2099    ///
2100    /// Has cost of making 1 allocation (8 bytes).
2101    fn dummy(allocator: &'a Allocator) -> Self {
2102        Self::TSAnyKeyword(Dummy::dummy(allocator))
2103    }
2104}
2105
2106impl<'a> Dummy<'a> for TSAnyKeyword {
2107    /// Create a dummy [`TSAnyKeyword`].
2108    ///
2109    /// Does not allocate any data into arena.
2110    fn dummy(allocator: &'a Allocator) -> Self {
2111        Self { span: Dummy::dummy(allocator) }
2112    }
2113}
2114
2115impl<'a> Dummy<'a> for TSStringKeyword {
2116    /// Create a dummy [`TSStringKeyword`].
2117    ///
2118    /// Does not allocate any data into arena.
2119    fn dummy(allocator: &'a Allocator) -> Self {
2120        Self { span: Dummy::dummy(allocator) }
2121    }
2122}
2123
2124impl<'a> Dummy<'a> for TSBooleanKeyword {
2125    /// Create a dummy [`TSBooleanKeyword`].
2126    ///
2127    /// Does not allocate any data into arena.
2128    fn dummy(allocator: &'a Allocator) -> Self {
2129        Self { span: Dummy::dummy(allocator) }
2130    }
2131}
2132
2133impl<'a> Dummy<'a> for TSNumberKeyword {
2134    /// Create a dummy [`TSNumberKeyword`].
2135    ///
2136    /// Does not allocate any data into arena.
2137    fn dummy(allocator: &'a Allocator) -> Self {
2138        Self { span: Dummy::dummy(allocator) }
2139    }
2140}
2141
2142impl<'a> Dummy<'a> for TSNeverKeyword {
2143    /// Create a dummy [`TSNeverKeyword`].
2144    ///
2145    /// Does not allocate any data into arena.
2146    fn dummy(allocator: &'a Allocator) -> Self {
2147        Self { span: Dummy::dummy(allocator) }
2148    }
2149}
2150
2151impl<'a> Dummy<'a> for TSIntrinsicKeyword {
2152    /// Create a dummy [`TSIntrinsicKeyword`].
2153    ///
2154    /// Does not allocate any data into arena.
2155    fn dummy(allocator: &'a Allocator) -> Self {
2156        Self { span: Dummy::dummy(allocator) }
2157    }
2158}
2159
2160impl<'a> Dummy<'a> for TSUnknownKeyword {
2161    /// Create a dummy [`TSUnknownKeyword`].
2162    ///
2163    /// Does not allocate any data into arena.
2164    fn dummy(allocator: &'a Allocator) -> Self {
2165        Self { span: Dummy::dummy(allocator) }
2166    }
2167}
2168
2169impl<'a> Dummy<'a> for TSNullKeyword {
2170    /// Create a dummy [`TSNullKeyword`].
2171    ///
2172    /// Does not allocate any data into arena.
2173    fn dummy(allocator: &'a Allocator) -> Self {
2174        Self { span: Dummy::dummy(allocator) }
2175    }
2176}
2177
2178impl<'a> Dummy<'a> for TSUndefinedKeyword {
2179    /// Create a dummy [`TSUndefinedKeyword`].
2180    ///
2181    /// Does not allocate any data into arena.
2182    fn dummy(allocator: &'a Allocator) -> Self {
2183        Self { span: Dummy::dummy(allocator) }
2184    }
2185}
2186
2187impl<'a> Dummy<'a> for TSVoidKeyword {
2188    /// Create a dummy [`TSVoidKeyword`].
2189    ///
2190    /// Does not allocate any data into arena.
2191    fn dummy(allocator: &'a Allocator) -> Self {
2192        Self { span: Dummy::dummy(allocator) }
2193    }
2194}
2195
2196impl<'a> Dummy<'a> for TSSymbolKeyword {
2197    /// Create a dummy [`TSSymbolKeyword`].
2198    ///
2199    /// Does not allocate any data into arena.
2200    fn dummy(allocator: &'a Allocator) -> Self {
2201        Self { span: Dummy::dummy(allocator) }
2202    }
2203}
2204
2205impl<'a> Dummy<'a> for TSThisType {
2206    /// Create a dummy [`TSThisType`].
2207    ///
2208    /// Does not allocate any data into arena.
2209    fn dummy(allocator: &'a Allocator) -> Self {
2210        Self { span: Dummy::dummy(allocator) }
2211    }
2212}
2213
2214impl<'a> Dummy<'a> for TSObjectKeyword {
2215    /// Create a dummy [`TSObjectKeyword`].
2216    ///
2217    /// Does not allocate any data into arena.
2218    fn dummy(allocator: &'a Allocator) -> Self {
2219        Self { span: Dummy::dummy(allocator) }
2220    }
2221}
2222
2223impl<'a> Dummy<'a> for TSBigIntKeyword {
2224    /// Create a dummy [`TSBigIntKeyword`].
2225    ///
2226    /// Does not allocate any data into arena.
2227    fn dummy(allocator: &'a Allocator) -> Self {
2228        Self { span: Dummy::dummy(allocator) }
2229    }
2230}
2231
2232impl<'a> Dummy<'a> for TSTypeReference<'a> {
2233    /// Create a dummy [`TSTypeReference`].
2234    ///
2235    /// Has cost of making 1 allocation (32 bytes).
2236    fn dummy(allocator: &'a Allocator) -> Self {
2237        Self {
2238            span: Dummy::dummy(allocator),
2239            type_name: Dummy::dummy(allocator),
2240            type_arguments: Dummy::dummy(allocator),
2241        }
2242    }
2243}
2244
2245impl<'a> Dummy<'a> for TSTypeName<'a> {
2246    /// Create a dummy [`TSTypeName`].
2247    ///
2248    /// Has cost of making 1 allocation (32 bytes).
2249    fn dummy(allocator: &'a Allocator) -> Self {
2250        Self::IdentifierReference(Dummy::dummy(allocator))
2251    }
2252}
2253
2254impl<'a> Dummy<'a> for TSQualifiedName<'a> {
2255    /// Create a dummy [`TSQualifiedName`].
2256    ///
2257    /// Has cost of making 1 allocation (32 bytes).
2258    fn dummy(allocator: &'a Allocator) -> Self {
2259        Self {
2260            span: Dummy::dummy(allocator),
2261            left: Dummy::dummy(allocator),
2262            right: Dummy::dummy(allocator),
2263        }
2264    }
2265}
2266
2267impl<'a> Dummy<'a> for TSTypeParameterInstantiation<'a> {
2268    /// Create a dummy [`TSTypeParameterInstantiation`].
2269    ///
2270    /// Does not allocate any data into arena.
2271    fn dummy(allocator: &'a Allocator) -> Self {
2272        Self { span: Dummy::dummy(allocator), params: Dummy::dummy(allocator) }
2273    }
2274}
2275
2276impl<'a> Dummy<'a> for TSTypeParameter<'a> {
2277    /// Create a dummy [`TSTypeParameter`].
2278    ///
2279    /// Does not allocate any data into arena.
2280    fn dummy(allocator: &'a Allocator) -> Self {
2281        Self {
2282            span: Dummy::dummy(allocator),
2283            name: Dummy::dummy(allocator),
2284            constraint: Dummy::dummy(allocator),
2285            default: Dummy::dummy(allocator),
2286            r#in: Dummy::dummy(allocator),
2287            out: Dummy::dummy(allocator),
2288            r#const: Dummy::dummy(allocator),
2289        }
2290    }
2291}
2292
2293impl<'a> Dummy<'a> for TSTypeParameterDeclaration<'a> {
2294    /// Create a dummy [`TSTypeParameterDeclaration`].
2295    ///
2296    /// Does not allocate any data into arena.
2297    fn dummy(allocator: &'a Allocator) -> Self {
2298        Self { span: Dummy::dummy(allocator), params: Dummy::dummy(allocator) }
2299    }
2300}
2301
2302impl<'a> Dummy<'a> for TSTypeAliasDeclaration<'a> {
2303    /// Create a dummy [`TSTypeAliasDeclaration`].
2304    ///
2305    /// Has cost of making 1 allocation (8 bytes).
2306    fn dummy(allocator: &'a Allocator) -> Self {
2307        Self {
2308            span: Dummy::dummy(allocator),
2309            id: Dummy::dummy(allocator),
2310            type_parameters: Dummy::dummy(allocator),
2311            type_annotation: Dummy::dummy(allocator),
2312            declare: Dummy::dummy(allocator),
2313            scope_id: Dummy::dummy(allocator),
2314        }
2315    }
2316}
2317
2318impl<'a> Dummy<'a> for TSAccessibility {
2319    /// Create a dummy [`TSAccessibility`].
2320    ///
2321    /// Does not allocate any data into arena.
2322    #[inline(always)]
2323    fn dummy(allocator: &'a Allocator) -> Self {
2324        Self::Private
2325    }
2326}
2327
2328impl<'a> Dummy<'a> for TSClassImplements<'a> {
2329    /// Create a dummy [`TSClassImplements`].
2330    ///
2331    /// Has cost of making 1 allocation (32 bytes).
2332    fn dummy(allocator: &'a Allocator) -> Self {
2333        Self {
2334            span: Dummy::dummy(allocator),
2335            expression: Dummy::dummy(allocator),
2336            type_arguments: Dummy::dummy(allocator),
2337        }
2338    }
2339}
2340
2341impl<'a> Dummy<'a> for TSInterfaceDeclaration<'a> {
2342    /// Create a dummy [`TSInterfaceDeclaration`].
2343    ///
2344    /// Has cost of making 1 allocation (32 bytes).
2345    fn dummy(allocator: &'a Allocator) -> Self {
2346        Self {
2347            span: Dummy::dummy(allocator),
2348            id: Dummy::dummy(allocator),
2349            type_parameters: Dummy::dummy(allocator),
2350            extends: Dummy::dummy(allocator),
2351            body: Dummy::dummy(allocator),
2352            declare: Dummy::dummy(allocator),
2353            scope_id: Dummy::dummy(allocator),
2354        }
2355    }
2356}
2357
2358impl<'a> Dummy<'a> for TSInterfaceBody<'a> {
2359    /// Create a dummy [`TSInterfaceBody`].
2360    ///
2361    /// Does not allocate any data into arena.
2362    fn dummy(allocator: &'a Allocator) -> Self {
2363        Self { span: Dummy::dummy(allocator), body: Dummy::dummy(allocator) }
2364    }
2365}
2366
2367impl<'a> Dummy<'a> for TSPropertySignature<'a> {
2368    /// Create a dummy [`TSPropertySignature`].
2369    ///
2370    /// Has cost of making 1 allocation (8 bytes).
2371    fn dummy(allocator: &'a Allocator) -> Self {
2372        Self {
2373            span: Dummy::dummy(allocator),
2374            computed: Dummy::dummy(allocator),
2375            optional: Dummy::dummy(allocator),
2376            readonly: Dummy::dummy(allocator),
2377            key: Dummy::dummy(allocator),
2378            type_annotation: Dummy::dummy(allocator),
2379        }
2380    }
2381}
2382
2383impl<'a> Dummy<'a> for TSSignature<'a> {
2384    /// Create a dummy [`TSSignature`].
2385    ///
2386    /// Has cost of making 2 allocations (48 bytes).
2387    fn dummy(allocator: &'a Allocator) -> Self {
2388        Self::TSPropertySignature(Dummy::dummy(allocator))
2389    }
2390}
2391
2392impl<'a> Dummy<'a> for TSIndexSignature<'a> {
2393    /// Create a dummy [`TSIndexSignature`].
2394    ///
2395    /// Has cost of making 2 allocations (32 bytes).
2396    fn dummy(allocator: &'a Allocator) -> Self {
2397        Self {
2398            span: Dummy::dummy(allocator),
2399            parameters: Dummy::dummy(allocator),
2400            type_annotation: Dummy::dummy(allocator),
2401            readonly: Dummy::dummy(allocator),
2402            r#static: Dummy::dummy(allocator),
2403        }
2404    }
2405}
2406
2407impl<'a> Dummy<'a> for TSCallSignatureDeclaration<'a> {
2408    /// Create a dummy [`TSCallSignatureDeclaration`].
2409    ///
2410    /// Has cost of making 1 allocation (48 bytes).
2411    fn dummy(allocator: &'a Allocator) -> Self {
2412        Self {
2413            span: Dummy::dummy(allocator),
2414            type_parameters: Dummy::dummy(allocator),
2415            this_param: Dummy::dummy(allocator),
2416            params: Dummy::dummy(allocator),
2417            return_type: Dummy::dummy(allocator),
2418        }
2419    }
2420}
2421
2422impl<'a> Dummy<'a> for TSMethodSignatureKind {
2423    /// Create a dummy [`TSMethodSignatureKind`].
2424    ///
2425    /// Does not allocate any data into arena.
2426    #[inline(always)]
2427    fn dummy(allocator: &'a Allocator) -> Self {
2428        Self::Method
2429    }
2430}
2431
2432impl<'a> Dummy<'a> for TSMethodSignature<'a> {
2433    /// Create a dummy [`TSMethodSignature`].
2434    ///
2435    /// Has cost of making 2 allocations (56 bytes).
2436    fn dummy(allocator: &'a Allocator) -> Self {
2437        Self {
2438            span: Dummy::dummy(allocator),
2439            key: Dummy::dummy(allocator),
2440            computed: Dummy::dummy(allocator),
2441            optional: Dummy::dummy(allocator),
2442            kind: Dummy::dummy(allocator),
2443            type_parameters: Dummy::dummy(allocator),
2444            this_param: Dummy::dummy(allocator),
2445            params: Dummy::dummy(allocator),
2446            return_type: Dummy::dummy(allocator),
2447            scope_id: Dummy::dummy(allocator),
2448        }
2449    }
2450}
2451
2452impl<'a> Dummy<'a> for TSConstructSignatureDeclaration<'a> {
2453    /// Create a dummy [`TSConstructSignatureDeclaration`].
2454    ///
2455    /// Has cost of making 1 allocation (48 bytes).
2456    fn dummy(allocator: &'a Allocator) -> Self {
2457        Self {
2458            span: Dummy::dummy(allocator),
2459            type_parameters: Dummy::dummy(allocator),
2460            params: Dummy::dummy(allocator),
2461            return_type: Dummy::dummy(allocator),
2462            scope_id: Dummy::dummy(allocator),
2463        }
2464    }
2465}
2466
2467impl<'a> Dummy<'a> for TSIndexSignatureName<'a> {
2468    /// Create a dummy [`TSIndexSignatureName`].
2469    ///
2470    /// Has cost of making 2 allocations (32 bytes).
2471    fn dummy(allocator: &'a Allocator) -> Self {
2472        Self {
2473            span: Dummy::dummy(allocator),
2474            name: Dummy::dummy(allocator),
2475            type_annotation: Dummy::dummy(allocator),
2476        }
2477    }
2478}
2479
2480impl<'a> Dummy<'a> for TSInterfaceHeritage<'a> {
2481    /// Create a dummy [`TSInterfaceHeritage`].
2482    ///
2483    /// Has cost of making 1 allocation (8 bytes).
2484    fn dummy(allocator: &'a Allocator) -> Self {
2485        Self {
2486            span: Dummy::dummy(allocator),
2487            expression: Dummy::dummy(allocator),
2488            type_arguments: Dummy::dummy(allocator),
2489        }
2490    }
2491}
2492
2493impl<'a> Dummy<'a> for TSTypePredicate<'a> {
2494    /// Create a dummy [`TSTypePredicate`].
2495    ///
2496    /// Does not allocate any data into arena.
2497    fn dummy(allocator: &'a Allocator) -> Self {
2498        Self {
2499            span: Dummy::dummy(allocator),
2500            parameter_name: Dummy::dummy(allocator),
2501            asserts: Dummy::dummy(allocator),
2502            type_annotation: Dummy::dummy(allocator),
2503        }
2504    }
2505}
2506
2507impl<'a> Dummy<'a> for TSTypePredicateName<'a> {
2508    /// Create a dummy [`TSTypePredicateName`].
2509    ///
2510    /// Does not allocate any data into arena.
2511    fn dummy(allocator: &'a Allocator) -> Self {
2512        Self::This(Dummy::dummy(allocator))
2513    }
2514}
2515
2516impl<'a> Dummy<'a> for TSModuleDeclaration<'a> {
2517    /// Create a dummy [`TSModuleDeclaration`].
2518    ///
2519    /// Does not allocate any data into arena.
2520    fn dummy(allocator: &'a Allocator) -> Self {
2521        Self {
2522            span: Dummy::dummy(allocator),
2523            id: Dummy::dummy(allocator),
2524            body: Dummy::dummy(allocator),
2525            kind: Dummy::dummy(allocator),
2526            declare: Dummy::dummy(allocator),
2527            scope_id: Dummy::dummy(allocator),
2528        }
2529    }
2530}
2531
2532impl<'a> Dummy<'a> for TSModuleDeclarationKind {
2533    /// Create a dummy [`TSModuleDeclarationKind`].
2534    ///
2535    /// Does not allocate any data into arena.
2536    #[inline(always)]
2537    fn dummy(allocator: &'a Allocator) -> Self {
2538        Self::Global
2539    }
2540}
2541
2542impl<'a> Dummy<'a> for TSModuleDeclarationName<'a> {
2543    /// Create a dummy [`TSModuleDeclarationName`].
2544    ///
2545    /// Does not allocate any data into arena.
2546    fn dummy(allocator: &'a Allocator) -> Self {
2547        Self::Identifier(Dummy::dummy(allocator))
2548    }
2549}
2550
2551impl<'a> Dummy<'a> for TSModuleDeclarationBody<'a> {
2552    /// Create a dummy [`TSModuleDeclarationBody`].
2553    ///
2554    /// Has cost of making 1 allocation (56 bytes).
2555    fn dummy(allocator: &'a Allocator) -> Self {
2556        Self::TSModuleBlock(Dummy::dummy(allocator))
2557    }
2558}
2559
2560impl<'a> Dummy<'a> for TSModuleBlock<'a> {
2561    /// Create a dummy [`TSModuleBlock`].
2562    ///
2563    /// Does not allocate any data into arena.
2564    fn dummy(allocator: &'a Allocator) -> Self {
2565        Self {
2566            span: Dummy::dummy(allocator),
2567            directives: Dummy::dummy(allocator),
2568            body: Dummy::dummy(allocator),
2569        }
2570    }
2571}
2572
2573impl<'a> Dummy<'a> for TSTypeLiteral<'a> {
2574    /// Create a dummy [`TSTypeLiteral`].
2575    ///
2576    /// Does not allocate any data into arena.
2577    fn dummy(allocator: &'a Allocator) -> Self {
2578        Self { span: Dummy::dummy(allocator), members: Dummy::dummy(allocator) }
2579    }
2580}
2581
2582impl<'a> Dummy<'a> for TSInferType<'a> {
2583    /// Create a dummy [`TSInferType`].
2584    ///
2585    /// Has cost of making 1 allocation (80 bytes).
2586    fn dummy(allocator: &'a Allocator) -> Self {
2587        Self { span: Dummy::dummy(allocator), type_parameter: Dummy::dummy(allocator) }
2588    }
2589}
2590
2591impl<'a> Dummy<'a> for TSTypeQuery<'a> {
2592    /// Create a dummy [`TSTypeQuery`].
2593    ///
2594    /// Has cost of making 1 allocation (32 bytes).
2595    fn dummy(allocator: &'a Allocator) -> Self {
2596        Self {
2597            span: Dummy::dummy(allocator),
2598            expr_name: Dummy::dummy(allocator),
2599            type_arguments: Dummy::dummy(allocator),
2600        }
2601    }
2602}
2603
2604impl<'a> Dummy<'a> for TSTypeQueryExprName<'a> {
2605    /// Create a dummy [`TSTypeQueryExprName`].
2606    ///
2607    /// Has cost of making 1 allocation (32 bytes).
2608    fn dummy(allocator: &'a Allocator) -> Self {
2609        Self::IdentifierReference(Dummy::dummy(allocator))
2610    }
2611}
2612
2613impl<'a> Dummy<'a> for TSImportType<'a> {
2614    /// Create a dummy [`TSImportType`].
2615    ///
2616    /// Has cost of making 1 allocation (8 bytes).
2617    fn dummy(allocator: &'a Allocator) -> Self {
2618        Self {
2619            span: Dummy::dummy(allocator),
2620            argument: Dummy::dummy(allocator),
2621            options: Dummy::dummy(allocator),
2622            qualifier: Dummy::dummy(allocator),
2623            type_arguments: Dummy::dummy(allocator),
2624        }
2625    }
2626}
2627
2628impl<'a> Dummy<'a> for TSFunctionType<'a> {
2629    /// Create a dummy [`TSFunctionType`].
2630    ///
2631    /// Has cost of making 3 allocations (80 bytes).
2632    fn dummy(allocator: &'a Allocator) -> Self {
2633        Self {
2634            span: Dummy::dummy(allocator),
2635            type_parameters: Dummy::dummy(allocator),
2636            this_param: Dummy::dummy(allocator),
2637            params: Dummy::dummy(allocator),
2638            return_type: Dummy::dummy(allocator),
2639            scope_id: Dummy::dummy(allocator),
2640        }
2641    }
2642}
2643
2644impl<'a> Dummy<'a> for TSConstructorType<'a> {
2645    /// Create a dummy [`TSConstructorType`].
2646    ///
2647    /// Has cost of making 3 allocations (80 bytes).
2648    fn dummy(allocator: &'a Allocator) -> Self {
2649        Self {
2650            span: Dummy::dummy(allocator),
2651            r#abstract: Dummy::dummy(allocator),
2652            type_parameters: Dummy::dummy(allocator),
2653            params: Dummy::dummy(allocator),
2654            return_type: Dummy::dummy(allocator),
2655        }
2656    }
2657}
2658
2659impl<'a> Dummy<'a> for TSMappedType<'a> {
2660    /// Create a dummy [`TSMappedType`].
2661    ///
2662    /// Has cost of making 1 allocation (80 bytes).
2663    fn dummy(allocator: &'a Allocator) -> Self {
2664        Self {
2665            span: Dummy::dummy(allocator),
2666            type_parameter: Dummy::dummy(allocator),
2667            name_type: Dummy::dummy(allocator),
2668            type_annotation: Dummy::dummy(allocator),
2669            optional: Dummy::dummy(allocator),
2670            readonly: Dummy::dummy(allocator),
2671            scope_id: Dummy::dummy(allocator),
2672        }
2673    }
2674}
2675
2676impl<'a> Dummy<'a> for TSMappedTypeModifierOperator {
2677    /// Create a dummy [`TSMappedTypeModifierOperator`].
2678    ///
2679    /// Does not allocate any data into arena.
2680    #[inline(always)]
2681    fn dummy(allocator: &'a Allocator) -> Self {
2682        Self::True
2683    }
2684}
2685
2686impl<'a> Dummy<'a> for TSTemplateLiteralType<'a> {
2687    /// Create a dummy [`TSTemplateLiteralType`].
2688    ///
2689    /// Does not allocate any data into arena.
2690    fn dummy(allocator: &'a Allocator) -> Self {
2691        Self {
2692            span: Dummy::dummy(allocator),
2693            quasis: Dummy::dummy(allocator),
2694            types: Dummy::dummy(allocator),
2695        }
2696    }
2697}
2698
2699impl<'a> Dummy<'a> for TSAsExpression<'a> {
2700    /// Create a dummy [`TSAsExpression`].
2701    ///
2702    /// Has cost of making 2 allocations (16 bytes).
2703    fn dummy(allocator: &'a Allocator) -> Self {
2704        Self {
2705            span: Dummy::dummy(allocator),
2706            expression: Dummy::dummy(allocator),
2707            type_annotation: Dummy::dummy(allocator),
2708        }
2709    }
2710}
2711
2712impl<'a> Dummy<'a> for TSSatisfiesExpression<'a> {
2713    /// Create a dummy [`TSSatisfiesExpression`].
2714    ///
2715    /// Has cost of making 2 allocations (16 bytes).
2716    fn dummy(allocator: &'a Allocator) -> Self {
2717        Self {
2718            span: Dummy::dummy(allocator),
2719            expression: Dummy::dummy(allocator),
2720            type_annotation: Dummy::dummy(allocator),
2721        }
2722    }
2723}
2724
2725impl<'a> Dummy<'a> for TSTypeAssertion<'a> {
2726    /// Create a dummy [`TSTypeAssertion`].
2727    ///
2728    /// Has cost of making 2 allocations (16 bytes).
2729    fn dummy(allocator: &'a Allocator) -> Self {
2730        Self {
2731            span: Dummy::dummy(allocator),
2732            type_annotation: Dummy::dummy(allocator),
2733            expression: Dummy::dummy(allocator),
2734        }
2735    }
2736}
2737
2738impl<'a> Dummy<'a> for TSImportEqualsDeclaration<'a> {
2739    /// Create a dummy [`TSImportEqualsDeclaration`].
2740    ///
2741    /// Has cost of making 1 allocation (32 bytes).
2742    fn dummy(allocator: &'a Allocator) -> Self {
2743        Self {
2744            span: Dummy::dummy(allocator),
2745            id: Dummy::dummy(allocator),
2746            module_reference: Dummy::dummy(allocator),
2747            import_kind: Dummy::dummy(allocator),
2748        }
2749    }
2750}
2751
2752impl<'a> Dummy<'a> for TSModuleReference<'a> {
2753    /// Create a dummy [`TSModuleReference`].
2754    ///
2755    /// Has cost of making 1 allocation (32 bytes).
2756    fn dummy(allocator: &'a Allocator) -> Self {
2757        Self::IdentifierReference(Dummy::dummy(allocator))
2758    }
2759}
2760
2761impl<'a> Dummy<'a> for TSExternalModuleReference<'a> {
2762    /// Create a dummy [`TSExternalModuleReference`].
2763    ///
2764    /// Does not allocate any data into arena.
2765    fn dummy(allocator: &'a Allocator) -> Self {
2766        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2767    }
2768}
2769
2770impl<'a> Dummy<'a> for TSNonNullExpression<'a> {
2771    /// Create a dummy [`TSNonNullExpression`].
2772    ///
2773    /// Has cost of making 1 allocation (8 bytes).
2774    fn dummy(allocator: &'a Allocator) -> Self {
2775        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2776    }
2777}
2778
2779impl<'a> Dummy<'a> for Decorator<'a> {
2780    /// Create a dummy [`Decorator`].
2781    ///
2782    /// Has cost of making 1 allocation (8 bytes).
2783    fn dummy(allocator: &'a Allocator) -> Self {
2784        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2785    }
2786}
2787
2788impl<'a> Dummy<'a> for TSExportAssignment<'a> {
2789    /// Create a dummy [`TSExportAssignment`].
2790    ///
2791    /// Has cost of making 1 allocation (8 bytes).
2792    fn dummy(allocator: &'a Allocator) -> Self {
2793        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2794    }
2795}
2796
2797impl<'a> Dummy<'a> for TSNamespaceExportDeclaration<'a> {
2798    /// Create a dummy [`TSNamespaceExportDeclaration`].
2799    ///
2800    /// Does not allocate any data into arena.
2801    fn dummy(allocator: &'a Allocator) -> Self {
2802        Self { span: Dummy::dummy(allocator), id: Dummy::dummy(allocator) }
2803    }
2804}
2805
2806impl<'a> Dummy<'a> for TSInstantiationExpression<'a> {
2807    /// Create a dummy [`TSInstantiationExpression`].
2808    ///
2809    /// Has cost of making 2 allocations (40 bytes).
2810    fn dummy(allocator: &'a Allocator) -> Self {
2811        Self {
2812            span: Dummy::dummy(allocator),
2813            expression: Dummy::dummy(allocator),
2814            type_arguments: Dummy::dummy(allocator),
2815        }
2816    }
2817}
2818
2819impl<'a> Dummy<'a> for ImportOrExportKind {
2820    /// Create a dummy [`ImportOrExportKind`].
2821    ///
2822    /// Does not allocate any data into arena.
2823    #[inline(always)]
2824    fn dummy(allocator: &'a Allocator) -> Self {
2825        Self::Value
2826    }
2827}
2828
2829impl<'a> Dummy<'a> for JSDocNullableType<'a> {
2830    /// Create a dummy [`JSDocNullableType`].
2831    ///
2832    /// Has cost of making 1 allocation (8 bytes).
2833    fn dummy(allocator: &'a Allocator) -> Self {
2834        Self {
2835            span: Dummy::dummy(allocator),
2836            type_annotation: Dummy::dummy(allocator),
2837            postfix: Dummy::dummy(allocator),
2838        }
2839    }
2840}
2841
2842impl<'a> Dummy<'a> for JSDocNonNullableType<'a> {
2843    /// Create a dummy [`JSDocNonNullableType`].
2844    ///
2845    /// Has cost of making 1 allocation (8 bytes).
2846    fn dummy(allocator: &'a Allocator) -> Self {
2847        Self {
2848            span: Dummy::dummy(allocator),
2849            type_annotation: Dummy::dummy(allocator),
2850            postfix: Dummy::dummy(allocator),
2851        }
2852    }
2853}
2854
2855impl<'a> Dummy<'a> for JSDocUnknownType {
2856    /// Create a dummy [`JSDocUnknownType`].
2857    ///
2858    /// Does not allocate any data into arena.
2859    fn dummy(allocator: &'a Allocator) -> Self {
2860        Self { span: Dummy::dummy(allocator) }
2861    }
2862}