terser 5.12.0 → 5.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/bundle.min.js +5032 -3341
- package/lib/ast.js +1686 -350
- package/lib/compress/common.js +48 -0
- package/lib/compress/evaluate.js +4 -3
- package/lib/compress/index.js +23 -546
- package/lib/compress/inline.js +641 -0
- package/lib/compress/tighten-body.js +1 -1
- package/lib/equivalent-to.js +81 -107
- package/lib/mozilla-ast.js +474 -81
- package/lib/output.js +2 -1
- package/lib/parse.js +58 -56
- package/lib/propmangle.js +1 -1
- package/lib/scope.js +22 -0
- package/lib/size.js +6 -8
- package/package.json +2 -2
- package/tools/domprops.js +11 -0
package/lib/mozilla-ast.js
CHANGED
@@ -41,7 +41,6 @@
|
|
41
41
|
|
42
42
|
***********************************************************************/
|
43
43
|
|
44
|
-
import * as ast from "./ast.js";
|
45
44
|
import { make_node } from "./utils/index.js";
|
46
45
|
import {
|
47
46
|
AST_Accessor,
|
@@ -206,6 +205,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
206
205
|
body: normalize_directives(M.body.map(from_moz))
|
207
206
|
});
|
208
207
|
},
|
208
|
+
|
209
209
|
ArrayPattern: function(M) {
|
210
210
|
return new AST_Destructuring({
|
211
211
|
start: my_start_token(M),
|
@@ -219,6 +219,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
219
219
|
is_array: true
|
220
220
|
});
|
221
221
|
},
|
222
|
+
|
222
223
|
ObjectPattern: function(M) {
|
223
224
|
return new AST_Destructuring({
|
224
225
|
start: my_start_token(M),
|
@@ -227,6 +228,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
227
228
|
is_array: false
|
228
229
|
});
|
229
230
|
},
|
231
|
+
|
230
232
|
AssignmentPattern: function(M) {
|
231
233
|
return new AST_DefaultAssign({
|
232
234
|
start: my_start_token(M),
|
@@ -236,6 +238,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
236
238
|
right: from_moz(M.right)
|
237
239
|
});
|
238
240
|
},
|
241
|
+
|
239
242
|
SpreadElement: function(M) {
|
240
243
|
return new AST_Expansion({
|
241
244
|
start: my_start_token(M),
|
@@ -243,6 +246,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
243
246
|
expression: from_moz(M.argument)
|
244
247
|
});
|
245
248
|
},
|
249
|
+
|
246
250
|
RestElement: function(M) {
|
247
251
|
return new AST_Expansion({
|
248
252
|
start: my_start_token(M),
|
@@ -250,6 +254,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
250
254
|
expression: from_moz(M.argument)
|
251
255
|
});
|
252
256
|
},
|
257
|
+
|
253
258
|
TemplateElement: function(M) {
|
254
259
|
return new AST_TemplateSegment({
|
255
260
|
start: my_start_token(M),
|
@@ -258,6 +263,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
258
263
|
raw: M.value.raw
|
259
264
|
});
|
260
265
|
},
|
266
|
+
|
261
267
|
TemplateLiteral: function(M) {
|
262
268
|
var segments = [];
|
263
269
|
for (var i = 0; i < M.quasis.length; i++) {
|
@@ -272,6 +278,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
272
278
|
segments: segments
|
273
279
|
});
|
274
280
|
},
|
281
|
+
|
275
282
|
TaggedTemplateExpression: function(M) {
|
276
283
|
return new AST_PrefixedTemplateString({
|
277
284
|
start: my_start_token(M),
|
@@ -280,6 +287,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
280
287
|
prefix: from_moz(M.tag)
|
281
288
|
});
|
282
289
|
},
|
290
|
+
|
283
291
|
FunctionDeclaration: function(M) {
|
284
292
|
return new AST_Defun({
|
285
293
|
start: my_start_token(M),
|
@@ -291,6 +299,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
291
299
|
body: normalize_directives(from_moz(M.body).body)
|
292
300
|
});
|
293
301
|
},
|
302
|
+
|
294
303
|
FunctionExpression: function(M) {
|
295
304
|
return new AST_Function({
|
296
305
|
start: my_start_token(M),
|
@@ -302,6 +311,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
302
311
|
body: normalize_directives(from_moz(M.body).body)
|
303
312
|
});
|
304
313
|
},
|
314
|
+
|
305
315
|
ArrowFunctionExpression: function(M) {
|
306
316
|
const body = M.body.type === "BlockStatement"
|
307
317
|
? from_moz(M.body).body
|
@@ -314,6 +324,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
314
324
|
async: M.async,
|
315
325
|
});
|
316
326
|
},
|
327
|
+
|
317
328
|
ExpressionStatement: function(M) {
|
318
329
|
return new AST_SimpleStatement({
|
319
330
|
start: my_start_token(M),
|
@@ -321,6 +332,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
321
332
|
body: from_moz(M.expression)
|
322
333
|
});
|
323
334
|
},
|
335
|
+
|
324
336
|
TryStatement: function(M) {
|
325
337
|
var handlers = M.handlers || [M.handler];
|
326
338
|
if (handlers.length > 1 || M.guardedHandlers && M.guardedHandlers.length) {
|
@@ -334,6 +346,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
334
346
|
bfinally : M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null
|
335
347
|
});
|
336
348
|
},
|
349
|
+
|
337
350
|
Property: function(M) {
|
338
351
|
var key = M.key;
|
339
352
|
var args = {
|
@@ -376,6 +389,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
376
389
|
return new AST_ConciseMethod(args);
|
377
390
|
}
|
378
391
|
},
|
392
|
+
|
379
393
|
MethodDefinition: function(M) {
|
380
394
|
var args = {
|
381
395
|
start : my_start_token(M),
|
@@ -394,6 +408,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
394
408
|
args.async = M.value.async;
|
395
409
|
return new AST_ConciseMethod(args);
|
396
410
|
},
|
411
|
+
|
397
412
|
FieldDefinition: function(M) {
|
398
413
|
let key;
|
399
414
|
if (M.computed) {
|
@@ -410,6 +425,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
410
425
|
static : M.static,
|
411
426
|
});
|
412
427
|
},
|
428
|
+
|
413
429
|
PropertyDefinition: function(M) {
|
414
430
|
let key;
|
415
431
|
if (M.computed) {
|
@@ -427,6 +443,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
427
443
|
static : M.static,
|
428
444
|
});
|
429
445
|
},
|
446
|
+
|
430
447
|
ArrayExpression: function(M) {
|
431
448
|
return new AST_Array({
|
432
449
|
start : my_start_token(M),
|
@@ -436,6 +453,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
436
453
|
})
|
437
454
|
});
|
438
455
|
},
|
456
|
+
|
439
457
|
ObjectExpression: function(M) {
|
440
458
|
return new AST_Object({
|
441
459
|
start : my_start_token(M),
|
@@ -449,6 +467,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
449
467
|
})
|
450
468
|
});
|
451
469
|
},
|
470
|
+
|
452
471
|
SequenceExpression: function(M) {
|
453
472
|
return new AST_Sequence({
|
454
473
|
start : my_start_token(M),
|
@@ -456,6 +475,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
456
475
|
expressions: M.expressions.map(from_moz)
|
457
476
|
});
|
458
477
|
},
|
478
|
+
|
459
479
|
MemberExpression: function(M) {
|
460
480
|
return new (M.computed ? AST_Sub : AST_Dot)({
|
461
481
|
start : my_start_token(M),
|
@@ -465,6 +485,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
465
485
|
optional : M.optional || false
|
466
486
|
});
|
467
487
|
},
|
488
|
+
|
468
489
|
ChainExpression: function(M) {
|
469
490
|
return new AST_Chain({
|
470
491
|
start : my_start_token(M),
|
@@ -472,6 +493,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
472
493
|
expression : from_moz(M.expression)
|
473
494
|
});
|
474
495
|
},
|
496
|
+
|
475
497
|
SwitchCase: function(M) {
|
476
498
|
return new (M.test ? AST_Case : AST_Default)({
|
477
499
|
start : my_start_token(M),
|
@@ -480,6 +502,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
480
502
|
body : M.consequent.map(from_moz)
|
481
503
|
});
|
482
504
|
},
|
505
|
+
|
483
506
|
VariableDeclaration: function(M) {
|
484
507
|
return new (M.kind === "const" ? AST_Const :
|
485
508
|
M.kind === "let" ? AST_Let : AST_Var)({
|
@@ -522,6 +545,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
522
545
|
assert_clause: assert_clause_from_moz(M.assertions)
|
523
546
|
});
|
524
547
|
},
|
548
|
+
|
525
549
|
ExportAllDeclaration: function(M) {
|
526
550
|
return new AST_Export({
|
527
551
|
start: my_start_token(M),
|
@@ -536,6 +560,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
536
560
|
assert_clause: assert_clause_from_moz(M.assertions)
|
537
561
|
});
|
538
562
|
},
|
563
|
+
|
539
564
|
ExportNamedDeclaration: function(M) {
|
540
565
|
return new AST_Export({
|
541
566
|
start: my_start_token(M),
|
@@ -551,6 +576,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
551
576
|
assert_clause: assert_clause_from_moz(M.assertions)
|
552
577
|
});
|
553
578
|
},
|
579
|
+
|
554
580
|
ExportDefaultDeclaration: function(M) {
|
555
581
|
return new AST_Export({
|
556
582
|
start: my_start_token(M),
|
@@ -559,6 +585,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
559
585
|
is_default: true
|
560
586
|
});
|
561
587
|
},
|
588
|
+
|
562
589
|
Literal: function(M) {
|
563
590
|
var val = M.value, args = {
|
564
591
|
start : my_start_token(M),
|
@@ -594,6 +621,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
594
621
|
return new (val ? AST_True : AST_False)(args);
|
595
622
|
}
|
596
623
|
},
|
624
|
+
|
597
625
|
MetaProperty: function(M) {
|
598
626
|
if (M.meta.name === "new" && M.property.name === "target") {
|
599
627
|
return new AST_NewTarget({
|
@@ -607,6 +635,7 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
607
635
|
});
|
608
636
|
}
|
609
637
|
},
|
638
|
+
|
610
639
|
Identifier: function(M) {
|
611
640
|
var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2];
|
612
641
|
return new ( p.type == "LabeledStatement" ? AST_Label
|
@@ -629,12 +658,262 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
629
658
|
name : M.name
|
630
659
|
});
|
631
660
|
},
|
661
|
+
|
632
662
|
BigIntLiteral(M) {
|
633
663
|
return new AST_BigInt({
|
634
664
|
start : my_start_token(M),
|
635
665
|
end : my_end_token(M),
|
636
666
|
value : M.value
|
637
667
|
});
|
668
|
+
},
|
669
|
+
|
670
|
+
EmptyStatement: function(M) {
|
671
|
+
return new AST_EmptyStatement({
|
672
|
+
start: my_start_token(M),
|
673
|
+
end: my_end_token(M)
|
674
|
+
});
|
675
|
+
},
|
676
|
+
|
677
|
+
BlockStatement: function(M) {
|
678
|
+
return new AST_BlockStatement({
|
679
|
+
start: my_start_token(M),
|
680
|
+
end: my_end_token(M),
|
681
|
+
body: M.body.map(from_moz)
|
682
|
+
});
|
683
|
+
},
|
684
|
+
|
685
|
+
IfStatement: function(M) {
|
686
|
+
return new AST_If({
|
687
|
+
start: my_start_token(M),
|
688
|
+
end: my_end_token(M),
|
689
|
+
condition: from_moz(M.test),
|
690
|
+
body: from_moz(M.consequent),
|
691
|
+
alternative: from_moz(M.alternate)
|
692
|
+
});
|
693
|
+
},
|
694
|
+
|
695
|
+
LabeledStatement: function(M) {
|
696
|
+
return new AST_LabeledStatement({
|
697
|
+
start: my_start_token(M),
|
698
|
+
end: my_end_token(M),
|
699
|
+
label: from_moz(M.label),
|
700
|
+
body: from_moz(M.body)
|
701
|
+
});
|
702
|
+
},
|
703
|
+
|
704
|
+
BreakStatement: function(M) {
|
705
|
+
return new AST_Break({
|
706
|
+
start: my_start_token(M),
|
707
|
+
end: my_end_token(M),
|
708
|
+
label: from_moz(M.label)
|
709
|
+
});
|
710
|
+
},
|
711
|
+
|
712
|
+
ContinueStatement: function(M) {
|
713
|
+
return new AST_Continue({
|
714
|
+
start: my_start_token(M),
|
715
|
+
end: my_end_token(M),
|
716
|
+
label: from_moz(M.label)
|
717
|
+
});
|
718
|
+
},
|
719
|
+
|
720
|
+
WithStatement: function(M) {
|
721
|
+
return new AST_With({
|
722
|
+
start: my_start_token(M),
|
723
|
+
end: my_end_token(M),
|
724
|
+
expression: from_moz(M.object),
|
725
|
+
body: from_moz(M.body)
|
726
|
+
});
|
727
|
+
},
|
728
|
+
|
729
|
+
SwitchStatement: function(M) {
|
730
|
+
return new AST_Switch({
|
731
|
+
start: my_start_token(M),
|
732
|
+
end: my_end_token(M),
|
733
|
+
expression: from_moz(M.discriminant),
|
734
|
+
body: M.cases.map(from_moz)
|
735
|
+
});
|
736
|
+
},
|
737
|
+
|
738
|
+
ReturnStatement: function(M) {
|
739
|
+
return new AST_Return({
|
740
|
+
start: my_start_token(M),
|
741
|
+
end: my_end_token(M),
|
742
|
+
value: from_moz(M.argument)
|
743
|
+
});
|
744
|
+
},
|
745
|
+
|
746
|
+
ThrowStatement: function(M) {
|
747
|
+
return new AST_Throw({
|
748
|
+
start: my_start_token(M),
|
749
|
+
end: my_end_token(M),
|
750
|
+
value: from_moz(M.argument)
|
751
|
+
});
|
752
|
+
},
|
753
|
+
|
754
|
+
WhileStatement: function(M) {
|
755
|
+
return new AST_While({
|
756
|
+
start: my_start_token(M),
|
757
|
+
end: my_end_token(M),
|
758
|
+
condition: from_moz(M.test),
|
759
|
+
body: from_moz(M.body)
|
760
|
+
});
|
761
|
+
},
|
762
|
+
|
763
|
+
DoWhileStatement: function(M) {
|
764
|
+
return new AST_Do({
|
765
|
+
start: my_start_token(M),
|
766
|
+
end: my_end_token(M),
|
767
|
+
condition: from_moz(M.test),
|
768
|
+
body: from_moz(M.body)
|
769
|
+
});
|
770
|
+
},
|
771
|
+
|
772
|
+
ForStatement: function(M) {
|
773
|
+
return new AST_For({
|
774
|
+
start: my_start_token(M),
|
775
|
+
end: my_end_token(M),
|
776
|
+
init: from_moz(M.init),
|
777
|
+
condition: from_moz(M.test),
|
778
|
+
step: from_moz(M.update),
|
779
|
+
body: from_moz(M.body)
|
780
|
+
});
|
781
|
+
},
|
782
|
+
|
783
|
+
ForInStatement: function(M) {
|
784
|
+
return new AST_ForIn({
|
785
|
+
start: my_start_token(M),
|
786
|
+
end: my_end_token(M),
|
787
|
+
init: from_moz(M.left),
|
788
|
+
object: from_moz(M.right),
|
789
|
+
body: from_moz(M.body)
|
790
|
+
});
|
791
|
+
},
|
792
|
+
|
793
|
+
ForOfStatement: function(M) {
|
794
|
+
return new AST_ForOf({
|
795
|
+
start: my_start_token(M),
|
796
|
+
end: my_end_token(M),
|
797
|
+
init: from_moz(M.left),
|
798
|
+
object: from_moz(M.right),
|
799
|
+
body: from_moz(M.body),
|
800
|
+
await: M.await
|
801
|
+
});
|
802
|
+
},
|
803
|
+
|
804
|
+
AwaitExpression: function(M) {
|
805
|
+
return new AST_Await({
|
806
|
+
start: my_start_token(M),
|
807
|
+
end: my_end_token(M),
|
808
|
+
expression: from_moz(M.argument)
|
809
|
+
});
|
810
|
+
},
|
811
|
+
|
812
|
+
YieldExpression: function(M) {
|
813
|
+
return new AST_Yield({
|
814
|
+
start: my_start_token(M),
|
815
|
+
end: my_end_token(M),
|
816
|
+
expression: from_moz(M.argument),
|
817
|
+
is_star: M.delegate
|
818
|
+
});
|
819
|
+
},
|
820
|
+
|
821
|
+
DebuggerStatement: function(M) {
|
822
|
+
return new AST_Debugger({
|
823
|
+
start: my_start_token(M),
|
824
|
+
end: my_end_token(M)
|
825
|
+
});
|
826
|
+
},
|
827
|
+
|
828
|
+
VariableDeclarator: function(M) {
|
829
|
+
return new AST_VarDef({
|
830
|
+
start: my_start_token(M),
|
831
|
+
end: my_end_token(M),
|
832
|
+
name: from_moz(M.id),
|
833
|
+
value: from_moz(M.init)
|
834
|
+
});
|
835
|
+
},
|
836
|
+
|
837
|
+
CatchClause: function(M) {
|
838
|
+
return new AST_Catch({
|
839
|
+
start: my_start_token(M),
|
840
|
+
end: my_end_token(M),
|
841
|
+
argname: from_moz(M.param),
|
842
|
+
body: from_moz(M.body).body
|
843
|
+
});
|
844
|
+
},
|
845
|
+
|
846
|
+
ThisExpression: function(M) {
|
847
|
+
return new AST_This({
|
848
|
+
start: my_start_token(M),
|
849
|
+
end: my_end_token(M)
|
850
|
+
});
|
851
|
+
},
|
852
|
+
|
853
|
+
Super: function(M) {
|
854
|
+
return new AST_Super({
|
855
|
+
start: my_start_token(M),
|
856
|
+
end: my_end_token(M)
|
857
|
+
});
|
858
|
+
},
|
859
|
+
|
860
|
+
BinaryExpression: function(M) {
|
861
|
+
return new AST_Binary({
|
862
|
+
start: my_start_token(M),
|
863
|
+
end: my_end_token(M),
|
864
|
+
operator: M.operator,
|
865
|
+
left: from_moz(M.left),
|
866
|
+
right: from_moz(M.right)
|
867
|
+
});
|
868
|
+
},
|
869
|
+
|
870
|
+
LogicalExpression: function(M) {
|
871
|
+
return new AST_Binary({
|
872
|
+
start: my_start_token(M),
|
873
|
+
end: my_end_token(M),
|
874
|
+
operator: M.operator,
|
875
|
+
left: from_moz(M.left),
|
876
|
+
right: from_moz(M.right)
|
877
|
+
});
|
878
|
+
},
|
879
|
+
|
880
|
+
AssignmentExpression: function(M) {
|
881
|
+
return new AST_Assign({
|
882
|
+
start: my_start_token(M),
|
883
|
+
end: my_end_token(M),
|
884
|
+
operator: M.operator,
|
885
|
+
left: from_moz(M.left),
|
886
|
+
right: from_moz(M.right)
|
887
|
+
});
|
888
|
+
},
|
889
|
+
|
890
|
+
ConditionalExpression: function(M) {
|
891
|
+
return new AST_Conditional({
|
892
|
+
start: my_start_token(M),
|
893
|
+
end: my_end_token(M),
|
894
|
+
condition: from_moz(M.test),
|
895
|
+
consequent: from_moz(M.consequent),
|
896
|
+
alternative: from_moz(M.alternate)
|
897
|
+
});
|
898
|
+
},
|
899
|
+
|
900
|
+
NewExpression: function(M) {
|
901
|
+
return new AST_New({
|
902
|
+
start: my_start_token(M),
|
903
|
+
end: my_end_token(M),
|
904
|
+
expression: from_moz(M.callee),
|
905
|
+
args: M.arguments.map(from_moz)
|
906
|
+
});
|
907
|
+
},
|
908
|
+
|
909
|
+
CallExpression: function(M) {
|
910
|
+
return new AST_Call({
|
911
|
+
start: my_start_token(M),
|
912
|
+
end: my_end_token(M),
|
913
|
+
expression: from_moz(M.callee),
|
914
|
+
optional: M.optional,
|
915
|
+
args: M.arguments.map(from_moz)
|
916
|
+
});
|
638
917
|
}
|
639
918
|
};
|
640
919
|
|
@@ -661,35 +940,200 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
661
940
|
});
|
662
941
|
};
|
663
942
|
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
943
|
+
def_to_moz(AST_EmptyStatement, function To_Moz_EmptyStatement() {
|
944
|
+
return {
|
945
|
+
type: "EmptyStatement"
|
946
|
+
};
|
947
|
+
});
|
948
|
+
def_to_moz(AST_BlockStatement, function To_Moz_BlockStatement(M) {
|
949
|
+
return {
|
950
|
+
type: "BlockStatement",
|
951
|
+
body: M.body.map(to_moz)
|
952
|
+
};
|
953
|
+
});
|
954
|
+
def_to_moz(AST_If, function To_Moz_IfStatement(M) {
|
955
|
+
return {
|
956
|
+
type: "IfStatement",
|
957
|
+
test: to_moz(M.condition),
|
958
|
+
consequent: to_moz(M.body),
|
959
|
+
alternate: to_moz(M.alternative)
|
960
|
+
};
|
961
|
+
});
|
962
|
+
def_to_moz(AST_LabeledStatement, function To_Moz_LabeledStatement(M) {
|
963
|
+
return {
|
964
|
+
type: "LabeledStatement",
|
965
|
+
label: to_moz(M.label),
|
966
|
+
body: to_moz(M.body)
|
967
|
+
};
|
968
|
+
});
|
969
|
+
def_to_moz(AST_Break, function To_Moz_BreakStatement(M) {
|
970
|
+
return {
|
971
|
+
type: "BreakStatement",
|
972
|
+
label: to_moz(M.label)
|
973
|
+
};
|
974
|
+
});
|
975
|
+
def_to_moz(AST_Continue, function To_Moz_ContinueStatement(M) {
|
976
|
+
return {
|
977
|
+
type: "ContinueStatement",
|
978
|
+
label: to_moz(M.label)
|
979
|
+
};
|
980
|
+
});
|
981
|
+
def_to_moz(AST_With, function To_Moz_WithStatement(M) {
|
982
|
+
return {
|
983
|
+
type: "WithStatement",
|
984
|
+
object: to_moz(M.expression),
|
985
|
+
body: to_moz(M.body)
|
986
|
+
};
|
987
|
+
});
|
988
|
+
def_to_moz(AST_Switch, function To_Moz_SwitchStatement(M) {
|
989
|
+
return {
|
990
|
+
type: "SwitchStatement",
|
991
|
+
discriminant: to_moz(M.expression),
|
992
|
+
cases: M.body.map(to_moz)
|
993
|
+
};
|
994
|
+
});
|
995
|
+
def_to_moz(AST_Return, function To_Moz_ReturnStatement(M) {
|
996
|
+
return {
|
997
|
+
type: "ReturnStatement",
|
998
|
+
argument: to_moz(M.value)
|
999
|
+
};
|
1000
|
+
});
|
1001
|
+
def_to_moz(AST_Throw, function To_Moz_ThrowStatement(M) {
|
1002
|
+
return {
|
1003
|
+
type: "ThrowStatement",
|
1004
|
+
argument: to_moz(M.value)
|
1005
|
+
};
|
1006
|
+
});
|
1007
|
+
def_to_moz(AST_While, function To_Moz_WhileStatement(M) {
|
1008
|
+
return {
|
1009
|
+
type: "WhileStatement",
|
1010
|
+
test: to_moz(M.condition),
|
1011
|
+
body: to_moz(M.body)
|
1012
|
+
};
|
1013
|
+
});
|
1014
|
+
def_to_moz(AST_Do, function To_Moz_DoWhileStatement(M) {
|
1015
|
+
return {
|
1016
|
+
type: "DoWhileStatement",
|
1017
|
+
test: to_moz(M.condition),
|
1018
|
+
body: to_moz(M.body)
|
1019
|
+
};
|
1020
|
+
});
|
1021
|
+
def_to_moz(AST_For, function To_Moz_ForStatement(M) {
|
1022
|
+
return {
|
1023
|
+
type: "ForStatement",
|
1024
|
+
init: to_moz(M.init),
|
1025
|
+
test: to_moz(M.condition),
|
1026
|
+
update: to_moz(M.step),
|
1027
|
+
body: to_moz(M.body)
|
1028
|
+
};
|
1029
|
+
});
|
1030
|
+
def_to_moz(AST_ForIn, function To_Moz_ForInStatement(M) {
|
1031
|
+
return {
|
1032
|
+
type: "ForInStatement",
|
1033
|
+
left: to_moz(M.init),
|
1034
|
+
right: to_moz(M.object),
|
1035
|
+
body: to_moz(M.body)
|
1036
|
+
};
|
1037
|
+
});
|
1038
|
+
def_to_moz(AST_ForOf, function To_Moz_ForOfStatement(M) {
|
1039
|
+
return {
|
1040
|
+
type: "ForOfStatement",
|
1041
|
+
left: to_moz(M.init),
|
1042
|
+
right: to_moz(M.object),
|
1043
|
+
body: to_moz(M.body),
|
1044
|
+
await: M.await
|
1045
|
+
};
|
1046
|
+
});
|
1047
|
+
def_to_moz(AST_Await, function To_Moz_AwaitExpression(M) {
|
1048
|
+
return {
|
1049
|
+
type: "AwaitExpression",
|
1050
|
+
argument: to_moz(M.expression)
|
1051
|
+
};
|
1052
|
+
});
|
1053
|
+
def_to_moz(AST_Yield, function To_Moz_YieldExpression(M) {
|
1054
|
+
return {
|
1055
|
+
type: "YieldExpression",
|
1056
|
+
argument: to_moz(M.expression),
|
1057
|
+
delegate: M.is_star
|
1058
|
+
};
|
1059
|
+
});
|
1060
|
+
def_to_moz(AST_Debugger, function To_Moz_DebuggerStatement() {
|
1061
|
+
return {
|
1062
|
+
type: "DebuggerStatement"
|
1063
|
+
};
|
1064
|
+
});
|
1065
|
+
def_to_moz(AST_VarDef, function To_Moz_VariableDeclarator(M) {
|
1066
|
+
return {
|
1067
|
+
type: "VariableDeclarator",
|
1068
|
+
id: to_moz(M.name),
|
1069
|
+
init: to_moz(M.value)
|
1070
|
+
};
|
1071
|
+
});
|
1072
|
+
def_to_moz(AST_Catch, function To_Moz_CatchClause(M) {
|
1073
|
+
return {
|
1074
|
+
type: "CatchClause",
|
1075
|
+
param: to_moz(M.argname),
|
1076
|
+
body: to_moz_block(M)
|
1077
|
+
};
|
1078
|
+
});
|
1079
|
+
|
1080
|
+
def_to_moz(AST_This, function To_Moz_ThisExpression() {
|
1081
|
+
return {
|
1082
|
+
type: "ThisExpression"
|
1083
|
+
};
|
1084
|
+
});
|
1085
|
+
def_to_moz(AST_Super, function To_Moz_Super() {
|
1086
|
+
return {
|
1087
|
+
type: "Super"
|
1088
|
+
};
|
1089
|
+
});
|
1090
|
+
def_to_moz(AST_Binary, function To_Moz_BinaryExpression(M) {
|
1091
|
+
return {
|
1092
|
+
type: "BinaryExpression",
|
1093
|
+
operator: M.operator,
|
1094
|
+
left: to_moz(M.left),
|
1095
|
+
right: to_moz(M.right)
|
1096
|
+
};
|
1097
|
+
});
|
1098
|
+
def_to_moz(AST_Binary, function To_Moz_LogicalExpression(M) {
|
1099
|
+
return {
|
1100
|
+
type: "LogicalExpression",
|
1101
|
+
operator: M.operator,
|
1102
|
+
left: to_moz(M.left),
|
1103
|
+
right: to_moz(M.right)
|
1104
|
+
};
|
1105
|
+
});
|
1106
|
+
def_to_moz(AST_Assign, function To_Moz_AssignmentExpression(M) {
|
1107
|
+
return {
|
1108
|
+
type: "AssignmentExpression",
|
1109
|
+
operator: M.operator,
|
1110
|
+
left: to_moz(M.left),
|
1111
|
+
right: to_moz(M.right)
|
1112
|
+
};
|
1113
|
+
});
|
1114
|
+
def_to_moz(AST_Conditional, function To_Moz_ConditionalExpression(M) {
|
1115
|
+
return {
|
1116
|
+
type: "ConditionalExpression",
|
1117
|
+
test: to_moz(M.condition),
|
1118
|
+
consequent: to_moz(M.consequent),
|
1119
|
+
alternate: to_moz(M.alternative)
|
1120
|
+
};
|
1121
|
+
});
|
1122
|
+
def_to_moz(AST_New, function To_Moz_NewExpression(M) {
|
1123
|
+
return {
|
1124
|
+
type: "NewExpression",
|
1125
|
+
callee: to_moz(M.expression),
|
1126
|
+
arguments: M.args.map(to_moz)
|
1127
|
+
};
|
1128
|
+
});
|
1129
|
+
def_to_moz(AST_Call, function To_Moz_CallExpression(M) {
|
1130
|
+
return {
|
1131
|
+
type: "CallExpression",
|
1132
|
+
callee: to_moz(M.expression),
|
1133
|
+
optional: M.optional,
|
1134
|
+
arguments: M.args.map(to_moz)
|
1135
|
+
};
|
1136
|
+
});
|
693
1137
|
|
694
1138
|
def_to_moz(AST_Toplevel, function To_Moz_Program(M) {
|
695
1139
|
return to_moz_scope("Program", M);
|
@@ -1240,57 +1684,6 @@ import { is_basic_identifier_string } from "./parse.js";
|
|
1240
1684
|
);
|
1241
1685
|
}
|
1242
1686
|
|
1243
|
-
function map(moztype, mytype, propmap) {
|
1244
|
-
var moz_to_me = "function From_Moz_" + moztype + "(M){\n";
|
1245
|
-
moz_to_me += "return new U2." + mytype.name + "({\n" +
|
1246
|
-
"start: my_start_token(M),\n" +
|
1247
|
-
"end: my_end_token(M)";
|
1248
|
-
|
1249
|
-
var me_to_moz = "function To_Moz_" + moztype + "(M){\n";
|
1250
|
-
me_to_moz += "return {\n" +
|
1251
|
-
"type: " + JSON.stringify(moztype);
|
1252
|
-
|
1253
|
-
if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop) {
|
1254
|
-
var m = /([a-z0-9$_]+)([=@>%])([a-z0-9$_]+)/i.exec(prop);
|
1255
|
-
if (!m) throw new Error("Can't understand property map: " + prop);
|
1256
|
-
var moz = m[1], how = m[2], my = m[3];
|
1257
|
-
moz_to_me += ",\n" + my + ": ";
|
1258
|
-
me_to_moz += ",\n" + moz + ": ";
|
1259
|
-
switch (how) {
|
1260
|
-
case "@":
|
1261
|
-
moz_to_me += "M." + moz + ".map(from_moz)";
|
1262
|
-
me_to_moz += "M." + my + ".map(to_moz)";
|
1263
|
-
break;
|
1264
|
-
case ">":
|
1265
|
-
moz_to_me += "from_moz(M." + moz + ")";
|
1266
|
-
me_to_moz += "to_moz(M." + my + ")";
|
1267
|
-
break;
|
1268
|
-
case "=":
|
1269
|
-
moz_to_me += "M." + moz;
|
1270
|
-
me_to_moz += "M." + my;
|
1271
|
-
break;
|
1272
|
-
case "%":
|
1273
|
-
moz_to_me += "from_moz(M." + moz + ").body";
|
1274
|
-
me_to_moz += "to_moz_block(M)";
|
1275
|
-
break;
|
1276
|
-
default:
|
1277
|
-
throw new Error("Can't understand operator in propmap: " + prop);
|
1278
|
-
}
|
1279
|
-
});
|
1280
|
-
|
1281
|
-
moz_to_me += "\n})\n}";
|
1282
|
-
me_to_moz += "\n}\n}";
|
1283
|
-
|
1284
|
-
moz_to_me = new Function("U2", "my_start_token", "my_end_token", "from_moz", "return(" + moz_to_me + ")")(
|
1285
|
-
ast, my_start_token, my_end_token, from_moz
|
1286
|
-
);
|
1287
|
-
me_to_moz = new Function("to_moz", "to_moz_block", "to_moz_scope", "return(" + me_to_moz + ")")(
|
1288
|
-
to_moz, to_moz_block, to_moz_scope
|
1289
|
-
);
|
1290
|
-
MOZ_TO_ME[moztype] = moz_to_me;
|
1291
|
-
def_to_moz(mytype, me_to_moz);
|
1292
|
-
}
|
1293
|
-
|
1294
1687
|
var FROM_MOZ_STACK = null;
|
1295
1688
|
|
1296
1689
|
function from_moz(node) {
|