jass 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/jass.rb +5 -0
  4. data/lib/jass/compiler.rb +5 -0
  5. data/lib/jass/plugin.rb +2 -1
  6. data/lib/jass/version.rb +1 -1
  7. data/vendor/node_modules/@types/estree/index.d.ts +4 -2
  8. data/vendor/node_modules/@types/estree/package.json +2 -2
  9. data/vendor/node_modules/acorn/bin/_acorn.js +12 -12
  10. data/vendor/node_modules/acorn/bin/run_test262.js +2 -3
  11. data/vendor/node_modules/acorn/bin/test262.whitelist +0 -5
  12. data/vendor/node_modules/acorn/dist/acorn.es.js +76 -68
  13. data/vendor/node_modules/acorn/dist/acorn.js +76 -68
  14. data/vendor/node_modules/acorn/dist/acorn_loose.es.js +42 -30
  15. data/vendor/node_modules/acorn/dist/acorn_loose.js +42 -30
  16. data/vendor/node_modules/acorn/dist/walk.es.js +47 -43
  17. data/vendor/node_modules/acorn/dist/walk.js +47 -43
  18. data/vendor/node_modules/acorn/package.json +9 -5
  19. data/vendor/node_modules/chalk/index.js.flow +93 -0
  20. data/vendor/node_modules/chalk/package.json +8 -3
  21. data/vendor/node_modules/color-convert/conversions.js +36 -29
  22. data/vendor/node_modules/color-convert/package.json +4 -4
  23. data/vendor/node_modules/estree-walker/index.d.ts +17 -0
  24. data/vendor/node_modules/estree-walker/package.json +2 -1
  25. data/vendor/node_modules/fill-range/index.js +2 -2
  26. data/vendor/node_modules/fill-range/package.json +24 -7
  27. data/vendor/node_modules/is-reference/node_modules/@types/estree/index.d.ts +546 -0
  28. data/vendor/node_modules/is-reference/node_modules/@types/estree/package.json +22 -0
  29. data/vendor/node_modules/math-random/browser.js +17 -0
  30. data/vendor/node_modules/math-random/node.js +13 -0
  31. data/vendor/node_modules/math-random/package.json +31 -0
  32. data/vendor/node_modules/math-random/test.js +26 -0
  33. data/vendor/node_modules/nodent-compiler/compiler.js +115 -11
  34. data/vendor/node_modules/nodent-compiler/{lib/output.js → output.js} +0 -0
  35. data/vendor/node_modules/nodent-compiler/package.json +8 -4
  36. data/vendor/node_modules/{nodent-compiler/lib → nodent-transform}/arboriculture.js +1340 -1107
  37. data/vendor/node_modules/nodent-transform/package.json +19 -0
  38. data/vendor/node_modules/path-parse/package.json +1 -1
  39. data/vendor/node_modules/pretty-ms/index.js +2 -1
  40. data/vendor/node_modules/pretty-ms/package.json +2 -3
  41. data/vendor/node_modules/randomatic/index.js +12 -2
  42. data/vendor/node_modules/randomatic/node_modules/is-number/index.js +6 -7
  43. data/vendor/node_modules/randomatic/node_modules/is-number/package.json +9 -16
  44. data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +112 -102
  45. data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +18 -20
  46. data/vendor/node_modules/randomatic/package.json +15 -13
  47. data/vendor/node_modules/repeat-element/index.js +1 -1
  48. data/vendor/node_modules/repeat-element/package.json +27 -22
  49. data/vendor/node_modules/resolve/lib/async.js +20 -17
  50. data/vendor/node_modules/resolve/lib/core.js +2 -2
  51. data/vendor/node_modules/resolve/lib/core.json +4 -1
  52. data/vendor/node_modules/resolve/lib/sync.js +52 -13
  53. data/vendor/node_modules/resolve/package.json +3 -3
  54. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js +50 -12
  55. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js +50 -12
  56. data/vendor/node_modules/rollup-plugin-commonjs/package.json +2 -2
  57. data/vendor/node_modules/rollup-plugin-commonjs/src/index.js +49 -11
  58. data/vendor/node_modules/rollup-plugin-commonjs/src/transform.js +1 -1
  59. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs.js +82 -85
  60. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es.js +82 -85
  61. data/vendor/node_modules/rollup-plugin-node-resolve/package.json +1 -1
  62. data/vendor/node_modules/rollup-plugin-node-resolve/src/index.js +81 -84
  63. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +81 -2
  64. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +81 -3
  65. data/vendor/node_modules/rollup-pluginutils/package.json +12 -6
  66. data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +10 -2
  67. data/vendor/node_modules/rollup-pluginutils/src/dataToEsm.js +69 -0
  68. data/vendor/node_modules/rollup-pluginutils/src/index.js +1 -0
  69. data/vendor/node_modules/supports-color/index.js +1 -5
  70. data/vendor/node_modules/supports-color/package.json +51 -51
  71. data/vendor/yarn.lock +65 -70
  72. metadata +16 -21
  73. data/vendor/node_modules/irregular-plurals/irregular-plurals.json +0 -146
  74. data/vendor/node_modules/irregular-plurals/package.json +0 -39
  75. data/vendor/node_modules/nodent-compiler/lib/parser.js +0 -291
  76. data/vendor/node_modules/path-parse/index.min.js +0 -1
  77. data/vendor/node_modules/path-parse/test.min.js +0 -1
  78. data/vendor/node_modules/plur/index.js +0 -20
  79. data/vendor/node_modules/plur/package.json +0 -42
  80. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +0 -116
  81. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +0 -90
  82. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +0 -217
  83. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es.js +0 -55
  84. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es6.js +0 -59
  85. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js +0 -65
  86. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/package.json +0 -33
  87. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/src/estree-walker.js +0 -49
