...
1
9 package ast
10
11 import (
12 "github.com/dop251/goja/file"
13 "github.com/dop251/goja/token"
14 "github.com/dop251/goja/unistring"
15 )
16
17 type PropertyKind string
18
19 const (
20 PropertyKindValue PropertyKind = "value"
21 PropertyKindGet PropertyKind = "get"
22 PropertyKindSet PropertyKind = "set"
23 PropertyKindMethod PropertyKind = "method"
24 )
25
26
27 type Node interface {
28 Idx0() file.Idx
29 Idx1() file.Idx
30 }
31
32
33
34
35
36 type (
37
38 Expression interface {
39 Node
40 _expressionNode()
41 }
42
43 BindingTarget interface {
44 Expression
45 _bindingTarget()
46 }
47
48 Binding struct {
49 Target BindingTarget
50 Initializer Expression
51 }
52
53 Pattern interface {
54 BindingTarget
55 _pattern()
56 }
57
58 YieldExpression struct {
59 Yield file.Idx
60 Argument Expression
61 Delegate bool
62 }
63
64 AwaitExpression struct {
65 Await file.Idx
66 Argument Expression
67 }
68
69 ArrayLiteral struct {
70 LeftBracket file.Idx
71 RightBracket file.Idx
72 Value []Expression
73 }
74
75 ArrayPattern struct {
76 LeftBracket file.Idx
77 RightBracket file.Idx
78 Elements []Expression
79 Rest Expression
80 }
81
82 AssignExpression struct {
83 Operator token.Token
84 Left Expression
85 Right Expression
86 }
87
88 BadExpression struct {
89 From file.Idx
90 To file.Idx
91 }
92
93 BinaryExpression struct {
94 Operator token.Token
95 Left Expression
96 Right Expression
97 Comparison bool
98 }
99
100 BooleanLiteral struct {
101 Idx file.Idx
102 Literal string
103 Value bool
104 }
105
106 BracketExpression struct {
107 Left Expression
108 Member Expression
109 LeftBracket file.Idx
110 RightBracket file.Idx
111 }
112
113 CallExpression struct {
114 Callee Expression
115 LeftParenthesis file.Idx
116 ArgumentList []Expression
117 RightParenthesis file.Idx
118 }
119
120 ConditionalExpression struct {
121 Test Expression
122 Consequent Expression
123 Alternate Expression
124 }
125
126 DotExpression struct {
127 Left Expression
128 Identifier Identifier
129 }
130
131 PrivateDotExpression struct {
132 Left Expression
133 Identifier PrivateIdentifier
134 }
135
136 OptionalChain struct {
137 Expression
138 }
139
140 Optional struct {
141 Expression
142 }
143
144 FunctionLiteral struct {
145 Function file.Idx
146 Name *Identifier
147 ParameterList *ParameterList
148 Body *BlockStatement
149 Source string
150
151 DeclarationList []*VariableDeclaration
152
153 Async, Generator bool
154 }
155
156 ClassLiteral struct {
157 Class file.Idx
158 RightBrace file.Idx
159 Name *Identifier
160 SuperClass Expression
161 Body []ClassElement
162 Source string
163 }
164
165 ConciseBody interface {
166 Node
167 _conciseBody()
168 }
169
170 ExpressionBody struct {
171 Expression Expression
172 }
173
174 ArrowFunctionLiteral struct {
175 Start file.Idx
176 ParameterList *ParameterList
177 Body ConciseBody
178 Source string
179 DeclarationList []*VariableDeclaration
180 Async bool
181 }
182
183 Identifier struct {
184 Name unistring.String
185 Idx file.Idx
186 }
187
188 PrivateIdentifier struct {
189 Identifier
190 }
191
192 NewExpression struct {
193 New file.Idx
194 Callee Expression
195 LeftParenthesis file.Idx
196 ArgumentList []Expression
197 RightParenthesis file.Idx
198 }
199
200 NullLiteral struct {
201 Idx file.Idx
202 Literal string
203 }
204
205 NumberLiteral struct {
206 Idx file.Idx
207 Literal string
208 Value interface{}
209 }
210
211 ObjectLiteral struct {
212 LeftBrace file.Idx
213 RightBrace file.Idx
214 Value []Property
215 }
216
217 ObjectPattern struct {
218 LeftBrace file.Idx
219 RightBrace file.Idx
220 Properties []Property
221 Rest Expression
222 }
223
224 ParameterList struct {
225 Opening file.Idx
226 List []*Binding
227 Rest Expression
228 Closing file.Idx
229 }
230
231 Property interface {
232 Expression
233 _property()
234 }
235
236 PropertyShort struct {
237 Name Identifier
238 Initializer Expression
239 }
240
241 PropertyKeyed struct {
242 Key Expression
243 Kind PropertyKind
244 Value Expression
245 Computed bool
246 }
247
248 SpreadElement struct {
249 Expression
250 }
251
252 RegExpLiteral struct {
253 Idx file.Idx
254 Literal string
255 Pattern string
256 Flags string
257 }
258
259 SequenceExpression struct {
260 Sequence []Expression
261 }
262
263 StringLiteral struct {
264 Idx file.Idx
265 Literal string
266 Value unistring.String
267 }
268
269 TemplateElement struct {
270 Idx file.Idx
271 Literal string
272 Parsed unistring.String
273 Valid bool
274 }
275
276 TemplateLiteral struct {
277 OpenQuote file.Idx
278 CloseQuote file.Idx
279 Tag Expression
280 Elements []*TemplateElement
281 Expressions []Expression
282 }
283
284 ThisExpression struct {
285 Idx file.Idx
286 }
287
288 SuperExpression struct {
289 Idx file.Idx
290 }
291
292 UnaryExpression struct {
293 Operator token.Token
294 Idx file.Idx
295 Operand Expression
296 Postfix bool
297 }
298
299 MetaProperty struct {
300 Meta, Property *Identifier
301 Idx file.Idx
302 }
303 )
304
305
306
307 func (*ArrayLiteral) _expressionNode() {}
308 func (*AssignExpression) _expressionNode() {}
309 func (*YieldExpression) _expressionNode() {}
310 func (*AwaitExpression) _expressionNode() {}
311 func (*BadExpression) _expressionNode() {}
312 func (*BinaryExpression) _expressionNode() {}
313 func (*BooleanLiteral) _expressionNode() {}
314 func (*BracketExpression) _expressionNode() {}
315 func (*CallExpression) _expressionNode() {}
316 func (*ConditionalExpression) _expressionNode() {}
317 func (*DotExpression) _expressionNode() {}
318 func (*PrivateDotExpression) _expressionNode() {}
319 func (*FunctionLiteral) _expressionNode() {}
320 func (*ClassLiteral) _expressionNode() {}
321 func (*ArrowFunctionLiteral) _expressionNode() {}
322 func (*Identifier) _expressionNode() {}
323 func (*NewExpression) _expressionNode() {}
324 func (*NullLiteral) _expressionNode() {}
325 func (*NumberLiteral) _expressionNode() {}
326 func (*ObjectLiteral) _expressionNode() {}
327 func (*RegExpLiteral) _expressionNode() {}
328 func (*SequenceExpression) _expressionNode() {}
329 func (*StringLiteral) _expressionNode() {}
330 func (*TemplateLiteral) _expressionNode() {}
331 func (*ThisExpression) _expressionNode() {}
332 func (*SuperExpression) _expressionNode() {}
333 func (*UnaryExpression) _expressionNode() {}
334 func (*MetaProperty) _expressionNode() {}
335 func (*ObjectPattern) _expressionNode() {}
336 func (*ArrayPattern) _expressionNode() {}
337 func (*Binding) _expressionNode() {}
338
339 func (*PropertyShort) _expressionNode() {}
340 func (*PropertyKeyed) _expressionNode() {}
341
342
343
344
345
346 type (
347
348 Statement interface {
349 Node
350 _statementNode()
351 }
352
353 BadStatement struct {
354 From file.Idx
355 To file.Idx
356 }
357
358 BlockStatement struct {
359 LeftBrace file.Idx
360 List []Statement
361 RightBrace file.Idx
362 }
363
364 BranchStatement struct {
365 Idx file.Idx
366 Token token.Token
367 Label *Identifier
368 }
369
370 CaseStatement struct {
371 Case file.Idx
372 Test Expression
373 Consequent []Statement
374 }
375
376 CatchStatement struct {
377 Catch file.Idx
378 Parameter BindingTarget
379 Body *BlockStatement
380 }
381
382 DebuggerStatement struct {
383 Debugger file.Idx
384 }
385
386 DoWhileStatement struct {
387 Do file.Idx
388 Test Expression
389 Body Statement
390 RightParenthesis file.Idx
391 }
392
393 EmptyStatement struct {
394 Semicolon file.Idx
395 }
396
397 ExpressionStatement struct {
398 Expression Expression
399 }
400
401 ForInStatement struct {
402 For file.Idx
403 Into ForInto
404 Source Expression
405 Body Statement
406 }
407
408 ForOfStatement struct {
409 For file.Idx
410 Into ForInto
411 Source Expression
412 Body Statement
413 }
414
415 ForStatement struct {
416 For file.Idx
417 Initializer ForLoopInitializer
418 Update Expression
419 Test Expression
420 Body Statement
421 }
422
423 IfStatement struct {
424 If file.Idx
425 Test Expression
426 Consequent Statement
427 Alternate Statement
428 }
429
430 LabelledStatement struct {
431 Label *Identifier
432 Colon file.Idx
433 Statement Statement
434 }
435
436 ReturnStatement struct {
437 Return file.Idx
438 Argument Expression
439 }
440
441 SwitchStatement struct {
442 Switch file.Idx
443 Discriminant Expression
444 Default int
445 Body []*CaseStatement
446 RightBrace file.Idx
447 }
448
449 ThrowStatement struct {
450 Throw file.Idx
451 Argument Expression
452 }
453
454 TryStatement struct {
455 Try file.Idx
456 Body *BlockStatement
457 Catch *CatchStatement
458 Finally *BlockStatement
459 }
460
461 VariableStatement struct {
462 Var file.Idx
463 List []*Binding
464 }
465
466 LexicalDeclaration struct {
467 Idx file.Idx
468 Token token.Token
469 List []*Binding
470 }
471
472 WhileStatement struct {
473 While file.Idx
474 Test Expression
475 Body Statement
476 }
477
478 WithStatement struct {
479 With file.Idx
480 Object Expression
481 Body Statement
482 }
483
484 FunctionDeclaration struct {
485 Function *FunctionLiteral
486 }
487
488 ClassDeclaration struct {
489 Class *ClassLiteral
490 }
491 )
492
493
494
495 func (*BadStatement) _statementNode() {}
496 func (*BlockStatement) _statementNode() {}
497 func (*BranchStatement) _statementNode() {}
498 func (*CaseStatement) _statementNode() {}
499 func (*CatchStatement) _statementNode() {}
500 func (*DebuggerStatement) _statementNode() {}
501 func (*DoWhileStatement) _statementNode() {}
502 func (*EmptyStatement) _statementNode() {}
503 func (*ExpressionStatement) _statementNode() {}
504 func (*ForInStatement) _statementNode() {}
505 func (*ForOfStatement) _statementNode() {}
506 func (*ForStatement) _statementNode() {}
507 func (*IfStatement) _statementNode() {}
508 func (*LabelledStatement) _statementNode() {}
509 func (*ReturnStatement) _statementNode() {}
510 func (*SwitchStatement) _statementNode() {}
511 func (*ThrowStatement) _statementNode() {}
512 func (*TryStatement) _statementNode() {}
513 func (*VariableStatement) _statementNode() {}
514 func (*WhileStatement) _statementNode() {}
515 func (*WithStatement) _statementNode() {}
516 func (*LexicalDeclaration) _statementNode() {}
517 func (*FunctionDeclaration) _statementNode() {}
518 func (*ClassDeclaration) _statementNode() {}
519
520
521
522
523
524 type (
525 VariableDeclaration struct {
526 Var file.Idx
527 List []*Binding
528 }
529
530 ClassElement interface {
531 Node
532 _classElement()
533 }
534
535 FieldDefinition struct {
536 Idx file.Idx
537 Key Expression
538 Initializer Expression
539 Computed bool
540 Static bool
541 }
542
543 MethodDefinition struct {
544 Idx file.Idx
545 Key Expression
546 Kind PropertyKind
547 Body *FunctionLiteral
548 Computed bool
549 Static bool
550 }
551
552 ClassStaticBlock struct {
553 Static file.Idx
554 Block *BlockStatement
555 Source string
556 DeclarationList []*VariableDeclaration
557 }
558 )
559
560 type (
561 ForLoopInitializer interface {
562 Node
563 _forLoopInitializer()
564 }
565
566 ForLoopInitializerExpression struct {
567 Expression Expression
568 }
569
570 ForLoopInitializerVarDeclList struct {
571 Var file.Idx
572 List []*Binding
573 }
574
575 ForLoopInitializerLexicalDecl struct {
576 LexicalDeclaration LexicalDeclaration
577 }
578
579 ForInto interface {
580 Node
581 _forInto()
582 }
583
584 ForIntoVar struct {
585 Binding *Binding
586 }
587
588 ForDeclaration struct {
589 Idx file.Idx
590 IsConst bool
591 Target BindingTarget
592 }
593
594 ForIntoExpression struct {
595 Expression Expression
596 }
597 )
598
599 func (*ForLoopInitializerExpression) _forLoopInitializer() {}
600 func (*ForLoopInitializerVarDeclList) _forLoopInitializer() {}
601 func (*ForLoopInitializerLexicalDecl) _forLoopInitializer() {}
602
603 func (*ForIntoVar) _forInto() {}
604 func (*ForDeclaration) _forInto() {}
605 func (*ForIntoExpression) _forInto() {}
606
607 func (*ArrayPattern) _pattern() {}
608 func (*ArrayPattern) _bindingTarget() {}
609
610 func (*ObjectPattern) _pattern() {}
611 func (*ObjectPattern) _bindingTarget() {}
612
613 func (*BadExpression) _bindingTarget() {}
614
615 func (*PropertyShort) _property() {}
616 func (*PropertyKeyed) _property() {}
617 func (*SpreadElement) _property() {}
618
619 func (*Identifier) _bindingTarget() {}
620
621 func (*BlockStatement) _conciseBody() {}
622 func (*ExpressionBody) _conciseBody() {}
623
624 func (*FieldDefinition) _classElement() {}
625 func (*MethodDefinition) _classElement() {}
626 func (*ClassStaticBlock) _classElement() {}
627
628
629
630
631
632 type Program struct {
633 Body []Statement
634
635 DeclarationList []*VariableDeclaration
636
637 File *file.File
638 }
639
640
641
642
643
644 func (self *ArrayLiteral) Idx0() file.Idx { return self.LeftBracket }
645 func (self *ArrayPattern) Idx0() file.Idx { return self.LeftBracket }
646 func (self *YieldExpression) Idx0() file.Idx { return self.Yield }
647 func (self *AwaitExpression) Idx0() file.Idx { return self.Await }
648 func (self *ObjectPattern) Idx0() file.Idx { return self.LeftBrace }
649 func (self *ParameterList) Idx0() file.Idx { return self.Opening }
650 func (self *AssignExpression) Idx0() file.Idx { return self.Left.Idx0() }
651 func (self *BadExpression) Idx0() file.Idx { return self.From }
652 func (self *BinaryExpression) Idx0() file.Idx { return self.Left.Idx0() }
653 func (self *BooleanLiteral) Idx0() file.Idx { return self.Idx }
654 func (self *BracketExpression) Idx0() file.Idx { return self.Left.Idx0() }
655 func (self *CallExpression) Idx0() file.Idx { return self.Callee.Idx0() }
656 func (self *ConditionalExpression) Idx0() file.Idx { return self.Test.Idx0() }
657 func (self *DotExpression) Idx0() file.Idx { return self.Left.Idx0() }
658 func (self *PrivateDotExpression) Idx0() file.Idx { return self.Left.Idx0() }
659 func (self *FunctionLiteral) Idx0() file.Idx { return self.Function }
660 func (self *ClassLiteral) Idx0() file.Idx { return self.Class }
661 func (self *ArrowFunctionLiteral) Idx0() file.Idx { return self.Start }
662 func (self *Identifier) Idx0() file.Idx { return self.Idx }
663 func (self *NewExpression) Idx0() file.Idx { return self.New }
664 func (self *NullLiteral) Idx0() file.Idx { return self.Idx }
665 func (self *NumberLiteral) Idx0() file.Idx { return self.Idx }
666 func (self *ObjectLiteral) Idx0() file.Idx { return self.LeftBrace }
667 func (self *RegExpLiteral) Idx0() file.Idx { return self.Idx }
668 func (self *SequenceExpression) Idx0() file.Idx { return self.Sequence[0].Idx0() }
669 func (self *StringLiteral) Idx0() file.Idx { return self.Idx }
670 func (self *TemplateElement) Idx0() file.Idx { return self.Idx }
671 func (self *TemplateLiteral) Idx0() file.Idx { return self.OpenQuote }
672 func (self *ThisExpression) Idx0() file.Idx { return self.Idx }
673 func (self *SuperExpression) Idx0() file.Idx { return self.Idx }
674 func (self *UnaryExpression) Idx0() file.Idx {
675 if self.Postfix {
676 return self.Operand.Idx0()
677 }
678 return self.Idx
679 }
680 func (self *MetaProperty) Idx0() file.Idx { return self.Idx }
681
682 func (self *BadStatement) Idx0() file.Idx { return self.From }
683 func (self *BlockStatement) Idx0() file.Idx { return self.LeftBrace }
684 func (self *BranchStatement) Idx0() file.Idx { return self.Idx }
685 func (self *CaseStatement) Idx0() file.Idx { return self.Case }
686 func (self *CatchStatement) Idx0() file.Idx { return self.Catch }
687 func (self *DebuggerStatement) Idx0() file.Idx { return self.Debugger }
688 func (self *DoWhileStatement) Idx0() file.Idx { return self.Do }
689 func (self *EmptyStatement) Idx0() file.Idx { return self.Semicolon }
690 func (self *ExpressionStatement) Idx0() file.Idx { return self.Expression.Idx0() }
691 func (self *ForInStatement) Idx0() file.Idx { return self.For }
692 func (self *ForOfStatement) Idx0() file.Idx { return self.For }
693 func (self *ForStatement) Idx0() file.Idx { return self.For }
694 func (self *IfStatement) Idx0() file.Idx { return self.If }
695 func (self *LabelledStatement) Idx0() file.Idx { return self.Label.Idx0() }
696 func (self *Program) Idx0() file.Idx { return self.Body[0].Idx0() }
697 func (self *ReturnStatement) Idx0() file.Idx { return self.Return }
698 func (self *SwitchStatement) Idx0() file.Idx { return self.Switch }
699 func (self *ThrowStatement) Idx0() file.Idx { return self.Throw }
700 func (self *TryStatement) Idx0() file.Idx { return self.Try }
701 func (self *VariableStatement) Idx0() file.Idx { return self.Var }
702 func (self *WhileStatement) Idx0() file.Idx { return self.While }
703 func (self *WithStatement) Idx0() file.Idx { return self.With }
704 func (self *LexicalDeclaration) Idx0() file.Idx { return self.Idx }
705 func (self *FunctionDeclaration) Idx0() file.Idx { return self.Function.Idx0() }
706 func (self *ClassDeclaration) Idx0() file.Idx { return self.Class.Idx0() }
707 func (self *Binding) Idx0() file.Idx { return self.Target.Idx0() }
708
709 func (self *ForLoopInitializerExpression) Idx0() file.Idx { return self.Expression.Idx0() }
710 func (self *ForLoopInitializerVarDeclList) Idx0() file.Idx { return self.List[0].Idx0() }
711 func (self *ForLoopInitializerLexicalDecl) Idx0() file.Idx { return self.LexicalDeclaration.Idx0() }
712 func (self *PropertyShort) Idx0() file.Idx { return self.Name.Idx }
713 func (self *PropertyKeyed) Idx0() file.Idx { return self.Key.Idx0() }
714 func (self *ExpressionBody) Idx0() file.Idx { return self.Expression.Idx0() }
715
716 func (self *VariableDeclaration) Idx0() file.Idx { return self.Var }
717 func (self *FieldDefinition) Idx0() file.Idx { return self.Idx }
718 func (self *MethodDefinition) Idx0() file.Idx { return self.Idx }
719 func (self *ClassStaticBlock) Idx0() file.Idx { return self.Static }
720
721 func (self *ForDeclaration) Idx0() file.Idx { return self.Idx }
722 func (self *ForIntoVar) Idx0() file.Idx { return self.Binding.Idx0() }
723 func (self *ForIntoExpression) Idx0() file.Idx { return self.Expression.Idx0() }
724
725
726
727
728
729 func (self *ArrayLiteral) Idx1() file.Idx { return self.RightBracket + 1 }
730 func (self *ArrayPattern) Idx1() file.Idx { return self.RightBracket + 1 }
731 func (self *AssignExpression) Idx1() file.Idx { return self.Right.Idx1() }
732 func (self *AwaitExpression) Idx1() file.Idx { return self.Argument.Idx1() }
733 func (self *BadExpression) Idx1() file.Idx { return self.To }
734 func (self *BinaryExpression) Idx1() file.Idx { return self.Right.Idx1() }
735 func (self *BooleanLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) }
736 func (self *BracketExpression) Idx1() file.Idx { return self.RightBracket + 1 }
737 func (self *CallExpression) Idx1() file.Idx { return self.RightParenthesis + 1 }
738 func (self *ConditionalExpression) Idx1() file.Idx { return self.Alternate.Idx1() }
739 func (self *DotExpression) Idx1() file.Idx { return self.Identifier.Idx1() }
740 func (self *PrivateDotExpression) Idx1() file.Idx { return self.Identifier.Idx1() }
741 func (self *FunctionLiteral) Idx1() file.Idx { return self.Body.Idx1() }
742 func (self *ClassLiteral) Idx1() file.Idx { return self.RightBrace + 1 }
743 func (self *ArrowFunctionLiteral) Idx1() file.Idx { return self.Body.Idx1() }
744 func (self *Identifier) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Name)) }
745 func (self *NewExpression) Idx1() file.Idx {
746 if self.ArgumentList != nil {
747 return self.RightParenthesis + 1
748 } else {
749 return self.Callee.Idx1()
750 }
751 }
752 func (self *NullLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + 4) }
753 func (self *NumberLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) }
754 func (self *ObjectLiteral) Idx1() file.Idx { return self.RightBrace + 1 }
755 func (self *ObjectPattern) Idx1() file.Idx { return self.RightBrace + 1 }
756 func (self *ParameterList) Idx1() file.Idx { return self.Closing + 1 }
757 func (self *RegExpLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) }
758 func (self *SequenceExpression) Idx1() file.Idx { return self.Sequence[len(self.Sequence)-1].Idx1() }
759 func (self *StringLiteral) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) }
760 func (self *TemplateElement) Idx1() file.Idx { return file.Idx(int(self.Idx) + len(self.Literal)) }
761 func (self *TemplateLiteral) Idx1() file.Idx { return self.CloseQuote + 1 }
762 func (self *ThisExpression) Idx1() file.Idx { return self.Idx + 4 }
763 func (self *SuperExpression) Idx1() file.Idx { return self.Idx + 5 }
764 func (self *UnaryExpression) Idx1() file.Idx {
765 if self.Postfix {
766 return self.Operand.Idx1() + 2
767 }
768 return self.Operand.Idx1()
769 }
770 func (self *MetaProperty) Idx1() file.Idx {
771 return self.Property.Idx1()
772 }
773
774 func (self *BadStatement) Idx1() file.Idx { return self.To }
775 func (self *BlockStatement) Idx1() file.Idx { return self.RightBrace + 1 }
776 func (self *BranchStatement) Idx1() file.Idx {
777 if self.Label == nil {
778 return file.Idx(int(self.Idx) + len(self.Token.String()))
779 }
780 return self.Label.Idx1()
781 }
782 func (self *CaseStatement) Idx1() file.Idx { return self.Consequent[len(self.Consequent)-1].Idx1() }
783 func (self *CatchStatement) Idx1() file.Idx { return self.Body.Idx1() }
784 func (self *DebuggerStatement) Idx1() file.Idx { return self.Debugger + 8 }
785 func (self *DoWhileStatement) Idx1() file.Idx { return self.RightParenthesis + 1 }
786 func (self *EmptyStatement) Idx1() file.Idx { return self.Semicolon + 1 }
787 func (self *ExpressionStatement) Idx1() file.Idx { return self.Expression.Idx1() }
788 func (self *ForInStatement) Idx1() file.Idx { return self.Body.Idx1() }
789 func (self *ForOfStatement) Idx1() file.Idx { return self.Body.Idx1() }
790 func (self *ForStatement) Idx1() file.Idx { return self.Body.Idx1() }
791 func (self *IfStatement) Idx1() file.Idx {
792 if self.Alternate != nil {
793 return self.Alternate.Idx1()
794 }
795 return self.Consequent.Idx1()
796 }
797 func (self *LabelledStatement) Idx1() file.Idx { return self.Statement.Idx1() }
798 func (self *Program) Idx1() file.Idx { return self.Body[len(self.Body)-1].Idx1() }
799 func (self *ReturnStatement) Idx1() file.Idx {
800 if self.Argument != nil {
801 return self.Argument.Idx1()
802 }
803 return self.Return + 6
804 }
805 func (self *SwitchStatement) Idx1() file.Idx { return self.RightBrace + 1 }
806 func (self *ThrowStatement) Idx1() file.Idx { return self.Argument.Idx1() }
807 func (self *TryStatement) Idx1() file.Idx {
808 if self.Finally != nil {
809 return self.Finally.Idx1()
810 }
811 if self.Catch != nil {
812 return self.Catch.Idx1()
813 }
814 return self.Body.Idx1()
815 }
816 func (self *VariableStatement) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() }
817 func (self *WhileStatement) Idx1() file.Idx { return self.Body.Idx1() }
818 func (self *WithStatement) Idx1() file.Idx { return self.Body.Idx1() }
819 func (self *LexicalDeclaration) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() }
820 func (self *FunctionDeclaration) Idx1() file.Idx { return self.Function.Idx1() }
821 func (self *ClassDeclaration) Idx1() file.Idx { return self.Class.Idx1() }
822 func (self *Binding) Idx1() file.Idx {
823 if self.Initializer != nil {
824 return self.Initializer.Idx1()
825 }
826 return self.Target.Idx1()
827 }
828
829 func (self *ForLoopInitializerExpression) Idx1() file.Idx { return self.Expression.Idx1() }
830 func (self *ForLoopInitializerVarDeclList) Idx1() file.Idx { return self.List[len(self.List)-1].Idx1() }
831 func (self *ForLoopInitializerLexicalDecl) Idx1() file.Idx { return self.LexicalDeclaration.Idx1() }
832
833 func (self *PropertyShort) Idx1() file.Idx {
834 if self.Initializer != nil {
835 return self.Initializer.Idx1()
836 }
837 return self.Name.Idx1()
838 }
839
840 func (self *PropertyKeyed) Idx1() file.Idx { return self.Value.Idx1() }
841
842 func (self *ExpressionBody) Idx1() file.Idx { return self.Expression.Idx1() }
843
844 func (self *VariableDeclaration) Idx1() file.Idx {
845 if len(self.List) > 0 {
846 return self.List[len(self.List)-1].Idx1()
847 }
848
849 return self.Var + 3
850 }
851
852 func (self *FieldDefinition) Idx1() file.Idx {
853 if self.Initializer != nil {
854 return self.Initializer.Idx1()
855 }
856 return self.Key.Idx1()
857 }
858
859 func (self *MethodDefinition) Idx1() file.Idx {
860 return self.Body.Idx1()
861 }
862
863 func (self *ClassStaticBlock) Idx1() file.Idx {
864 return self.Block.Idx1()
865 }
866
867 func (self *YieldExpression) Idx1() file.Idx {
868 if self.Argument != nil {
869 return self.Argument.Idx1()
870 }
871 return self.Yield + 5
872 }
873
874 func (self *ForDeclaration) Idx1() file.Idx { return self.Target.Idx1() }
875 func (self *ForIntoVar) Idx1() file.Idx { return self.Binding.Idx1() }
876 func (self *ForIntoExpression) Idx1() file.Idx { return self.Expression.Idx1() }
877
View as plain text