terser 5.12.1 → 5.14.0

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.
@@ -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
- map("EmptyStatement", AST_EmptyStatement);
665
- map("BlockStatement", AST_BlockStatement, "body@body");
666
- map("IfStatement", AST_If, "test>condition, consequent>body, alternate>alternative");
667
- map("LabeledStatement", AST_LabeledStatement, "label>label, body>body");
668
- map("BreakStatement", AST_Break, "label>label");
669
- map("ContinueStatement", AST_Continue, "label>label");
670
- map("WithStatement", AST_With, "object>expression, body>body");
671
- map("SwitchStatement", AST_Switch, "discriminant>expression, cases@body");
672
- map("ReturnStatement", AST_Return, "argument>value");
673
- map("ThrowStatement", AST_Throw, "argument>value");
674
- map("WhileStatement", AST_While, "test>condition, body>body");
675
- map("DoWhileStatement", AST_Do, "test>condition, body>body");
676
- map("ForStatement", AST_For, "init>init, test>condition, update>step, body>body");
677
- map("ForInStatement", AST_ForIn, "left>init, right>object, body>body");
678
- map("ForOfStatement", AST_ForOf, "left>init, right>object, body>body, await=await");
679
- map("AwaitExpression", AST_Await, "argument>expression");
680
- map("YieldExpression", AST_Yield, "argument>expression, delegate=is_star");
681
- map("DebuggerStatement", AST_Debugger);
682
- map("VariableDeclarator", AST_VarDef, "id>name, init>value");
683
- map("CatchClause", AST_Catch, "param>argname, body%body");
684
-
685
- map("ThisExpression", AST_This);
686
- map("Super", AST_Super);
687
- map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right");
688
- map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right");
689
- map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right");
690
- map("ConditionalExpression", AST_Conditional, "test>condition, consequent>consequent, alternate>alternative");
691
- map("NewExpression", AST_New, "callee>expression, arguments@args");
692
- map("CallExpression", AST_Call, "callee>expression, optional=optional, arguments@args");
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) {