@@ -24,6 +24,7 @@ var LooseParser = function LooseParser(input, options) {
24
24
  this.curLineStart = 0;
25
25
  this.nextLineStart = this.lineEnd(this.curLineStart) + 1;
26
26
  this.inAsync = false;
27
+ this.inFunction = false;
27
28
  // Load plugins
28
29
  this.options.pluginsLoose = options.pluginsLoose || {};
29
30
  this.loadPlugins(this.options.pluginsLoose);
@@ -110,7 +111,7 @@ LooseParser.prototype.expect = function expect (type) {
110
111
 
111
112
  if (this.eat(type)) { return true }
112
113
  for (var i = 1; i <= 2; i++) {
113
- if (this$1.lookAhead(i).type == type) {
114
+ if (this$1.lookAhead(i).type === type) {
114
115
  for (var j = 0; j < i; j++) { this$1.next(); }
115
116
  return true
116
117
  }
@@ -143,7 +144,7 @@ LooseParser.prototype.indentationAfter = function indentationAfter (pos) {
143
144
 
144
145
  LooseParser.prototype.closes = function closes (closeTok, indent, line, blockHeuristic) {
145
146
  if (this.tok.type === closeTok || this.tok.type === tokTypes.eof) { return true }
146
- return line != this.curLineStart && this.curIndent < indent && this.tokenStartsLine() &&
147
+ return line !== this.curLineStart && this.curIndent < indent && this.tokenStartsLine() &&
147
148
  (!blockHeuristic || this.nextLineStart >= this.input.length ||
148
149
  this.indentationAfter(this.nextLineStart) < indent)
149
150
  };
@@ -294,7 +295,7 @@ lp.lookAhead = function(n) {
294
295
  return this.ahead[n - 1]
295
296
  };
296
297
 
297
- function isDummy(node) { return node.name == "✖" }
298
+ function isDummy(node) { return node.name === "✖" }
298
299
 
299
300
  var lp$1 = LooseParser.prototype;
300
301
 
@@ -436,9 +437,12 @@ lp$1.parseStatement = function() {
436
437
  if (this.tok.type === tokTypes._catch) {
437
438
  var clause = this.startNode();
438
439
  this.next();
439
- this.expect(tokTypes.parenL);
440
- clause.param = this.toAssignable(this.parseExprAtom(), true);
441
- this.expect(tokTypes.parenR);
440
+ if (this.eat(tokTypes.parenL)) {
441
+ clause.param = this.toAssignable(this.parseExprAtom(), true);
442
+ this.expect(tokTypes.parenR);
443
+ } else {
444
+ clause.param = null;
445
+ }
442
446
  clause.body = this.parseBlock();
443
447
  node.handler = this.finishNode(clause, "CatchClause");
444
448
  }
@@ -585,7 +589,7 @@ lp$1.parseClass = function(isStatement) {
585
589
  this$1.parsePropertyName(method);
586
590
  if (isDummy(method.key)) { if (isDummy(this$1.parseMaybeAssign())) { this$1.next(); } this$1.eat(tokTypes.comma); continue }
587
591
  if (method.key.type === "Identifier" && !method.computed && method.key.name === "static" &&
588
- (this$1.tok.type != tokTypes.parenL && this$1.tok.type != tokTypes.braceL)) {
592
+ (this$1.tok.type !== tokTypes.parenL && this$1.tok.type !== tokTypes.braceL)) {
589
593
  method.static = true;
590
594
  isGenerator = this$1.eat(tokTypes.star);
591
595
  this$1.parsePropertyName(method);
@@ -632,7 +636,7 @@ lp$1.parseClass = function(isStatement) {
632
636
  };
633
637
 
634
638
  lp$1.parseFunction = function(node, isStatement, isAsync) {
635
- var oldInAsync = this.inAsync;
639
+ var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
636
640
  this.initFunction(node);
637
641
  if (this.options.ecmaVersion >= 6) {
638
642
  node.generator = this.eat(tokTypes.star);
@@ -643,10 +647,12 @@ lp$1.parseFunction = function(node, isStatement, isAsync) {
643
647
  if (this.tok.type === tokTypes.name) { node.id = this.parseIdent(); }
644
648
  else if (isStatement === true) { node.id = this.dummyIdent(); }
645
649
  this.inAsync = node.async;
650
+ this.inFunction = true;
646
651
  node.params = this.parseFunctionParams();
647
652
  node.body = this.parseBlock();
648
653
  this.toks.adaptDirectivePrologue(node.body.body);
649
654
  this.inAsync = oldInAsync;
655
+ this.inFunction = oldInFunction;
650
656
  return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
651
657
  };
652
658
 
@@ -701,7 +707,7 @@ lp$1.parseImport = function() {
701
707
  this.eat(tokTypes.comma);
702
708
  }
703
709
  node.specifiers = this.parseImportSpecifierList();
704
- node.source = this.eatContextual("from") && this.tok.type == tokTypes.string ? this.parseExprAtom() : this.dummyString();
710
+ node.source = this.eatContextual("from") && this.tok.type === tokTypes.string ? this.parseExprAtom() : this.dummyString();
705
711
  if (elt) { node.specifiers.unshift(elt); }
706
712
  }
707
713
  this.semicolon();
@@ -811,7 +817,7 @@ lp$2.parseMaybeAssign = function(noIn) {
811
817
  if (this.toks.isContextual("yield")) {
812
818
  var node = this.startNode();
813
819
  this.next();
814
- if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type != tokTypes.star && !this.tok.type.startsExpr)) {
820
+ if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type !== tokTypes.star && !this.tok.type.startsExpr)) {
815
821
  node.delegate = false;
816
822
  node.argument = null;
817
823
  } else {
@@ -854,7 +860,7 @@ lp$2.parseExprOps = function(noIn) {
854
860
  };
855
861
 
856
862
  lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) {
857
- if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) { return left }
863
+ if (this.curLineStart !== line && this.curIndent < indent && this.tokenStartsLine()) { return left }
858
864
  var prec = this.tok.type.binop;
859
865
  if (prec != null && (!noIn || this.tok.type !== tokTypes._in)) {
860
866
  if (prec > minPrec) {
@@ -862,7 +868,7 @@ lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) {
862
868
  node.left = left;
863
869
  node.operator = this.tok.value;
864
870
  this.next();
865
- if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) {
871
+ if (this.curLineStart !== line && this.curIndent < indent && this.tokenStartsLine()) {
866
872
  node.right = this.dummyIdent();
867
873
  } else {
868
874
  var rightStart = this.storeCurrentPos();
@@ -879,7 +885,9 @@ lp$2.parseMaybeUnary = function(sawUnary) {
879
885
  var this$1 = this;
880
886
 
881
887
  var start = this.storeCurrentPos(), expr;
882
- if (this.options.ecmaVersion >= 8 && this.inAsync && this.toks.isContextual("await")) {
888
+ if (this.options.ecmaVersion >= 8 && this.toks.isContextual("await") &&
889
+ (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))
890
+ ) {
883
891
  expr = this.parseAwait();
884
892
  sawUnary = true;
885
893
  } else if (this.tok.type.prefix) {
@@ -928,8 +936,8 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
928
936
  var this$1 = this;
929
937
 
930
938
  for (;;) {
931
- if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) {
932
- if (this$1.tok.type == tokTypes.dot && this$1.curIndent == startIndent)
939
+ if (this$1.curLineStart !== line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) {
940
+ if (this$1.tok.type === tokTypes.dot && this$1.curIndent === startIndent)
933
941
  { --startIndent; }
934
942
  else
935
943
  { return base }
@@ -940,13 +948,13 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
940
948
  if (this$1.eat(tokTypes.dot)) {
941
949
  var node = this$1.startNodeAt(start);
942
950
  node.object = base;
943
- if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine())
951
+ if (this$1.curLineStart !== line && this$1.curIndent <= startIndent && this$1.tokenStartsLine())
944
952
  { node.property = this$1.dummyIdent(); }
945
953
  else
946
954
  { node.property = this$1.parsePropertyAccessor() || this$1.dummyIdent(); }
947
955
  node.computed = false;
948
956
  base = this$1.finishNode(node, "MemberExpression");
949
- } else if (this$1.tok.type == tokTypes.bracketL) {
957
+ } else if (this$1.tok.type === tokTypes.bracketL) {
950
958
  this$1.pushCx();
951
959
  this$1.next();
952
960
  var node$1 = this$1.startNodeAt(start);
@@ -956,7 +964,7 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
956
964
  this$1.popCx();
957
965
  this$1.expect(tokTypes.bracketR);
958
966
  base = this$1.finishNode(node$1, "MemberExpression");
959
- } else if (!noCalls && this$1.tok.type == tokTypes.parenL) {
967
+ } else if (!noCalls && this$1.tok.type === tokTypes.parenL) {
960
968
  var exprList = this$1.parseExprList(tokTypes.parenR);
961
969
  if (maybeAsyncArrow && this$1.eat(tokTypes.arrow))
962
970
  { return this$1.parseArrowExpression(this$1.startNodeAt(start), exprList, true) }
@@ -964,7 +972,7 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
964
972
  node$2.callee = base;
965
973
  node$2.arguments = exprList;
966
974
  base = this$1.finishNode(node$2, "CallExpression");
967
- } else if (this$1.tok.type == tokTypes.backQuote) {
975
+ } else if (this$1.tok.type === tokTypes.backQuote) {
968
976
  var node$3 = this$1.startNodeAt(start);
969
977
  node$3.tag = base;
970
978
  node$3.quasi = this$1.parseTemplate();
@@ -1078,7 +1086,7 @@ lp$2.parseNew = function() {
1078
1086
  }
1079
1087
  var start = this.storeCurrentPos();
1080
1088
  node.callee = this.parseSubscripts(this.parseExprAtom(), start, true, startIndent, line);
1081
- if (this.tok.type == tokTypes.parenL) {
1089
+ if (this.tok.type === tokTypes.parenL) {
1082
1090
  node.arguments = this.parseExprList(tokTypes.parenR);
1083
1091
  } else {
1084
1092
  node.arguments = [];
@@ -1172,7 +1180,7 @@ lp$2.parseObj = function() {
1172
1180
  prop.value = this$1.parseMethod(isGenerator, isAsync);
1173
1181
  } else if (this$1.options.ecmaVersion >= 5 && prop.key.type === "Identifier" &&
1174
1182
  !prop.computed && (prop.key.name === "get" || prop.key.name === "set") &&
1175
- (this$1.tok.type != tokTypes.comma && this$1.tok.type != tokTypes.braceR && this$1.tok.type != tokTypes.eq)) {
1183
+ (this$1.tok.type !== tokTypes.comma && this$1.tok.type !== tokTypes.braceR && this$1.tok.type !== tokTypes.eq)) {
1176
1184
  prop.kind = prop.key.name;
1177
1185
  this$1.parsePropertyName(prop);
1178
1186
  prop.value = this$1.parseMethod(false);
@@ -1251,13 +1259,13 @@ lp$2.initFunction = function(node) {
1251
1259
  lp$2.toAssignable = function(node, binding) {
1252
1260
  var this$1 = this;
1253
1261
 
1254
- if (!node || node.type == "Identifier" || (node.type == "MemberExpression" && !binding)) {
1262
+ if (!node || node.type === "Identifier" || (node.type === "MemberExpression" && !binding)) {
1255
1263
  // Okay
1256
- } else if (node.type == "ParenthesizedExpression") {
1264
+ } else if (node.type === "ParenthesizedExpression") {
1257
1265
  this.toAssignable(node.expression, binding);
1258
1266
  } else if (this.options.ecmaVersion < 6) {
1259
1267
  return this.dummyIdent()
1260
- } else if (node.type == "ObjectExpression") {
1268
+ } else if (node.type === "ObjectExpression") {
1261
1269
  node.type = "ObjectPattern";
1262
1270
  for (var i = 0, list = node.properties; i < list.length; i += 1)
1263
1271
  {
@@ -1265,15 +1273,15 @@ lp$2.toAssignable = function(node, binding) {
1265
1273
 
1266
1274
  this$1.toAssignable(prop, binding);
1267
1275
  }
1268
- } else if (node.type == "ArrayExpression") {
1276
+ } else if (node.type === "ArrayExpression") {
1269
1277
  node.type = "ArrayPattern";
1270
1278
  this.toAssignableList(node.elements, binding);
1271
- } else if (node.type == "Property") {
1279
+ } else if (node.type === "Property") {
1272
1280
  this.toAssignable(node.value, binding);
1273
- } else if (node.type == "SpreadElement") {
1281
+ } else if (node.type === "SpreadElement") {
1274
1282
  node.type = "RestElement";
1275
1283
  this.toAssignable(node.argument, binding);
1276
- } else if (node.type == "AssignmentExpression") {
1284
+ } else if (node.type === "AssignmentExpression") {
1277
1285
  node.type = "AssignmentPattern";
1278
1286
  delete node.operator;
1279
1287
  } else {
@@ -1300,26 +1308,29 @@ lp$2.parseFunctionParams = function(params) {
1300
1308
  };
1301
1309
 
1302
1310
  lp$2.parseMethod = function(isGenerator, isAsync) {
1303
- var node = this.startNode(), oldInAsync = this.inAsync;
1311
+ var node = this.startNode(), oldInAsync = this.inAsync, oldInFunction = this.inFunction;
1304
1312
  this.initFunction(node);
1305
1313
  if (this.options.ecmaVersion >= 6)
1306
1314
  { node.generator = !!isGenerator; }
1307
1315
  if (this.options.ecmaVersion >= 8)
1308
1316
  { node.async = !!isAsync; }
1309
1317
  this.inAsync = node.async;
1318
+ this.inFunction = true;
1310
1319
  node.params = this.parseFunctionParams();
1311
1320
  node.body = this.parseBlock();
1312
1321
  this.toks.adaptDirectivePrologue(node.body.body);
1313
1322
  this.inAsync = oldInAsync;
1323
+ this.inFunction = oldInFunction;
1314
1324
  return this.finishNode(node, "FunctionExpression")
1315
1325
  };
1316
1326
 
1317
1327
  lp$2.parseArrowExpression = function(node, params, isAsync) {
1318
- var oldInAsync = this.inAsync;
1328
+ var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
1319
1329
  this.initFunction(node);
1320
1330
  if (this.options.ecmaVersion >= 8)
1321
1331
  { node.async = !!isAsync; }
1322
1332
  this.inAsync = node.async;
1333
+ this.inFunction = true;
1323
1334
  node.params = this.toAssignableList(params, true);
1324
1335
  node.expression = this.tok.type !== tokTypes.braceL;
1325
1336
  if (node.expression) {
@@ -1329,6 +1340,7 @@ lp$2.parseArrowExpression = function(node, params, isAsync) {
1329
1340
  this.toks.adaptDirectivePrologue(node.body.body);
1330
1341
  }
1331
1342
  this.inAsync = oldInAsync;
1343
+ this.inFunction = oldInFunction;
1332
1344
  return this.finishNode(node, "ArrowFunctionExpression")
1333
1345
  };
1334
1346
 
@@ -28,6 +28,7 @@ var LooseParser = function LooseParser(input, options) {
28
28
  this.curLineStart = 0;
29
29
  this.nextLineStart = this.lineEnd(this.curLineStart) + 1;
30
30
  this.inAsync = false;
31
+ this.inFunction = false;
31
32
  // Load plugins
32
33
  this.options.pluginsLoose = options.pluginsLoose || {};
33
34
  this.loadPlugins(this.options.pluginsLoose);
@@ -114,7 +115,7 @@ LooseParser.prototype.expect = function expect (type) {
114
115
 
115
116
  if (this.eat(type)) { return true }
116
117
  for (var i = 1; i <= 2; i++) {
117
- if (this$1.lookAhead(i).type == type) {
118
+ if (this$1.lookAhead(i).type === type) {
118
119
  for (var j = 0; j < i; j++) { this$1.next(); }
119
120
  return true
120
121
  }
@@ -147,7 +148,7 @@ LooseParser.prototype.indentationAfter = function indentationAfter (pos) {
147
148
 
148
149
  LooseParser.prototype.closes = function closes (closeTok, indent, line, blockHeuristic) {
149
150
  if (this.tok.type === closeTok || this.tok.type === __acorn.tokTypes.eof) { return true }
150
- return line != this.curLineStart && this.curIndent < indent && this.tokenStartsLine() &&
151
+ return line !== this.curLineStart && this.curIndent < indent && this.tokenStartsLine() &&
151
152
  (!blockHeuristic || this.nextLineStart >= this.input.length ||
152
153
  this.indentationAfter(this.nextLineStart) < indent)
153
154
  };
@@ -298,7 +299,7 @@ lp.lookAhead = function(n) {
298
299
  return this.ahead[n - 1]
299
300
  };
300
301
 
301
- function isDummy(node) { return node.name == "✖" }
302
+ function isDummy(node) { return node.name === "✖" }
302
303
 
303
304
  var lp$1 = LooseParser.prototype;
304
305
 
@@ -440,9 +441,12 @@ lp$1.parseStatement = function() {
440
441
  if (this.tok.type === __acorn.tokTypes._catch) {
441
442
  var clause = this.startNode();
442
443
  this.next();
443
- this.expect(__acorn.tokTypes.parenL);
444
- clause.param = this.toAssignable(this.parseExprAtom(), true);
445
- this.expect(__acorn.tokTypes.parenR);
444
+ if (this.eat(__acorn.tokTypes.parenL)) {
445
+ clause.param = this.toAssignable(this.parseExprAtom(), true);
446
+ this.expect(__acorn.tokTypes.parenR);
447
+ } else {
448
+ clause.param = null;
449
+ }
446
450
  clause.body = this.parseBlock();
447
451
  node.handler = this.finishNode(clause, "CatchClause");
448
452
  }
@@ -589,7 +593,7 @@ lp$1.parseClass = function(isStatement) {
589
593
  this$1.parsePropertyName(method);
590
594
  if (isDummy(method.key)) { if (isDummy(this$1.parseMaybeAssign())) { this$1.next(); } this$1.eat(__acorn.tokTypes.comma); continue }
591
595
  if (method.key.type === "Identifier" && !method.computed && method.key.name === "static" &&
592
- (this$1.tok.type != __acorn.tokTypes.parenL && this$1.tok.type != __acorn.tokTypes.braceL)) {
596
+ (this$1.tok.type !== __acorn.tokTypes.parenL && this$1.tok.type !== __acorn.tokTypes.braceL)) {
593
597
  method.static = true;
594
598
  isGenerator = this$1.eat(__acorn.tokTypes.star);
595
599
  this$1.parsePropertyName(method);
@@ -636,7 +640,7 @@ lp$1.parseClass = function(isStatement) {
636
640
  };
637
641
 
638
642
  lp$1.parseFunction = function(node, isStatement, isAsync) {
639
- var oldInAsync = this.inAsync;
643
+ var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
640
644
  this.initFunction(node);
641
645
  if (this.options.ecmaVersion >= 6) {
642
646
  node.generator = this.eat(__acorn.tokTypes.star);
@@ -647,10 +651,12 @@ lp$1.parseFunction = function(node, isStatement, isAsync) {
647
651
  if (this.tok.type === __acorn.tokTypes.name) { node.id = this.parseIdent(); }
648
652
  else if (isStatement === true) { node.id = this.dummyIdent(); }
649
653
  this.inAsync = node.async;
654
+ this.inFunction = true;
650
655
  node.params = this.parseFunctionParams();
651
656
  node.body = this.parseBlock();
652
657
  this.toks.adaptDirectivePrologue(node.body.body);
653
658
  this.inAsync = oldInAsync;
659
+ this.inFunction = oldInFunction;
654
660
  return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
655
661
  };
656
662
 
@@ -705,7 +711,7 @@ lp$1.parseImport = function() {
705
711
  this.eat(__acorn.tokTypes.comma);
706
712
  }
707
713
  node.specifiers = this.parseImportSpecifierList();
708
- node.source = this.eatContextual("from") && this.tok.type == __acorn.tokTypes.string ? this.parseExprAtom() : this.dummyString();
714
+ node.source = this.eatContextual("from") && this.tok.type === __acorn.tokTypes.string ? this.parseExprAtom() : this.dummyString();
709
715
  if (elt) { node.specifiers.unshift(elt); }
710
716
  }
711
717
  this.semicolon();
@@ -815,7 +821,7 @@ lp$2.parseMaybeAssign = function(noIn) {
815
821
  if (this.toks.isContextual("yield")) {
816
822
  var node = this.startNode();
817
823
  this.next();
818
- if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type != __acorn.tokTypes.star && !this.tok.type.startsExpr)) {
824
+ if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type !== __acorn.tokTypes.star && !this.tok.type.startsExpr)) {
819
825
  node.delegate = false;
820
826
  node.argument = null;
821
827
  } else {
@@ -858,7 +864,7 @@ lp$2.parseExprOps = function(noIn) {
858
864
  };
859
865
 
860
866
  lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) {
861
- if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) { return left }
867
+ if (this.curLineStart !== line && this.curIndent < indent && this.tokenStartsLine()) { return left }
862
868
  var prec = this.tok.type.binop;
863
869
  if (prec != null && (!noIn || this.tok.type !== __acorn.tokTypes._in)) {
864
870
  if (prec > minPrec) {
@@ -866,7 +872,7 @@ lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) {
866
872
  node.left = left;
867
873
  node.operator = this.tok.value;
868
874
  this.next();
869
- if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) {
875
+ if (this.curLineStart !== line && this.curIndent < indent && this.tokenStartsLine()) {
870
876
  node.right = this.dummyIdent();
871
877
  } else {
872
878
  var rightStart = this.storeCurrentPos();
@@ -883,7 +889,9 @@ lp$2.parseMaybeUnary = function(sawUnary) {
883
889
  var this$1 = this;
884
890
 
885
891
  var start = this.storeCurrentPos(), expr;
886
- if (this.options.ecmaVersion >= 8 && this.inAsync && this.toks.isContextual("await")) {
892
+ if (this.options.ecmaVersion >= 8 && this.toks.isContextual("await") &&
893
+ (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))
894
+ ) {
887
895
  expr = this.parseAwait();
888
896
  sawUnary = true;
889
897
  } else if (this.tok.type.prefix) {
@@ -932,8 +940,8 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
932
940
  var this$1 = this;
933
941
 
934
942
  for (;;) {
935
- if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) {
936
- if (this$1.tok.type == __acorn.tokTypes.dot && this$1.curIndent == startIndent)
943
+ if (this$1.curLineStart !== line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) {
944
+ if (this$1.tok.type === __acorn.tokTypes.dot && this$1.curIndent === startIndent)
937
945
  { --startIndent; }
938
946
  else
939
947
  { return base }
@@ -944,13 +952,13 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
944
952
  if (this$1.eat(__acorn.tokTypes.dot)) {
945
953
  var node = this$1.startNodeAt(start);
946
954
  node.object = base;
947
- if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine())
955
+ if (this$1.curLineStart !== line && this$1.curIndent <= startIndent && this$1.tokenStartsLine())
948
956
  { node.property = this$1.dummyIdent(); }
949
957
  else
950
958
  { node.property = this$1.parsePropertyAccessor() || this$1.dummyIdent(); }
951
959
  node.computed = false;
952
960
  base = this$1.finishNode(node, "MemberExpression");
953
- } else if (this$1.tok.type == __acorn.tokTypes.bracketL) {
961
+ } else if (this$1.tok.type === __acorn.tokTypes.bracketL) {
954
962
  this$1.pushCx();
955
963
  this$1.next();
956
964
  var node$1 = this$1.startNodeAt(start);
@@ -960,7 +968,7 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
960
968
  this$1.popCx();
961
969
  this$1.expect(__acorn.tokTypes.bracketR);
962
970
  base = this$1.finishNode(node$1, "MemberExpression");
963
- } else if (!noCalls && this$1.tok.type == __acorn.tokTypes.parenL) {
971
+ } else if (!noCalls && this$1.tok.type === __acorn.tokTypes.parenL) {
964
972
  var exprList = this$1.parseExprList(__acorn.tokTypes.parenR);
965
973
  if (maybeAsyncArrow && this$1.eat(__acorn.tokTypes.arrow))
966
974
  { return this$1.parseArrowExpression(this$1.startNodeAt(start), exprList, true) }
@@ -968,7 +976,7 @@ lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) {
968
976
  node$2.callee = base;
969
977
  node$2.arguments = exprList;
970
978
  base = this$1.finishNode(node$2, "CallExpression");
971
- } else if (this$1.tok.type == __acorn.tokTypes.backQuote) {
979
+ } else if (this$1.tok.type === __acorn.tokTypes.backQuote) {
972
980
  var node$3 = this$1.startNodeAt(start);
973
981
  node$3.tag = base;
974
982
  node$3.quasi = this$1.parseTemplate();
@@ -1082,7 +1090,7 @@ lp$2.parseNew = function() {
1082
1090
  }
1083
1091
  var start = this.storeCurrentPos();
1084
1092
  node.callee = this.parseSubscripts(this.parseExprAtom(), start, true, startIndent, line);
1085
- if (this.tok.type == __acorn.tokTypes.parenL) {
1093
+ if (this.tok.type === __acorn.tokTypes.parenL) {
1086
1094
  node.arguments = this.parseExprList(__acorn.tokTypes.parenR);
1087
1095
  } else {
1088
1096
  node.arguments = [];
@@ -1176,7 +1184,7 @@ lp$2.parseObj = function() {
1176
1184
  prop.value = this$1.parseMethod(isGenerator, isAsync);
1177
1185
  } else if (this$1.options.ecmaVersion >= 5 && prop.key.type === "Identifier" &&
1178
1186
  !prop.computed && (prop.key.name === "get" || prop.key.name === "set") &&
1179
- (this$1.tok.type != __acorn.tokTypes.comma && this$1.tok.type != __acorn.tokTypes.braceR && this$1.tok.type != __acorn.tokTypes.eq)) {
1187
+ (this$1.tok.type !== __acorn.tokTypes.comma && this$1.tok.type !== __acorn.tokTypes.braceR && this$1.tok.type !== __acorn.tokTypes.eq)) {
1180
1188
  prop.kind = prop.key.name;
1181
1189
  this$1.parsePropertyName(prop);
1182
1190
  prop.value = this$1.parseMethod(false);
@@ -1255,13 +1263,13 @@ lp$2.initFunction = function(node) {
1255
1263
  lp$2.toAssignable = function(node, binding) {
1256
1264
  var this$1 = this;
1257
1265
 
1258
- if (!node || node.type == "Identifier" || (node.type == "MemberExpression" && !binding)) {
1266
+ if (!node || node.type === "Identifier" || (node.type === "MemberExpression" && !binding)) {
1259
1267
  // Okay
1260
- } else if (node.type == "ParenthesizedExpression") {
1268
+ } else if (node.type === "ParenthesizedExpression") {
1261
1269
  this.toAssignable(node.expression, binding);
1262
1270
  } else if (this.options.ecmaVersion < 6) {
1263
1271
  return this.dummyIdent()
1264
- } else if (node.type == "ObjectExpression") {
1272
+ } else if (node.type === "ObjectExpression") {
1265
1273
  node.type = "ObjectPattern";
1266
1274
  for (var i = 0, list = node.properties; i < list.length; i += 1)
1267
1275
  {
@@ -1269,15 +1277,15 @@ lp$2.toAssignable = function(node, binding) {
1269
1277
 
1270
1278
  this$1.toAssignable(prop, binding);
1271
1279
  }
1272
- } else if (node.type == "ArrayExpression") {
1280
+ } else if (node.type === "ArrayExpression") {
1273
1281
  node.type = "ArrayPattern";
1274
1282
  this.toAssignableList(node.elements, binding);
1275
- } else if (node.type == "Property") {
1283
+ } else if (node.type === "Property") {
1276
1284
  this.toAssignable(node.value, binding);
1277
- } else if (node.type == "SpreadElement") {
1285
+ } else if (node.type === "SpreadElement") {
1278
1286
  node.type = "RestElement";
1279
1287
  this.toAssignable(node.argument, binding);
1280
- } else if (node.type == "AssignmentExpression") {
1288
+ } else if (node.type === "AssignmentExpression") {
1281
1289
  node.type = "AssignmentPattern";
1282
1290
  delete node.operator;
1283
1291
  } else {
@@ -1304,26 +1312,29 @@ lp$2.parseFunctionParams = function(params) {
1304
1312
  };
1305
1313
 
1306
1314
  lp$2.parseMethod = function(isGenerator, isAsync) {
1307
- var node = this.startNode(), oldInAsync = this.inAsync;
1315
+ var node = this.startNode(), oldInAsync = this.inAsync, oldInFunction = this.inFunction;
1308
1316
  this.initFunction(node);
1309
1317
  if (this.options.ecmaVersion >= 6)
1310
1318
  { node.generator = !!isGenerator; }
1311
1319
  if (this.options.ecmaVersion >= 8)
1312
1320
  { node.async = !!isAsync; }
1313
1321
  this.inAsync = node.async;
1322
+ this.inFunction = true;
1314
1323
  node.params = this.parseFunctionParams();
1315
1324
  node.body = this.parseBlock();
1316
1325
  this.toks.adaptDirectivePrologue(node.body.body);
1317
1326
  this.inAsync = oldInAsync;
1327
+ this.inFunction = oldInFunction;
1318
1328
  return this.finishNode(node, "FunctionExpression")
1319
1329
  };
1320
1330
 
1321
1331
  lp$2.parseArrowExpression = function(node, params, isAsync) {
1322
- var oldInAsync = this.inAsync;
1332
+ var oldInAsync = this.inAsync, oldInFunction = this.inFunction;
1323
1333
  this.initFunction(node);
1324
1334
  if (this.options.ecmaVersion >= 8)
1325
1335
  { node.async = !!isAsync; }
1326
1336
  this.inAsync = node.async;
1337
+ this.inFunction = true;
1327
1338
  node.params = this.toAssignableList(params, true);
1328
1339
  node.expression = this.tok.type !== __acorn.tokTypes.braceL;
1329
1340
  if (node.expression) {
@@ -1333,6 +1344,7 @@ lp$2.parseArrowExpression = function(node, params, isAsync) {
1333
1344
  this.toks.adaptDirectivePrologue(node.body.body);
1334
1345
  }
1335
1346
  this.inAsync = oldInAsync;
1347
+ this.inFunction = oldInFunction;
1336
1348
  return this.finishNode(node, "ArrowFunctionExpression")
1337
1349
  };
1338
1350