@danielx/civet 0.6.90 → 0.6.92

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/dist/browser.js CHANGED
@@ -41,6 +41,394 @@ var Civet = (() => {
41
41
  ));
42
42
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
43
 
44
+ // source/parser/op.civet
45
+ function getPrecedence(op) {
46
+ if (typeof op === "string") {
47
+ return precedenceMap.get(op) ?? (() => {
48
+ throw new Error(`Unknown operator: ${op}`);
49
+ })();
50
+ } else if (typeof op.prec === "number") {
51
+ return op.prec;
52
+ } else {
53
+ return precedenceMap.get(op.prec ?? op.token) ?? (op.relational ? precedenceRelational : precedenceCustomDefault);
54
+ }
55
+ }
56
+ function processBinaryOpExpression($0) {
57
+ return recurse(expandChainedComparisons($0));
58
+ function recurse(expandedOps) {
59
+ let i = 2;
60
+ while (i < expandedOps.length) {
61
+ let op = expandedOps[i];
62
+ if (op.special) {
63
+ let advanceLeft2 = function(allowEqual) {
64
+ while (start >= 4) {
65
+ const prevPrec = getPrecedence(expandedOps[start - 2]);
66
+ if (!(prevPrec > prec || allowEqual && prevPrec === prec)) {
67
+ return prevPrec === prec;
68
+ }
69
+ start -= 4;
70
+ }
71
+ return false;
72
+ }, advanceRight2 = function(allowEqual) {
73
+ while (end + 4 < expandedOps.length) {
74
+ const nextPrec = getPrecedence(expandedOps[end + 2]);
75
+ if (!(nextPrec > prec || allowEqual && nextPrec === prec)) {
76
+ return nextPrec === prec;
77
+ }
78
+ end += 4;
79
+ }
80
+ return false;
81
+ };
82
+ var advanceLeft = advanceLeft2, advanceRight = advanceRight2;
83
+ let start = i - 2, end = i + 2;
84
+ const prec = getPrecedence(op);
85
+ let error;
86
+ switch (op.assoc) {
87
+ case "left":
88
+ case void 0: {
89
+ advanceLeft2(true);
90
+ advanceRight2(false);
91
+ break;
92
+ }
93
+ case "right": {
94
+ advanceLeft2(false);
95
+ advanceRight2(true);
96
+ break;
97
+ }
98
+ case "non": {
99
+ if (advanceLeft2(false) || advanceRight2(false)) {
100
+ error = {
101
+ type: "Error",
102
+ message: `non-associative operator ${op.token} used at same precedence level without parenthesization`
103
+ };
104
+ }
105
+ ;
106
+ break;
107
+ }
108
+ case "arguments": {
109
+ if (advanceLeft2(false)) {
110
+ error = {
111
+ type: "Error",
112
+ message: `arguments operator ${op.token} used at same precedence level as ${expandedOps[start - 2].token} to the left`
113
+ };
114
+ }
115
+ advanceRight2(true);
116
+ break;
117
+ }
118
+ default: {
119
+ throw new Error(`Unsupported associativity: ${op.assoc}`);
120
+ }
121
+ }
122
+ let a = start === i - 2 ? expandedOps[start] : expandedOps.slice(start, i - 1);
123
+ let wsOp = expandedOps[i - 1];
124
+ let wsB = expandedOps[i + 1];
125
+ let b = end === i + 2 ? expandedOps[i + 2] : expandedOps.slice(i + 2, end + 1);
126
+ if (op.assoc === "arguments") {
127
+ let i2 = 2;
128
+ while (i2 < b.length) {
129
+ if (prec === getPrecedence(b[i2])) {
130
+ if (!(b[i2].token === op.token)) {
131
+ error ??= {
132
+ type: "Error",
133
+ message: `arguments operator ${op.token} used at same precedence level as ${b[i2].token} to the right`
134
+ };
135
+ }
136
+ b[i2] = ",";
137
+ }
138
+ i2 += 4;
139
+ }
140
+ } else {
141
+ b = recurse(b);
142
+ }
143
+ if (op.token === "instanceof" && b.type === "Literal" && b.children?.[0]?.type === "StringLiteral") {
144
+ a = ["typeof ", makeLeftHandSideExpression(a)];
145
+ if (op.negated) {
146
+ op = { ...op, token: "!==", negated: false };
147
+ } else {
148
+ op = { ...op, token: "===" };
149
+ }
150
+ }
151
+ if (op.asConst) {
152
+ a = makeAsConst(a);
153
+ b = makeAsConst(b);
154
+ }
155
+ let children;
156
+ if (op.call) {
157
+ wsOp = insertTrimmingSpace(wsOp, "");
158
+ if (op.reversed) {
159
+ wsB = insertTrimmingSpace(wsB, "");
160
+ children = [wsOp, op.call, "(", wsB, b, ", ", a, ")", op.suffix];
161
+ } else {
162
+ children = [wsOp, op.call, "(", a, ",", wsB, b, ")", op.suffix];
163
+ }
164
+ } else if (op.method) {
165
+ wsOp = insertTrimmingSpace(wsOp, "");
166
+ wsB = insertTrimmingSpace(wsB, "");
167
+ if (op.reversed) {
168
+ if (end !== i + 2)
169
+ b = makeLeftHandSideExpression(b);
170
+ b = dotNumericLiteral(b);
171
+ children = [wsB, b, wsOp, ".", op.method, "(", a, ")"];
172
+ } else {
173
+ if (start !== i - 2 || a.type === "NumericLiteral") {
174
+ a = makeLeftHandSideExpression(a);
175
+ }
176
+ a = dotNumericLiteral(a);
177
+ children = [a, wsOp, ".", op.method, "(", wsB, b, ")"];
178
+ }
179
+ } else if (op.token) {
180
+ children = [a, wsOp, op, wsB, b];
181
+ if (op.negated)
182
+ children = ["(", ...children, ")"];
183
+ } else {
184
+ throw new Error("Unknown operator: " + JSON.stringify(op));
185
+ }
186
+ if (op.negated)
187
+ children.unshift("!");
188
+ if (error != null) {
189
+ children.push(error);
190
+ }
191
+ expandedOps.splice(start, end - start + 1, {
192
+ children
193
+ });
194
+ i = start + 2;
195
+ } else {
196
+ i += 4;
197
+ }
198
+ }
199
+ return expandedOps;
200
+ }
201
+ ;
202
+ return recurse;
203
+ }
204
+ function dotNumericLiteral(literal) {
205
+ if (literal?.type === "Literal" && /^[+-]?(?:0|[1-9](?:_[0-9]|[0-9])*)$/.test(literal.raw)) {
206
+ literal.children.push(".");
207
+ literal.raw += ".";
208
+ }
209
+ return literal;
210
+ }
211
+ function makeAsConst(node) {
212
+ if (Array.isArray(node) && node.length === 1) {
213
+ node = node[0];
214
+ }
215
+ if (node.type === "Literal" && node.raw !== "null" || node.type === "ArrayExpression" || node.type === "ObjectExpression") {
216
+ return { ...node, children: [...node.children, asConst] };
217
+ } else {
218
+ return node;
219
+ }
220
+ }
221
+ function isExistence(exp) {
222
+ if (exp?.type === "ParenthesizedExpression" && exp.implicit) {
223
+ exp = exp.expression;
224
+ }
225
+ if (exp?.type === "Existence") {
226
+ return exp;
227
+ }
228
+ ;
229
+ return;
230
+ }
231
+ function isRelationalOp(op) {
232
+ return op.relational || getPrecedence(op) === precedenceRelational;
233
+ }
234
+ function expandChainedComparisons([first, binops]) {
235
+ if (!binops.length) {
236
+ return [first];
237
+ }
238
+ const results = [];
239
+ let start = 0;
240
+ const chains = [];
241
+ var i = 0;
242
+ for (let i3 = 0, len2 = binops.length; i3 < len2; i3++) {
243
+ var i = i3;
244
+ var [, op] = binops[i3];
245
+ if (isRelationalOp(op)) {
246
+ chains.push(i);
247
+ } else if (getPrecedence(op) < precedenceRelational) {
248
+ processChains();
249
+ first = results.pop();
250
+ }
251
+ }
252
+ processChains();
253
+ return results;
254
+ function processChains() {
255
+ if (chains.length > 0) {
256
+ first = expandExistence(first);
257
+ for (let i4 = 0, len3 = chains.length; i4 < len3; i4++) {
258
+ const k = i4;
259
+ const index = chains[i4];
260
+ if (k > 0) {
261
+ results.push(" ", "&&", " ");
262
+ }
263
+ const binop = binops[index];
264
+ const exp = binop[3] = expandExistence(binop[3]);
265
+ results.push(first);
266
+ const endIndex = chains[k + 1] ?? i + 1;
267
+ results.push(...binops.slice(start, endIndex).flat());
268
+ first = [exp].concat(binops.slice(index + 1, endIndex));
269
+ start = endIndex;
270
+ }
271
+ } else {
272
+ results.push(first);
273
+ results.push(...binops.slice(start, i + 1).flat());
274
+ start = i + 1;
275
+ }
276
+ chains.length = 0;
277
+ }
278
+ function expandExistence(exp) {
279
+ let ref;
280
+ if (ref = isExistence(exp)) {
281
+ const existence = ref;
282
+ results.push(existence, " ", "&&", " ");
283
+ return existence.expression;
284
+ } else {
285
+ return exp;
286
+ }
287
+ }
288
+ ;
289
+ }
290
+ var precedenceOrder, precedenceMap, precedenceStep, precedenceRelational, precedenceCustomDefault, asConst;
291
+ var init_op = __esm({
292
+ "source/parser/op.civet"() {
293
+ "use strict";
294
+ init_util();
295
+ precedenceOrder = [
296
+ ["||", "??"],
297
+ ["^^"],
298
+ ["&&"],
299
+ ["|"],
300
+ ["^"],
301
+ ["&"],
302
+ // NOTE: Equality and inequality merged because of relational chaining
303
+ [
304
+ "==",
305
+ "!=",
306
+ "===",
307
+ "!==",
308
+ "<",
309
+ "<=",
310
+ ">",
311
+ ">=",
312
+ "in",
313
+ "instanceof"
314
+ ],
315
+ // NOTE: Extra in-between level for default custom operators
316
+ ["custom"],
317
+ ["<<", ">>", ">>>"],
318
+ ["+", "-"],
319
+ ["*", "/", "%"],
320
+ ["**"]
321
+ ];
322
+ precedenceMap = /* @__PURE__ */ new Map();
323
+ for (let i1 = 0, len = precedenceOrder.length; i1 < len; i1++) {
324
+ const prec = i1;
325
+ const ops = precedenceOrder[i1];
326
+ for (let i2 = 0, len1 = ops.length; i2 < len1; i2++) {
327
+ const op = ops[i2];
328
+ precedenceMap.set(op, prec);
329
+ }
330
+ }
331
+ precedenceStep = 1 / 64;
332
+ precedenceRelational = precedenceMap.get("==");
333
+ precedenceCustomDefault = precedenceMap.get("custom");
334
+ asConst = {
335
+ ts: true,
336
+ children: [" as const"]
337
+ };
338
+ }
339
+ });
340
+
341
+ // source/parser/unary.civet
342
+ function processUnaryExpression(pre, exp, post) {
343
+ if (!(pre.length || post))
344
+ return exp;
345
+ if (post?.token === "?") {
346
+ post = {
347
+ $loc: post.$loc,
348
+ token: " != null"
349
+ };
350
+ if (pre.length) {
351
+ const lastPre = pre.at(-1);
352
+ if (lastPre.token === "!") {
353
+ post.token = " == null";
354
+ pre = pre.slice(0, -1);
355
+ } else if (lastPre.length === 2 && lastPre[0].token === "!") {
356
+ post.token = " == null";
357
+ pre = pre.slice(0, -1);
358
+ }
359
+ }
360
+ const existence = {
361
+ type: "Existence",
362
+ expression: exp,
363
+ children: [exp, post],
364
+ parent: void 0
365
+ };
366
+ exp = makeLeftHandSideExpression(existence);
367
+ if (pre.length) {
368
+ return {
369
+ type: "UnaryExpression",
370
+ children: [...pre, exp]
371
+ };
372
+ }
373
+ return exp;
374
+ }
375
+ if (exp.type === "Literal") {
376
+ if (pre.length === 1) {
377
+ const { token } = pre[0];
378
+ if (token === "-" || token === "+") {
379
+ const children = [pre[0], ...exp.children];
380
+ const literal = {
381
+ type: "Literal",
382
+ children,
383
+ raw: `${token}${exp.raw}`
384
+ };
385
+ if (post) {
386
+ return {
387
+ type: "UnaryExpression",
388
+ children: [literal, post]
389
+ };
390
+ }
391
+ return literal;
392
+ }
393
+ }
394
+ }
395
+ let ref;
396
+ while (ref = pre.length) {
397
+ const l = ref;
398
+ const last = pre[l - 1];
399
+ if (last.type === "Await") {
400
+ if (last.op) {
401
+ if (exp.type !== "ParenthesizedExpression") {
402
+ exp = ["(", exp, ")"];
403
+ }
404
+ exp = {
405
+ type: "CallExpression",
406
+ children: [...last.children, "Promise", last.op, exp]
407
+ };
408
+ pre = pre.slice(0, -1);
409
+ } else {
410
+ exp = {
411
+ type: "AwaitExpression",
412
+ children: [...last.children, exp]
413
+ };
414
+ pre = pre.slice(0, -1);
415
+ }
416
+ } else {
417
+ break;
418
+ }
419
+ }
420
+ return {
421
+ type: "UnaryExpression",
422
+ children: [...pre, exp, post]
423
+ };
424
+ }
425
+ var init_unary = __esm({
426
+ "source/parser/unary.civet"() {
427
+ "use strict";
428
+ init_util();
429
+ }
430
+ });
431
+
44
432
  // source/parser/util.civet
45
433
  function addParentPointers(node, parent) {
46
434
  if (node == null)
@@ -276,6 +664,92 @@ var Civet = (() => {
276
664
  parameters
277
665
  };
278
666
  }
667
+ function makeAmpersandFunctionExpression(prefix, rhs) {
668
+ let ref, body, typeSuffix;
669
+ if (!rhs) {
670
+ body = ref = makeRef("$");
671
+ } else {
672
+ ({ ref, typeSuffix } = rhs);
673
+ if (!ref) {
674
+ throw new Error("Could not find ref in ampersand shorthand block");
675
+ }
676
+ body = rhs;
677
+ }
678
+ if (prefix.length) {
679
+ body = {
680
+ type: "UnaryExpression",
681
+ children: [processUnaryExpression(prefix, body, void 0)]
682
+ };
683
+ }
684
+ const parameters = {
685
+ type: "Parameters",
686
+ children: typeSuffix ? ["(", ref, typeSuffix, ")"] : [ref],
687
+ names: []
688
+ };
689
+ const expressions = [body];
690
+ const block = {
691
+ bare: true,
692
+ expressions,
693
+ children: [expressions]
694
+ };
695
+ const children = [parameters, " => ", block];
696
+ const async = hasAwait(body);
697
+ if (async) {
698
+ children.unshift("async ");
699
+ }
700
+ return {
701
+ type: "ArrowFunction",
702
+ signature: {
703
+ modifier: {
704
+ async
705
+ }
706
+ },
707
+ children,
708
+ ref,
709
+ body,
710
+ ampersandBlock: true,
711
+ block,
712
+ parameters
713
+ };
714
+ }
715
+ function makeAmpersandBlockRHSBody(typeSuffix, callExpRest, unaryPostfix, assign, binopRHS) {
716
+ const ref = makeRef("$");
717
+ let exp = {
718
+ type: "AmpersandRef",
719
+ children: [ref],
720
+ names: [],
721
+ ref
722
+ };
723
+ if (callExpRest) {
724
+ exp.children.push(...callExpRest[1]);
725
+ }
726
+ if (unaryPostfix) {
727
+ exp = processUnaryExpression([], exp, unaryPostfix);
728
+ }
729
+ if (assign) {
730
+ const [op1, more, rhs] = assign;
731
+ const lhs = [
732
+ [void 0, exp, ...op1],
733
+ ...more.map((x) => [x[0], x[1], ...x[2]])
734
+ ];
735
+ exp = {
736
+ type: "AssignmentExpression",
737
+ children: [lhs, rhs],
738
+ names: null,
739
+ lhs,
740
+ assigned: exp,
741
+ exp: rhs
742
+ };
743
+ }
744
+ if (binopRHS) {
745
+ exp = {
746
+ children: processBinaryOpExpression([exp, binopRHS[1]])
747
+ };
748
+ }
749
+ exp.ref = ref;
750
+ exp.typeSuffix = typeSuffix;
751
+ return exp;
752
+ }
279
753
  function makeLeftHandSideExpression(expression) {
280
754
  if (expression.parenthesized) {
281
755
  return expression;
@@ -453,7 +927,9 @@ var Civet = (() => {
453
927
  const children = expression ? ["return ", expression] : ["return"];
454
928
  return makeNode({
455
929
  type: "ReturnStatement",
456
- children
930
+ children,
931
+ expression,
932
+ parent: expression?.parent
457
933
  });
458
934
  }
459
935
  var assert, typeNeedsNoParens;
@@ -461,6 +937,8 @@ var Civet = (() => {
461
937
  "source/parser/util.civet"() {
462
938
  "use strict";
463
939
  init_traversal();
940
+ init_op();
941
+ init_unary();
464
942
  assert = {
465
943
  equal(a, b, msg) {
466
944
  if (a !== b) {
@@ -872,325 +1350,22 @@ var Civet = (() => {
872
1350
  return;
873
1351
  }
874
1352
  const { blockPrefix } = n;
875
- p.push(blockPrefix);
876
- return insertRestSplices(blockPrefix, p, thisAssignments2);
877
- });
878
- }
879
- insertRestSplices(statements, splices, thisAssignments);
880
- return [splices, thisAssignments];
881
- }
882
- function arrayElementHasTrailingComma(elementNode) {
883
- const lastChild = elementNode.children.at(-1);
884
- return lastChild && lastChild[lastChild.length - 1]?.token === ",";
885
- }
886
- var init_binding = __esm({
887
- "source/parser/binding.civet"() {
888
- "use strict";
889
- init_traversal();
890
- init_util();
891
- }
892
- });
893
-
894
- // source/parser/op.civet
895
- function getPrecedence(op) {
896
- if (typeof op === "string") {
897
- return precedenceMap.get(op) ?? (() => {
898
- throw new Error(`Unknown operator: ${op}`);
899
- })();
900
- } else if (typeof op.prec === "number") {
901
- return op.prec;
902
- } else {
903
- return precedenceMap.get(op.prec ?? op.token) ?? (op.relational ? precedenceRelational : precedenceCustomDefault);
904
- }
905
- }
906
- function processBinaryOpExpression($0) {
907
- return recurse(expandChainedComparisons($0));
908
- function recurse(expandedOps) {
909
- let i = 2;
910
- while (i < expandedOps.length) {
911
- let op = expandedOps[i];
912
- if (op.special) {
913
- let advanceLeft2 = function(allowEqual) {
914
- while (start >= 4) {
915
- const prevPrec = getPrecedence(expandedOps[start - 2]);
916
- if (!(prevPrec > prec || allowEqual && prevPrec === prec)) {
917
- return prevPrec === prec;
918
- }
919
- start -= 4;
920
- }
921
- return false;
922
- }, advanceRight2 = function(allowEqual) {
923
- while (end + 4 < expandedOps.length) {
924
- const nextPrec = getPrecedence(expandedOps[end + 2]);
925
- if (!(nextPrec > prec || allowEqual && nextPrec === prec)) {
926
- return nextPrec === prec;
927
- }
928
- end += 4;
929
- }
930
- return false;
931
- };
932
- var advanceLeft = advanceLeft2, advanceRight = advanceRight2;
933
- let start = i - 2, end = i + 2;
934
- const prec = getPrecedence(op);
935
- let error;
936
- switch (op.assoc) {
937
- case "left":
938
- case void 0: {
939
- advanceLeft2(true);
940
- advanceRight2(false);
941
- break;
942
- }
943
- case "right": {
944
- advanceLeft2(false);
945
- advanceRight2(true);
946
- break;
947
- }
948
- case "non": {
949
- if (advanceLeft2(false) || advanceRight2(false)) {
950
- error = {
951
- type: "Error",
952
- message: `non-associative operator ${op.token} used at same precedence level without parenthesization`
953
- };
954
- }
955
- ;
956
- break;
957
- }
958
- case "arguments": {
959
- if (advanceLeft2(false)) {
960
- error = {
961
- type: "Error",
962
- message: `arguments operator ${op.token} used at same precedence level as ${expandedOps[start - 2].token} to the left`
963
- };
964
- }
965
- advanceRight2(true);
966
- break;
967
- }
968
- default: {
969
- throw new Error(`Unsupported associativity: ${op.assoc}`);
970
- }
971
- }
972
- let a = start === i - 2 ? expandedOps[start] : expandedOps.slice(start, i - 1);
973
- let wsOp = expandedOps[i - 1];
974
- let wsB = expandedOps[i + 1];
975
- let b = end === i + 2 ? expandedOps[i + 2] : expandedOps.slice(i + 2, end + 1);
976
- if (op.assoc === "arguments") {
977
- let i2 = 2;
978
- while (i2 < b.length) {
979
- if (prec === getPrecedence(b[i2])) {
980
- if (!(b[i2].token === op.token)) {
981
- error ??= {
982
- type: "Error",
983
- message: `arguments operator ${op.token} used at same precedence level as ${b[i2].token} to the right`
984
- };
985
- }
986
- b[i2] = ",";
987
- }
988
- i2 += 4;
989
- }
990
- } else {
991
- b = recurse(b);
992
- }
993
- if (op.token === "instanceof" && b.type === "Literal" && b.children?.[0]?.type === "StringLiteral") {
994
- a = ["typeof ", makeLeftHandSideExpression(a)];
995
- if (op.negated) {
996
- op = { ...op, token: "!==", negated: false };
997
- } else {
998
- op = { ...op, token: "===" };
999
- }
1000
- }
1001
- if (op.asConst) {
1002
- a = makeAsConst(a);
1003
- b = makeAsConst(b);
1004
- }
1005
- let children;
1006
- if (op.call) {
1007
- wsOp = insertTrimmingSpace(wsOp, "");
1008
- if (op.reversed) {
1009
- wsB = insertTrimmingSpace(wsB, "");
1010
- children = [wsOp, op.call, "(", wsB, b, ", ", a, ")", op.suffix];
1011
- } else {
1012
- children = [wsOp, op.call, "(", a, ",", wsB, b, ")", op.suffix];
1013
- }
1014
- } else if (op.method) {
1015
- wsOp = insertTrimmingSpace(wsOp, "");
1016
- wsB = insertTrimmingSpace(wsB, "");
1017
- if (op.reversed) {
1018
- if (end !== i + 2)
1019
- b = makeLeftHandSideExpression(b);
1020
- b = dotNumericLiteral(b);
1021
- children = [wsB, b, wsOp, ".", op.method, "(", a, ")"];
1022
- } else {
1023
- if (start !== i - 2 || a.type === "NumericLiteral") {
1024
- a = makeLeftHandSideExpression(a);
1025
- }
1026
- a = dotNumericLiteral(a);
1027
- children = [a, wsOp, ".", op.method, "(", wsB, b, ")"];
1028
- }
1029
- } else if (op.token) {
1030
- children = [a, wsOp, op, wsB, b];
1031
- if (op.negated)
1032
- children = ["(", ...children, ")"];
1033
- } else {
1034
- throw new Error("Unknown operator: " + JSON.stringify(op));
1035
- }
1036
- if (op.negated)
1037
- children.unshift("!");
1038
- if (error != null) {
1039
- children.push(error);
1040
- }
1041
- expandedOps.splice(start, end - start + 1, {
1042
- children
1043
- });
1044
- i = start + 2;
1045
- } else {
1046
- i += 4;
1047
- }
1048
- }
1049
- return expandedOps;
1050
- }
1051
- ;
1052
- return recurse;
1053
- }
1054
- function dotNumericLiteral(literal) {
1055
- if (literal?.type === "Literal" && /^[+-]?(?:0|[1-9](?:_[0-9]|[0-9])*)$/.test(literal.raw)) {
1056
- literal.children.push(".");
1057
- literal.raw += ".";
1058
- }
1059
- return literal;
1060
- }
1061
- function makeAsConst(node) {
1062
- if (Array.isArray(node) && node.length === 1) {
1063
- node = node[0];
1064
- }
1065
- if (node.type === "Literal" && node.raw !== "null" || node.type === "ArrayExpression" || node.type === "ObjectExpression") {
1066
- return { ...node, children: [...node.children, asConst] };
1067
- } else {
1068
- return node;
1069
- }
1070
- }
1071
- function isExistence(exp) {
1072
- if (exp.type === "ParenthesizedExpression" && exp.implicit) {
1073
- exp = exp.expression;
1074
- }
1075
- if (exp.type === "Existence") {
1076
- return exp;
1077
- }
1078
- ;
1079
- return;
1080
- }
1081
- function isRelationalOp(op) {
1082
- return op.relational || getPrecedence(op) === precedenceRelational;
1083
- }
1084
- function expandChainedComparisons([first, binops]) {
1085
- const results = [];
1086
- let i = 0;
1087
- const l = binops.length;
1088
- let start = 0;
1089
- let chains = [];
1090
- let op;
1091
- while (i < l) {
1092
- [, op] = binops[i];
1093
- if (isRelationalOp(op)) {
1094
- chains.push(i);
1095
- } else if (getPrecedence(op) < precedenceRelational) {
1096
- processChains(op);
1097
- first = void 0;
1098
- }
1099
- i++;
1100
- }
1101
- if (op != null) {
1102
- processChains(op);
1103
- }
1104
- return results;
1105
- function processChains(op2) {
1106
- if (first && isRelationalOp(op2)) {
1107
- first = expandExistence(first);
1108
- }
1109
- if (chains.length > 1) {
1110
- chains.forEach((index, k) => {
1111
- if (k > 0) {
1112
- results.push(" ", "&&", " ");
1113
- }
1114
- const binop = binops[index];
1115
- let [, , , exp] = binop;
1116
- exp = binop[3] = expandExistence(exp);
1117
- let endIndex;
1118
- if (k < chains.length - 1) {
1119
- endIndex = chains[k + 1];
1120
- } else {
1121
- endIndex = i + 1;
1122
- }
1123
- results.push(first, ...binops.slice(start, endIndex).flat());
1124
- first = [exp].concat(binops.slice(index + 1, endIndex));
1125
- return start = endIndex;
1126
- });
1127
- } else {
1128
- if (first) {
1129
- results.push(first);
1130
- }
1131
- results.push(...binops.slice(start, i + 1).flat());
1132
- start = i + 1;
1133
- }
1134
- chains.length = 0;
1135
- }
1136
- function expandExistence(exp) {
1137
- const existence = isExistence(exp);
1138
- if (existence) {
1139
- results.push(existence, " ", "&&", " ");
1140
- return existence.expression;
1141
- }
1142
- return exp;
1353
+ p.push(blockPrefix);
1354
+ return insertRestSplices(blockPrefix, p, thisAssignments2);
1355
+ });
1143
1356
  }
1144
- ;
1357
+ insertRestSplices(statements, splices, thisAssignments);
1358
+ return [splices, thisAssignments];
1145
1359
  }
1146
- var precedenceOrder, precedenceMap, precedenceStep, precedenceRelational, precedenceCustomDefault, asConst;
1147
- var init_op = __esm({
1148
- "source/parser/op.civet"() {
1360
+ function arrayElementHasTrailingComma(elementNode) {
1361
+ const lastChild = elementNode.children.at(-1);
1362
+ return lastChild && lastChild[lastChild.length - 1]?.token === ",";
1363
+ }
1364
+ var init_binding = __esm({
1365
+ "source/parser/binding.civet"() {
1149
1366
  "use strict";
1367
+ init_traversal();
1150
1368
  init_util();
1151
- precedenceOrder = [
1152
- ["||", "??"],
1153
- ["^^"],
1154
- ["&&"],
1155
- ["|"],
1156
- ["^"],
1157
- ["&"],
1158
- // NOTE: Equality and inequality merged because of relational chaining
1159
- [
1160
- "==",
1161
- "!=",
1162
- "===",
1163
- "!==",
1164
- "<",
1165
- "<=",
1166
- ">",
1167
- ">=",
1168
- "in",
1169
- "instanceof"
1170
- ],
1171
- // NOTE: Extra in-between level for default custom operators
1172
- ["custom"],
1173
- ["<<", ">>", ">>>"],
1174
- ["+", "-"],
1175
- ["*", "/", "%"],
1176
- ["**"]
1177
- ];
1178
- precedenceMap = /* @__PURE__ */ new Map();
1179
- for (let i1 = 0, len = precedenceOrder.length; i1 < len; i1++) {
1180
- const prec = i1;
1181
- const ops = precedenceOrder[i1];
1182
- for (let i2 = 0, len1 = ops.length; i2 < len1; i2++) {
1183
- const op = ops[i2];
1184
- precedenceMap.set(op, prec);
1185
- }
1186
- }
1187
- precedenceStep = 1 / 64;
1188
- precedenceRelational = precedenceMap.get("==");
1189
- precedenceCustomDefault = precedenceMap.get("custom");
1190
- asConst = {
1191
- ts: true,
1192
- children: [" as const"]
1193
- };
1194
1369
  }
1195
1370
  });
1196
1371
 
@@ -2456,91 +2631,6 @@ var Civet = (() => {
2456
2631
  }
2457
2632
  });
2458
2633
 
2459
- // source/parser/unary.civet
2460
- function processUnaryExpression(pre, exp, post) {
2461
- if (!(pre.length || post))
2462
- return exp;
2463
- if (post?.token === "?") {
2464
- post = {
2465
- $loc: post.$loc,
2466
- token: " != null"
2467
- };
2468
- if (pre.length) {
2469
- const lastPre = pre[pre.length - 1];
2470
- if (lastPre.token === "!") {
2471
- post.token = " == null";
2472
- pre = pre.slice(0, -1);
2473
- } else if (lastPre.length === 2 && lastPre[0].token === "!") {
2474
- post.token = " == null";
2475
- pre = pre.slice(0, -1);
2476
- }
2477
- }
2478
- const existence = {
2479
- type: "Existence",
2480
- expression: exp,
2481
- children: [exp, post]
2482
- };
2483
- exp = makeLeftHandSideExpression(existence);
2484
- if (pre.length) {
2485
- return {
2486
- type: "UnaryExpression",
2487
- children: [...pre, exp]
2488
- };
2489
- }
2490
- return exp;
2491
- }
2492
- if (exp.type === "Literal") {
2493
- if (pre.length === 1) {
2494
- const { token } = pre[0];
2495
- if (token === "-" || token === "+") {
2496
- const children = [pre[0], ...exp.children];
2497
- if (post)
2498
- exp.children.push(post);
2499
- return {
2500
- type: "Literal",
2501
- children,
2502
- raw: `${token}${exp.raw}`
2503
- };
2504
- }
2505
- }
2506
- }
2507
- let ref;
2508
- while (ref = pre.length) {
2509
- const l = ref;
2510
- const last = pre[l - 1];
2511
- if (last.type === "Await") {
2512
- if (last.op) {
2513
- if (exp.type !== "ParenthesizedExpression") {
2514
- exp = ["(", exp, ")"];
2515
- }
2516
- exp = {
2517
- type: "CallExpression",
2518
- children: [...last.children, "Promise", last.op, exp]
2519
- };
2520
- pre = pre.slice(0, -1);
2521
- } else {
2522
- exp = {
2523
- type: "AwaitExpression",
2524
- children: [...last.children, exp]
2525
- };
2526
- pre = pre.slice(0, -1);
2527
- }
2528
- } else {
2529
- break;
2530
- }
2531
- }
2532
- return {
2533
- type: "UnaryExpression",
2534
- children: [...pre, exp, post]
2535
- };
2536
- }
2537
- var init_unary = __esm({
2538
- "source/parser/unary.civet"() {
2539
- "use strict";
2540
- init_util();
2541
- }
2542
- });
2543
-
2544
2634
  // source/parser/pipe.civet
2545
2635
  function constructInvocation(fn, arg) {
2546
2636
  const fnArr = [fn.leadingComment, fn.expr, fn.trailingComment];
@@ -2757,10 +2847,13 @@ var Civet = (() => {
2757
2847
  function forRange(open, forDeclaration, range, stepExp, close) {
2758
2848
  const { start, end, inclusive } = range;
2759
2849
  const counterRef = makeRef("i");
2850
+ const infinite = end.type === "Identifier" && end.name === "Infinity";
2760
2851
  let stepRef;
2761
2852
  if (stepExp) {
2762
2853
  stepExp = insertTrimmingSpace(stepExp, "");
2763
2854
  stepRef = maybeRef(stepExp, "step");
2855
+ } else if (infinite) {
2856
+ stepExp = stepRef = "1";
2764
2857
  }
2765
2858
  let startRef = maybeRef(start, "start");
2766
2859
  let endRef = maybeRef(end, "end");
@@ -2790,7 +2883,7 @@ var Civet = (() => {
2790
2883
  } else {
2791
2884
  const value = "StringLiteral" === start.subtype ? ["String.fromCharCode(", counterRef, ")"] : counterRef;
2792
2885
  blockPrefix = [
2793
- ["", forDeclaration, " = ", value, ";"]
2886
+ ["", [forDeclaration, " = ", value], ";"]
2794
2887
  ];
2795
2888
  }
2796
2889
  } else if (forDeclaration) {
@@ -2802,8 +2895,8 @@ var Civet = (() => {
2802
2895
  names: forDeclaration?.names
2803
2896
  };
2804
2897
  const counterPart = inclusive ? [counterRef, " <= ", endRef, " : ", counterRef, " >= ", endRef] : [counterRef, " < ", endRef, " : ", counterRef, " > ", endRef];
2805
- const condition = stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
2806
- const increment = stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
2898
+ const condition = infinite ? [] : stepRef ? [stepRef, " !== 0 && (", stepRef, " > 0 ? ", ...counterPart, ")"] : ascRef ? [ascRef, " ? ", ...counterPart] : asc ? counterPart.slice(0, 3) : counterPart.slice(4);
2899
+ const increment = infinite ? [...varAssign, "++", counterRef] : stepRef ? [...varAssign, counterRef, " += ", stepRef] : ascRef ? [...varAssign, ascRef, " ? ++", counterRef, " : --", counterRef] : [...varAssign, asc ? "++" : "--", counterRef];
2807
2900
  return {
2808
2901
  declaration,
2809
2902
  children: [open, declaration, "; ", ...condition, "; ", ...increment, close],
@@ -3246,12 +3339,7 @@ var Civet = (() => {
3246
3339
  });
3247
3340
  }
3248
3341
  function quoteString(str) {
3249
- str = str.replace(/\\/g, "\\\\");
3250
- if (str.includes('"') && !str.includes("'")) {
3251
- return "'" + str.replace(/'/g, "\\'") + "'";
3252
- } else {
3253
- return '"' + str.replace(/"/g, '\\"') + '"';
3254
- }
3342
+ return JSON.stringify(str);
3255
3343
  }
3256
3344
  var indentRe;
3257
3345
  var init_string = __esm({
@@ -3294,7 +3382,9 @@ var Civet = (() => {
3294
3382
  isWhitespaceOrEmpty: () => isWhitespaceOrEmpty,
3295
3383
  lastAccessInCallExpression: () => lastAccessInCallExpression,
3296
3384
  literalValue: () => literalValue,
3385
+ makeAmpersandBlockRHSBody: () => makeAmpersandBlockRHSBody,
3297
3386
  makeAmpersandFunction: () => makeAmpersandFunction,
3387
+ makeAmpersandFunctionExpression: () => makeAmpersandFunctionExpression,
3298
3388
  makeEmptyBlock: () => makeEmptyBlock,
3299
3389
  makeExpressionStatement: () => makeExpressionStatement,
3300
3390
  makeGetterMethod: () => makeGetterMethod,
@@ -4257,6 +4347,7 @@ var Civet = (() => {
4257
4347
  assert.equal(m.JSXTagStack.length, 1, "JSXTagStack");
4258
4348
  addParentPointers(root);
4259
4349
  const { expressions: statements } = root;
4350
+ processPartialPlaceholders(statements);
4260
4351
  processNegativeIndexAccess(statements);
4261
4352
  processTypes(statements);
4262
4353
  processDeclarationConditions(statements, m.getRef);
@@ -4301,6 +4392,43 @@ var Civet = (() => {
4301
4392
  });
4302
4393
  }
4303
4394
  }
4395
+ function processPartialPlaceholders(statements) {
4396
+ const partialMap = /* @__PURE__ */ new Map();
4397
+ gatherRecursiveAll(statements, ($3) => $3.type === "PartialPlaceholder").forEach((_exp) => {
4398
+ const exp = _exp;
4399
+ let { ancestor } = findAncestor(exp, ($4) => $4?.type === "Call");
4400
+ ancestor = ancestor?.parent;
4401
+ while (ancestor?.parent?.type === "UnaryExpression") {
4402
+ ancestor = ancestor.parent;
4403
+ }
4404
+ if (ancestor) {
4405
+ if (partialMap.has(ancestor)) {
4406
+ return partialMap.get(ancestor).push(exp);
4407
+ } else {
4408
+ return partialMap.set(ancestor, [exp]);
4409
+ }
4410
+ } else {
4411
+ return replaceNode(exp, {
4412
+ type: "Error",
4413
+ message: "Partial placeholder outside of call expression",
4414
+ parent: exp.parent
4415
+ });
4416
+ }
4417
+ });
4418
+ for (const [ancestor, placeholders] of partialMap) {
4419
+ let ref = makeRef("$");
4420
+ placeholders.forEach((exp) => {
4421
+ return replaceNode(exp.children.at(-1), ref);
4422
+ });
4423
+ const rhs = {
4424
+ ref,
4425
+ children: [ancestor]
4426
+ };
4427
+ const fnExp = makeAmpersandFunctionExpression([], rhs);
4428
+ replaceNode(ancestor, fnExp);
4429
+ }
4430
+ return;
4431
+ }
4304
4432
  function reorderBindingRestProperty(props) {
4305
4433
  const names = props.flatMap((p) => p.names);
4306
4434
  let restIndex = -1;
@@ -5011,11 +5139,11 @@ ${input.slice(result.pos)}
5011
5139
  WRHS,
5012
5140
  SingleLineBinaryOpRHS,
5013
5141
  RHS,
5014
- ParenthesizedAssignment,
5015
5142
  UnaryExpression,
5016
5143
  UnaryWithoutParenthesizedAssignment,
5017
5144
  UnaryBody,
5018
5145
  UnaryWithoutParenthesizedAssignmentBody,
5146
+ ParenthesizedAssignment,
5019
5147
  UnaryPostfix,
5020
5148
  TypePostfix,
5021
5149
  Tuple,
@@ -5043,6 +5171,7 @@ ${input.slice(result.pos)}
5043
5171
  PipelineTailItem,
5044
5172
  PrimaryExpression,
5045
5173
  ParenthesizedExpression,
5174
+ PartialPlaceholder,
5046
5175
  ClassDeclaration,
5047
5176
  ClassExpression,
5048
5177
  ClassBinding,
@@ -5503,6 +5632,7 @@ ${input.slice(result.pos)}
5503
5632
  TripleTick,
5504
5633
  Try,
5505
5634
  Typeof,
5635
+ Undefined,
5506
5636
  Unless,
5507
5637
  Until,
5508
5638
  Using,
@@ -5903,124 +6033,126 @@ ${input.slice(result.pos)}
5903
6033
  var $L199 = $L("```");
5904
6034
  var $L200 = $L("try");
5905
6035
  var $L201 = $L("typeof");
5906
- var $L202 = $L("unless");
5907
- var $L203 = $L("until");
5908
- var $L204 = $L("using");
5909
- var $L205 = $L("var");
5910
- var $L206 = $L("void");
5911
- var $L207 = $L("when");
5912
- var $L208 = $L("while");
5913
- var $L209 = $L("yield");
5914
- var $L210 = $L("/>");
5915
- var $L211 = $L("</");
5916
- var $L212 = $L("<>");
5917
- var $L213 = $L("</>");
5918
- var $L214 = $L("<!--");
5919
- var $L215 = $L("-->");
5920
- var $L216 = $L("type");
5921
- var $L217 = $L("enum");
5922
- var $L218 = $L("interface");
5923
- var $L219 = $L("global");
5924
- var $L220 = $L("module");
5925
- var $L221 = $L("namespace");
5926
- var $L222 = $L("asserts");
5927
- var $L223 = $L("keyof");
5928
- var $L224 = $L("???");
5929
- var $L225 = $L("[]");
5930
- var $L226 = $L("civet");
6036
+ var $L202 = $L("undefined");
6037
+ var $L203 = $L("unless");
6038
+ var $L204 = $L("until");
6039
+ var $L205 = $L("using");
6040
+ var $L206 = $L("var");
6041
+ var $L207 = $L("void");
6042
+ var $L208 = $L("when");
6043
+ var $L209 = $L("while");
6044
+ var $L210 = $L("yield");
6045
+ var $L211 = $L("/>");
6046
+ var $L212 = $L("</");
6047
+ var $L213 = $L("<>");
6048
+ var $L214 = $L("</>");
6049
+ var $L215 = $L("<!--");
6050
+ var $L216 = $L("-->");
6051
+ var $L217 = $L("type");
6052
+ var $L218 = $L("enum");
6053
+ var $L219 = $L("interface");
6054
+ var $L220 = $L("global");
6055
+ var $L221 = $L("module");
6056
+ var $L222 = $L("namespace");
6057
+ var $L223 = $L("asserts");
6058
+ var $L224 = $L("keyof");
6059
+ var $L225 = $L("???");
6060
+ var $L226 = $L("[]");
6061
+ var $L227 = $L("civet");
5931
6062
  var $R0 = $R(new RegExp("(?=async|debugger|if|unless|do|for|loop|until|while|switch|throw|try)", "suy"));
5932
6063
  var $R1 = $R(new RegExp("(as|of|satisfies|then|when|implements|xor|xnor)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
5933
6064
  var $R2 = $R(new RegExp("[0-9]", "suy"));
5934
6065
  var $R3 = $R(new RegExp("(?!\\p{ID_Start}|[_$0-9(\\[{])", "suy"));
5935
6066
  var $R4 = $R(new RegExp("[ \\t]", "suy"));
5936
- var $R5 = $R(new RegExp("(?=['\"`])", "suy"));
5937
- var $R6 = $R(new RegExp("(?=[\\/?])", "suy"));
5938
- var $R7 = $R(new RegExp("(?=[\\/\\[{?.!@#'\u2019:])", "suy"));
5939
- var $R8 = $R(new RegExp("[)}]", "suy"));
5940
- var $R9 = $R(new RegExp("\\+\\+|--|[\\+-]\\S", "suy"));
5941
- var $R10 = $R(new RegExp("[&]", "suy"));
5942
- var $R11 = $R(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
5943
- var $R12 = $R(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
5944
- var $R13 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
5945
- var $R14 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5946
- var $R15 = $R(new RegExp("(?=\\[)", "suy"));
5947
- var $R16 = $R(new RegExp("[!+-]?", "suy"));
5948
- var $R17 = $R(new RegExp("[+-]", "suy"));
5949
- var $R18 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
5950
- var $R19 = $R(new RegExp("!\\^\\^?", "suy"));
5951
- var $R20 = $R(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
5952
- var $R21 = $R(new RegExp("[:.]", "suy"));
5953
- var $R22 = $R(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
5954
- var $R23 = $R(new RegExp("(?=loop|do|for|until|while)", "suy"));
5955
- var $R24 = $R(new RegExp("(?=[\\s\\),])", "suy"));
5956
- var $R25 = $R(new RegExp('[^;"\\s]+', "suy"));
5957
- var $R26 = $R(new RegExp("(?=[0-9.])", "suy"));
5958
- var $R27 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
5959
- var $R28 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
5960
- var $R29 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
5961
- var $R30 = $R(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
5962
- var $R31 = $R(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
5963
- var $R32 = $R(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
5964
- var $R33 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
5965
- var $R34 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
5966
- var $R35 = $R(new RegExp("(?=[0-9])", "suy"));
5967
- var $R36 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
5968
- var $R37 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
5969
- var $R38 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
5970
- var $R39 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
5971
- var $R40 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
5972
- var $R41 = $R(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
5973
- var $R42 = $R(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
5974
- var $R43 = $R(new RegExp("(?:\\\\.)", "suy"));
5975
- var $R44 = $R(new RegExp("[\\s]+", "suy"));
5976
- var $R45 = $R(new RegExp("\\/(?!\\/\\/)", "suy"));
5977
- var $R46 = $R(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
5978
- var $R47 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
5979
- var $R48 = $R(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
5980
- var $R49 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
5981
- var $R50 = $R(new RegExp("(?=[`'\"])", "suy"));
5982
- var $R51 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
5983
- var $R52 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
5984
- var $R53 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
5985
- var $R54 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
5986
- var $R55 = $R(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
5987
- var $R56 = $R(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
5988
- var $R57 = $R(new RegExp("(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
5989
- var $R58 = $R(new RegExp("(?=\\/|#)", "suy"));
5990
- var $R59 = $R(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
5991
- var $R60 = $R(new RegExp(".", "suy"));
5992
- var $R61 = $R(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
5993
- var $R62 = $R(new RegExp("[^]*?###", "suy"));
5994
- var $R63 = $R(new RegExp("###(?!#)", "suy"));
5995
- var $R64 = $R(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
5996
- var $R65 = $R(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
5997
- var $R66 = $R(new RegExp("[ \\t]+", "suy"));
5998
- var $R67 = $R(new RegExp("(?=\\s|\\/|#)", "suy"));
5999
- var $R68 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
6000
- var $R69 = $R(new RegExp("[=:]", "suy"));
6001
- var $R70 = $R(new RegExp("['\u2019]s", "suy"));
6002
- var $R71 = $R(new RegExp("\\s", "suy"));
6003
- var $R72 = $R(new RegExp("(?=[<])", "suy"));
6004
- var $R73 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
6005
- var $R74 = $R(new RegExp("[!+-]", "suy"));
6006
- var $R75 = $R(new RegExp("[\\s>]|\\/>", "suy"));
6007
- var $R76 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
6008
- var $R77 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
6009
- var $R78 = $R(new RegExp("[<>]", "suy"));
6010
- var $R79 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
6011
- var $R80 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
6012
- var $R81 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
6013
- var $R82 = $R(new RegExp("[+-]?", "suy"));
6014
- var $R83 = $R(new RegExp("(?=if|unless)", "suy"));
6015
- var $R84 = $R(new RegExp("#![^\\r\\n]*", "suy"));
6016
- var $R85 = $R(new RegExp("[\\t ]*", "suy"));
6017
- var $R86 = $R(new RegExp("[ \\t]*", "suy"));
6018
- var $R87 = $R(new RegExp("[\\s]*", "suy"));
6019
- var $R88 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
6020
- var $R89 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
6021
- var $R90 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
6022
- var $R91 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
6023
- var $R92 = $R(new RegExp("[^]*", "suy"));
6067
+ var $R5 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$.])", "suy"));
6068
+ var $R6 = $R(new RegExp("(?=['\"`])", "suy"));
6069
+ var $R7 = $R(new RegExp("(?=[\\/?])", "suy"));
6070
+ var $R8 = $R(new RegExp("(?=[\\/\\[{?.!@#'\u2019:])", "suy"));
6071
+ var $R9 = $R(new RegExp("[)}]", "suy"));
6072
+ var $R10 = $R(new RegExp("[+-]", "suy"));
6073
+ var $R11 = $R(new RegExp("\\+\\+|--|[\\+-]\\S", "suy"));
6074
+ var $R12 = $R(new RegExp("[&]", "suy"));
6075
+ var $R13 = $R(new RegExp(`(?=[0-9.'"tfyno])`, "suy"));
6076
+ var $R14 = $R(new RegExp("(?=true|false|yes|no|on|off)", "suy"));
6077
+ var $R15 = $R(new RegExp("(?=\\p{ID_Start}|[_$])", "suy"));
6078
+ var $R16 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
6079
+ var $R17 = $R(new RegExp("(?=\\[)", "suy"));
6080
+ var $R18 = $R(new RegExp("[!+-]?", "suy"));
6081
+ var $R19 = $R(new RegExp("(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])", "suy"));
6082
+ var $R20 = $R(new RegExp("!\\^\\^?", "suy"));
6083
+ var $R21 = $R(new RegExp("(?!\\+\\+|--)[!~+-](?!\\s)", "suy"));
6084
+ var $R22 = $R(new RegExp("[:.]", "suy"));
6085
+ var $R23 = $R(new RegExp("(?=for|if|loop|unless|until|while)", "suy"));
6086
+ var $R24 = $R(new RegExp("(?=loop|do|for|until|while)", "suy"));
6087
+ var $R25 = $R(new RegExp("(?=[\\s\\),])", "suy"));
6088
+ var $R26 = $R(new RegExp('[^;"\\s]+', "suy"));
6089
+ var $R27 = $R(new RegExp("(?=[0-9.])", "suy"));
6090
+ var $R28 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)n", "suy"));
6091
+ var $R29 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))", "suy"));
6092
+ var $R30 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?", "suy"));
6093
+ var $R31 = $R(new RegExp("(?:\\.[0-9](?:_[0-9]|[0-9])*)", "suy"));
6094
+ var $R32 = $R(new RegExp("(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)", "suy"));
6095
+ var $R33 = $R(new RegExp("0[bB][01](?:[01]|_[01])*n?", "suy"));
6096
+ var $R34 = $R(new RegExp("0[oO][0-7](?:[0-7]|_[0-7])*n?", "suy"));
6097
+ var $R35 = $R(new RegExp("0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?", "suy"));
6098
+ var $R36 = $R(new RegExp("(?=[0-9])", "suy"));
6099
+ var $R37 = $R(new RegExp("(?:0|[1-9](?:_[0-9]|[0-9])*)", "suy"));
6100
+ var $R38 = $R(new RegExp('(?:\\\\.|[^"])*', "suy"));
6101
+ var $R39 = $R(new RegExp("(?:\\\\.|[^'])*", "suy"));
6102
+ var $R40 = $R(new RegExp('(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+', "suy"));
6103
+ var $R41 = $R(new RegExp("(?:'(?!'')|\\\\.|[^'])*", "suy"));
6104
+ var $R42 = $R(new RegExp('(?:\\\\.|#(?!\\{)|[^"#])+', "suy"));
6105
+ var $R43 = $R(new RegExp("(?:\\\\.|[^\\]])*", "suy"));
6106
+ var $R44 = $R(new RegExp("(?:\\\\.)", "suy"));
6107
+ var $R45 = $R(new RegExp("[\\s]+", "suy"));
6108
+ var $R46 = $R(new RegExp("\\/(?!\\/\\/)", "suy"));
6109
+ var $R47 = $R(new RegExp("[^[\\/\\s#\\\\]+", "suy"));
6110
+ var $R48 = $R(new RegExp("[*\\/\\r\\n]", "suy"));
6111
+ var $R49 = $R(new RegExp("(?:\\\\.|[^[\\/\\r\\n])+", "suy"));
6112
+ var $R50 = $R(new RegExp("(?:\\p{ID_Continue}|[\\u200C\\u200D$])*", "suy"));
6113
+ var $R51 = $R(new RegExp("(?=[`'\"])", "suy"));
6114
+ var $R52 = $R(new RegExp("(?:\\$(?!\\{)|\\\\.|[^$`])+", "suy"));
6115
+ var $R53 = $R(new RegExp("(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+", "suy"));
6116
+ var $R54 = $R(new RegExp("(?:on|off|yes|no)(?!\\p{ID_Continue})", "suy"));
6117
+ var $R55 = $R(new RegExp("(?:isnt)(?!\\p{ID_Continue})", "suy"));
6118
+ var $R56 = $R(new RegExp("(?:by)(?!\\p{ID_Continue})", "suy"));
6119
+ var $R57 = $R(new RegExp("(?:of)(?!\\p{ID_Continue})", "suy"));
6120
+ var $R58 = $R(new RegExp("(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})", "suy"));
6121
+ var $R59 = $R(new RegExp("(?=\\/|#)", "suy"));
6122
+ var $R60 = $R(new RegExp("\\/\\/(?!\\/)[^\\r\\n]*", "suy"));
6123
+ var $R61 = $R(new RegExp(".", "suy"));
6124
+ var $R62 = $R(new RegExp("#(?!##(?!#))([^\\r\\n]*)", "suy"));
6125
+ var $R63 = $R(new RegExp("[^]*?###", "suy"));
6126
+ var $R64 = $R(new RegExp("###(?!#)", "suy"));
6127
+ var $R65 = $R(new RegExp("\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\/", "suy"));
6128
+ var $R66 = $R(new RegExp("(?=[ \\t\\/\\\\])", "suy"));
6129
+ var $R67 = $R(new RegExp("[ \\t]+", "suy"));
6130
+ var $R68 = $R(new RegExp("(?=\\s|\\/|#)", "suy"));
6131
+ var $R69 = $R(new RegExp("(?!\\p{ID_Continue})", "suy"));
6132
+ var $R70 = $R(new RegExp("[=:]", "suy"));
6133
+ var $R71 = $R(new RegExp("['\u2019]s", "suy"));
6134
+ var $R72 = $R(new RegExp("\\s", "suy"));
6135
+ var $R73 = $R(new RegExp("(?=[<])", "suy"));
6136
+ var $R74 = $R(new RegExp("(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*", "suy"));
6137
+ var $R75 = $R(new RegExp("[!+-]", "suy"));
6138
+ var $R76 = $R(new RegExp("[\\s>]|\\/>", "suy"));
6139
+ var $R77 = $R(new RegExp("(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+", "suy"));
6140
+ var $R78 = $R(new RegExp(`"[^"]*"|'[^']*'`, "suy"));
6141
+ var $R79 = $R(new RegExp("[<>]", "suy"));
6142
+ var $R80 = $R(new RegExp("[!~+-](?!\\s|[!~+-]*&)", "suy"));
6143
+ var $R81 = $R(new RegExp("(?:-[^-]|[^-]*)*", "suy"));
6144
+ var $R82 = $R(new RegExp("[^{}<>\\r\\n]+", "suy"));
6145
+ var $R83 = $R(new RegExp("[+-]?", "suy"));
6146
+ var $R84 = $R(new RegExp("(?=if|unless)", "suy"));
6147
+ var $R85 = $R(new RegExp("#![^\\r\\n]*", "suy"));
6148
+ var $R86 = $R(new RegExp("[\\t ]*", "suy"));
6149
+ var $R87 = $R(new RegExp("[ \\t]*", "suy"));
6150
+ var $R88 = $R(new RegExp("[\\s]*", "suy"));
6151
+ var $R89 = $R(new RegExp("\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?", "suy"));
6152
+ var $R90 = $R(new RegExp("\\/\\/\\/[^\\r\\n]*", "suy"));
6153
+ var $R91 = $R(new RegExp("(?=[ \\t\\r\\n\\/#]|$)", "suy"));
6154
+ var $R92 = $R(new RegExp("\\r\\n|\\n|\\r|$", "suy"));
6155
+ var $R93 = $R(new RegExp("[^]*", "suy"));
6024
6156
  var Program$0 = $TS($S(Reset, Init, $E(EOS), TopLevelStatements, __), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
6025
6157
  var statements = $4;
6026
6158
  processProgram({
@@ -6433,17 +6565,12 @@ ${input.slice(result.pos)}
6433
6565
  function SingleLineBinaryOpRHS(ctx, state) {
6434
6566
  return $EVENT(ctx, state, "SingleLineBinaryOpRHS", SingleLineBinaryOpRHS$0);
6435
6567
  }
6436
- var RHS$0 = ParenthesizedAssignment;
6437
- var RHS$1 = UnaryExpression;
6438
- var RHS$2 = ExpressionizedStatementWithTrailingCallExpressions;
6439
- var RHS$$ = [RHS$0, RHS$1, RHS$2];
6568
+ var RHS$0 = UnaryExpression;
6569
+ var RHS$1 = ExpressionizedStatementWithTrailingCallExpressions;
6570
+ var RHS$$ = [RHS$0, RHS$1];
6440
6571
  function RHS(ctx, state) {
6441
6572
  return $EVENT_C(ctx, state, "RHS", RHS$$);
6442
6573
  }
6443
- var ParenthesizedAssignment$0 = $S(InsertOpenParen, ActualAssignment, InsertCloseParen);
6444
- function ParenthesizedAssignment(ctx, state) {
6445
- return $EVENT(ctx, state, "ParenthesizedAssignment", ParenthesizedAssignment$0);
6446
- }
6447
6574
  var UnaryExpression$0 = AmpersandFunctionExpression;
6448
6575
  var UnaryExpression$1 = $TS($S($Q(UnaryOp), UnaryBody, $E(UnaryPostfix)), function($skip, $loc, $0, $1, $2, $3) {
6449
6576
  var pre = $1;
@@ -6485,6 +6612,10 @@ ${input.slice(result.pos)}
6485
6612
  function UnaryWithoutParenthesizedAssignmentBody(ctx, state) {
6486
6613
  return $EVENT_C(ctx, state, "UnaryWithoutParenthesizedAssignmentBody", UnaryWithoutParenthesizedAssignmentBody$$);
6487
6614
  }
6615
+ var ParenthesizedAssignment$0 = $S(InsertOpenParen, $C(ActualAssignment, ArrowFunction), InsertCloseParen);
6616
+ function ParenthesizedAssignment(ctx, state) {
6617
+ return $EVENT(ctx, state, "ParenthesizedAssignment", ParenthesizedAssignment$0);
6618
+ }
6488
6619
  var UnaryPostfix$0 = QuestionMark;
6489
6620
  var UnaryPostfix$1 = $P(TypePostfix);
6490
6621
  var UnaryPostfix$$ = [UnaryPostfix$0, UnaryPostfix$1];
@@ -6797,8 +6928,9 @@ ${input.slice(result.pos)}
6797
6928
  var PrimaryExpression$7 = ClassExpression;
6798
6929
  var PrimaryExpression$8 = RegularExpressionLiteral;
6799
6930
  var PrimaryExpression$9 = ParenthesizedExpression;
6800
- var PrimaryExpression$10 = JSXImplicitFragment;
6801
- var PrimaryExpression$$ = [PrimaryExpression$0, PrimaryExpression$1, PrimaryExpression$2, PrimaryExpression$3, PrimaryExpression$4, PrimaryExpression$5, PrimaryExpression$6, PrimaryExpression$7, PrimaryExpression$8, PrimaryExpression$9, PrimaryExpression$10];
6931
+ var PrimaryExpression$10 = PartialPlaceholder;
6932
+ var PrimaryExpression$11 = JSXImplicitFragment;
6933
+ var PrimaryExpression$$ = [PrimaryExpression$0, PrimaryExpression$1, PrimaryExpression$2, PrimaryExpression$3, PrimaryExpression$4, PrimaryExpression$5, PrimaryExpression$6, PrimaryExpression$7, PrimaryExpression$8, PrimaryExpression$9, PrimaryExpression$10, PrimaryExpression$11];
6802
6934
  function PrimaryExpression(ctx, state) {
6803
6935
  return $EVENT_C(ctx, state, "PrimaryExpression", PrimaryExpression$$);
6804
6936
  }
@@ -6832,6 +6964,16 @@ ${input.slice(result.pos)}
6832
6964
  function ParenthesizedExpression(ctx, state) {
6833
6965
  return $EVENT(ctx, state, "ParenthesizedExpression", ParenthesizedExpression$0);
6834
6966
  }
6967
+ var PartialPlaceholder$0 = $TS($S(Dot, $N($EXPECT($R5, "PartialPlaceholder /(?:\\p{ID_Continue}|[\\u200C\\u200D$.])/"))), function($skip, $loc, $0, $1, $2) {
6968
+ var dot = $1;
6969
+ return {
6970
+ type: "PartialPlaceholder",
6971
+ children: [dot]
6972
+ };
6973
+ });
6974
+ function PartialPlaceholder(ctx, state) {
6975
+ return $EVENT(ctx, state, "PartialPlaceholder", PartialPlaceholder$0);
6976
+ }
6835
6977
  var ClassDeclaration$0 = $TS($S(ClassExpression), function($skip, $loc, $0, $1) {
6836
6978
  if ($1.id)
6837
6979
  return $1;
@@ -7265,7 +7407,7 @@ ${input.slice(result.pos)}
7265
7407
  var CallExpressionRest$1 = $T($S(TypeArguments, $N($C(IdentifierName, NumericLiteral))), function(value) {
7266
7408
  return value[0];
7267
7409
  });
7268
- var CallExpressionRest$2 = $TS($S($EXPECT($R5, "CallExpressionRest /(?=['\"`])/"), $C(TemplateLiteral, StringLiteral)), function($skip, $loc, $0, $1, $2) {
7410
+ var CallExpressionRest$2 = $TS($S($EXPECT($R6, "CallExpressionRest /(?=['\"`])/"), $C(TemplateLiteral, StringLiteral)), function($skip, $loc, $0, $1, $2) {
7269
7411
  var literal = $2;
7270
7412
  if (literal.type === "StringLiteral") {
7271
7413
  literal = "`" + literal.token.slice(1, -1).replace(/(`|\$\{)/g, "\\$1") + "`";
@@ -7288,7 +7430,7 @@ ${input.slice(result.pos)}
7288
7430
  function CallExpressionRest(ctx, state) {
7289
7431
  return $EVENT_C(ctx, state, "CallExpressionRest", CallExpressionRest$$);
7290
7432
  }
7291
- var OptionalShorthand$0 = $TS($S($EXPECT($R6, "OptionalShorthand /(?=[\\/?])/"), $Q(InlineComment), QuestionMark, OptionalDot), function($skip, $loc, $0, $1, $2, $3, $4) {
7433
+ var OptionalShorthand$0 = $TS($S($EXPECT($R7, "OptionalShorthand /(?=[\\/?])/"), $Q(InlineComment), QuestionMark, OptionalDot), function($skip, $loc, $0, $1, $2, $3, $4) {
7292
7434
  var comments = $2;
7293
7435
  var q = $3;
7294
7436
  var d = $4;
@@ -7342,7 +7484,7 @@ ${input.slice(result.pos)}
7342
7484
  function MemberBase(ctx, state) {
7343
7485
  return $EVENT_C(ctx, state, "MemberBase", MemberBase$$);
7344
7486
  }
7345
- var MemberExpressionRest$0 = $TS($S($EXPECT($R7, "MemberExpressionRest /(?=[\\/\\[{?.!@#'\u2019:])/"), $Q(InlineComment), MemberExpressionRestBody), function($skip, $loc, $0, $1, $2, $3) {
7487
+ var MemberExpressionRest$0 = $TS($S($EXPECT($R8, "MemberExpressionRest /(?=[\\/\\[{?.!@#'\u2019:])/"), $Q(InlineComment), MemberExpressionRestBody), function($skip, $loc, $0, $1, $2, $3) {
7346
7488
  var comments = $2;
7347
7489
  var body = $3;
7348
7490
  if (Array.isArray(body))
@@ -7826,7 +7968,7 @@ ${input.slice(result.pos)}
7826
7968
  return $EVENT(ctx, state, "ParameterElement", ParameterElement$0);
7827
7969
  }
7828
7970
  var ParameterElementDelimiter$0 = $S($E(_), Comma);
7829
- var ParameterElementDelimiter$1 = $Y($S(__, $R$0($EXPECT($R8, "ParameterElementDelimiter /[)}]/"))));
7971
+ var ParameterElementDelimiter$1 = $Y($S(__, $R$0($EXPECT($R9, "ParameterElementDelimiter /[)}]/"))));
7830
7972
  var ParameterElementDelimiter$2 = $T($S($Y(EOS), InsertComma), function(value) {
7831
7973
  return value[1];
7832
7974
  });
@@ -7895,7 +8037,23 @@ ${input.slice(result.pos)}
7895
8037
  expression
7896
8038
  };
7897
8039
  });
7898
- var PinPattern$$ = [PinPattern$0, PinPattern$1];
8040
+ var PinPattern$2 = $TV($S($EXPECT($R10, "PinPattern /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1) {
8041
+ var expression = $0;
8042
+ return {
8043
+ type: "PinPattern",
8044
+ children: [expression],
8045
+ expression
8046
+ };
8047
+ });
8048
+ var PinPattern$3 = $TV(Undefined, function($skip, $loc, $0, $1) {
8049
+ var expression = $0;
8050
+ return {
8051
+ type: "PinPattern",
8052
+ children: [expression],
8053
+ expression
8054
+ };
8055
+ });
8056
+ var PinPattern$$ = [PinPattern$0, PinPattern$1, PinPattern$2, PinPattern$3];
7899
8057
  function PinPattern(ctx, state) {
7900
8058
  return $EVENT_C(ctx, state, "PinPattern", PinPattern$$);
7901
8059
  }
@@ -8330,7 +8488,7 @@ ${input.slice(result.pos)}
8330
8488
  parameters
8331
8489
  };
8332
8490
  });
8333
- var FunctionExpression$4 = $TS($S(OpenParen, __, $N($EXPECT($R9, "FunctionExpression /\\+\\+|--|[\\+-]\\S/")), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
8491
+ var FunctionExpression$4 = $TS($S(OpenParen, __, $N($EXPECT($R11, "FunctionExpression /\\+\\+|--|[\\+-]\\S/")), BinaryOp, __, NonPipelineAssignmentExpression, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
8334
8492
  var open = $1;
8335
8493
  var ws1 = $2;
8336
8494
  var op = $4;
@@ -8373,52 +8531,7 @@ ${input.slice(result.pos)}
8373
8531
  var rhs = $3;
8374
8532
  if (!prefix.length && !rhs)
8375
8533
  return $skip;
8376
- let body, ref, typeSuffix;
8377
- if (!rhs) {
8378
- body = ref = makeRef("$");
8379
- } else {
8380
- ({ ref, typeSuffix } = rhs);
8381
- if (!ref) {
8382
- throw new Error("Could not find ref in ampersand shorthand block");
8383
- }
8384
- body = rhs;
8385
- }
8386
- if (prefix.length) {
8387
- body = {
8388
- type: "UnaryExpression",
8389
- children: [processUnaryExpression(prefix, body, void 0)]
8390
- };
8391
- }
8392
- const parameters = {
8393
- type: "Parameters",
8394
- children: typeSuffix ? ["(", ref, typeSuffix, ")"] : [ref],
8395
- names: []
8396
- };
8397
- const expressions = [body];
8398
- const block = {
8399
- bare: true,
8400
- expressions,
8401
- children: [expressions]
8402
- };
8403
- const children = [parameters, " => ", block];
8404
- const async = hasAwait(body);
8405
- if (async) {
8406
- children.unshift("async ");
8407
- }
8408
- return {
8409
- type: "ArrowFunction",
8410
- signature: {
8411
- modifier: {
8412
- async
8413
- }
8414
- },
8415
- children,
8416
- ref,
8417
- body,
8418
- ampersandBlock: true,
8419
- block,
8420
- parameters
8421
- };
8534
+ return makeAmpersandFunctionExpression(prefix, rhs);
8422
8535
  });
8423
8536
  function AmpersandFunctionExpression(ctx, state) {
8424
8537
  return $EVENT(ctx, state, "AmpersandFunctionExpression", AmpersandFunctionExpression$0);
@@ -8544,7 +8657,7 @@ ${input.slice(result.pos)}
8544
8657
  function AmpersandTypeSuffix(ctx, state) {
8545
8658
  return $EVENT(ctx, state, "AmpersandTypeSuffix", AmpersandTypeSuffix$0);
8546
8659
  }
8547
- var AmpersandBlockRHSBody$0 = $TS($S($E(AmpersandTypeSuffix), $E($S($N(_), $P(CallExpressionRest))), $E(UnaryPostfix), $E($S(WAssignmentOp, $Q($S(NotDedented, UpdateExpression, WAssignmentOp)), NonPipelineExtendedExpression)), $E($S($N($EXPECT($R10, "AmpersandBlockRHSBody /[&]/")), $P(BinaryOpRHS)))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8660
+ var AmpersandBlockRHSBody$0 = $TS($S($E(AmpersandTypeSuffix), $E($S($N(_), $P(CallExpressionRest))), $E(UnaryPostfix), $E($S(WAssignmentOp, $Q($S(NotDedented, UpdateExpression, WAssignmentOp)), NonPipelineExtendedExpression)), $E($S($N($EXPECT($R12, "AmpersandBlockRHSBody /[&]/")), $P(BinaryOpRHS)))), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
8548
8661
  var typeSuffix = $1;
8549
8662
  var callExpRest = $2;
8550
8663
  var unaryPostfix = $3;
@@ -8552,42 +8665,7 @@ ${input.slice(result.pos)}
8552
8665
  var binopRHS = $5;
8553
8666
  if (!typeSuffix && !callExpRest && !binopRHS && !unaryPostfix)
8554
8667
  return $skip;
8555
- const ref = makeRef("$");
8556
- let exp = {
8557
- type: "AmpersandRef",
8558
- children: [ref],
8559
- names: [],
8560
- ref
8561
- };
8562
- if (callExpRest) {
8563
- exp.children.push(...callExpRest[1]);
8564
- }
8565
- if (unaryPostfix) {
8566
- exp = processUnaryExpression([], exp, unaryPostfix);
8567
- }
8568
- if (assign) {
8569
- const [op1, more, rhs] = assign;
8570
- const lhs = [
8571
- [void 0, exp, ...op1],
8572
- ...more.map((x) => [x[0], x[1], ...x[2]])
8573
- ];
8574
- exp = {
8575
- type: "AssignmentExpression",
8576
- children: [lhs, rhs],
8577
- names: null,
8578
- lhs,
8579
- assigned: exp,
8580
- exp: rhs
8581
- };
8582
- }
8583
- if (binopRHS) {
8584
- exp = {
8585
- children: processBinaryOpExpression([exp, binopRHS[1]])
8586
- };
8587
- }
8588
- exp.ref = ref;
8589
- exp.typeSuffix = typeSuffix;
8590
- return exp;
8668
+ return makeAmpersandBlockRHSBody(typeSuffix, callExpRest, unaryPostfix, assign, binopRHS);
8591
8669
  });
8592
8670
  function AmpersandBlockRHSBody(ctx, state) {
8593
8671
  return $EVENT(ctx, state, "AmpersandBlockRHSBody", AmpersandBlockRHSBody$0);
@@ -8988,7 +9066,7 @@ ${input.slice(result.pos)}
8988
9066
  function BlockStatementPart(ctx, state) {
8989
9067
  return $EVENT(ctx, state, "BlockStatementPart", BlockStatementPart$0);
8990
9068
  }
8991
- var Literal$0 = $TS($S($EXPECT($R11, `Literal /(?=[0-9.'"tfyno])/`), LiteralContent), function($skip, $loc, $0, $1, $2) {
9069
+ var Literal$0 = $TS($S($EXPECT($R13, `Literal /(?=[0-9.'"tfyno])/`), LiteralContent), function($skip, $loc, $0, $1, $2) {
8992
9070
  var literal = $2;
8993
9071
  return {
8994
9072
  type: "Literal",
@@ -9014,7 +9092,7 @@ ${input.slice(result.pos)}
9014
9092
  function NullLiteral(ctx, state) {
9015
9093
  return $EVENT(ctx, state, "NullLiteral", NullLiteral$0);
9016
9094
  }
9017
- var BooleanLiteral$0 = $T($S($EXPECT($R12, "BooleanLiteral /(?=true|false|yes|no|on|off)/"), _BooleanLiteral), function(value) {
9095
+ var BooleanLiteral$0 = $T($S($EXPECT($R14, "BooleanLiteral /(?=true|false|yes|no|on|off)/"), _BooleanLiteral), function(value) {
9018
9096
  return value[1];
9019
9097
  });
9020
9098
  function BooleanLiteral(ctx, state) {
@@ -9040,14 +9118,14 @@ ${input.slice(result.pos)}
9040
9118
  function CoffeeScriptBooleanLiteral(ctx, state) {
9041
9119
  return $EVENT_C(ctx, state, "CoffeeScriptBooleanLiteral", CoffeeScriptBooleanLiteral$$);
9042
9120
  }
9043
- var Identifier$0 = $T($S($EXPECT($R13, "Identifier /(?=\\p{ID_Start}|[_$])/"), $N(ReservedWord), IdentifierName), function(value) {
9121
+ var Identifier$0 = $T($S($EXPECT($R15, "Identifier /(?=\\p{ID_Start}|[_$])/"), $N(ReservedWord), IdentifierName), function(value) {
9044
9122
  var id = value[2];
9045
9123
  return id;
9046
9124
  });
9047
9125
  function Identifier(ctx, state) {
9048
9126
  return $EVENT(ctx, state, "Identifier", Identifier$0);
9049
9127
  }
9050
- var IdentifierName$0 = $TR($EXPECT($R14, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9128
+ var IdentifierName$0 = $TR($EXPECT($R16, "IdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9051
9129
  return {
9052
9130
  type: "Identifier",
9053
9131
  name: $0,
@@ -9069,7 +9147,7 @@ ${input.slice(result.pos)}
9069
9147
  function UpcomingAssignment(ctx, state) {
9070
9148
  return $EVENT(ctx, state, "UpcomingAssignment", UpcomingAssignment$0);
9071
9149
  }
9072
- var ArrayLiteral$0 = $T($S($EXPECT($R15, "ArrayLiteral /(?=\\[)/"), _ArrayLiteral), function(value) {
9150
+ var ArrayLiteral$0 = $T($S($EXPECT($R17, "ArrayLiteral /(?=\\[)/"), _ArrayLiteral), function(value) {
9073
9151
  return value[1];
9074
9152
  });
9075
9153
  function ArrayLiteral(ctx, state) {
@@ -9170,8 +9248,26 @@ ${input.slice(result.pos)}
9170
9248
  end: e
9171
9249
  };
9172
9250
  });
9251
+ var RangeExpression$1 = $TS($S(ExtendedExpression, __, DotDot, $Y($S(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
9252
+ var s = $1;
9253
+ var ws = $2;
9254
+ return {
9255
+ type: "RangeExpression",
9256
+ children: ["[]", {
9257
+ type: "Error",
9258
+ message: "Infinite range [x..] is only valid in for loops"
9259
+ }],
9260
+ start: s,
9261
+ end: {
9262
+ type: "Identifier",
9263
+ name: "Infinity",
9264
+ children: ["Infinity"]
9265
+ }
9266
+ };
9267
+ });
9268
+ var RangeExpression$$ = [RangeExpression$0, RangeExpression$1];
9173
9269
  function RangeExpression(ctx, state) {
9174
- return $EVENT(ctx, state, "RangeExpression", RangeExpression$0);
9270
+ return $EVENT_C(ctx, state, "RangeExpression", RangeExpression$$);
9175
9271
  }
9176
9272
  var ArrayLiteralContent$0 = RangeExpression;
9177
9273
  var ArrayLiteralContent$1 = $S(NestedElementList, $Y($S(__, CloseBracket)));
@@ -9493,7 +9589,7 @@ ${input.slice(result.pos)}
9493
9589
  children: [ws, ...prop.children]
9494
9590
  };
9495
9591
  });
9496
- var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R16, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9592
+ var PropertyDefinition$1 = $TS($S($E(_), $TEXT($EXPECT($R18, "PropertyDefinition /[!+-]?/")), PropertyName, $Y(ObjectPropertyDelimiter)), function($skip, $loc, $0, $1, $2, $3, $4) {
9497
9593
  var ws = $1;
9498
9594
  var toggle = $2;
9499
9595
  var id = $3;
@@ -9678,7 +9774,7 @@ ${input.slice(result.pos)}
9678
9774
  implicit: true
9679
9775
  };
9680
9776
  });
9681
- var ComputedPropertyName$2 = $TS($S(InsertOpenBracket, $EXPECT($R17, "ComputedPropertyName /[+-]/"), NumericLiteral, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
9777
+ var ComputedPropertyName$2 = $TS($S(InsertOpenBracket, $EXPECT($R10, "ComputedPropertyName /[+-]/"), NumericLiteral, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3, $4) {
9682
9778
  const expression = [$2, $3];
9683
9779
  return {
9684
9780
  type: "ComputedPropertyName",
@@ -9687,7 +9783,18 @@ ${input.slice(result.pos)}
9687
9783
  implicit: true
9688
9784
  };
9689
9785
  });
9690
- var ComputedPropertyName$$ = [ComputedPropertyName$0, ComputedPropertyName$1, ComputedPropertyName$2];
9786
+ var ComputedPropertyName$3 = $TS($S(InsertOpenBracket, PartialPlaceholder, InsertCloseBracket), function($skip, $loc, $0, $1, $2, $3) {
9787
+ var open = $1;
9788
+ var expression = $2;
9789
+ var close = $3;
9790
+ return {
9791
+ type: "ComputedPropertyName",
9792
+ expression,
9793
+ children: [open, expression, close],
9794
+ implicit: true
9795
+ };
9796
+ });
9797
+ var ComputedPropertyName$$ = [ComputedPropertyName$0, ComputedPropertyName$1, ComputedPropertyName$2, ComputedPropertyName$3];
9691
9798
  function ComputedPropertyName(ctx, state) {
9692
9799
  return $EVENT_C(ctx, state, "ComputedPropertyName", ComputedPropertyName$$);
9693
9800
  }
@@ -10057,7 +10164,7 @@ ${input.slice(result.pos)}
10057
10164
  function IdentifierBinaryOp(ctx, state) {
10058
10165
  return $EVENT(ctx, state, "IdentifierBinaryOp", IdentifierBinaryOp$0);
10059
10166
  }
10060
- var BinaryOp$0 = $T($S($EXPECT($R18, "BinaryOp /(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])/"), _BinaryOp), function(value) {
10167
+ var BinaryOp$0 = $T($S($EXPECT($R19, "BinaryOp /(?=\\p{ID_Start}|[_$^\xAB\xBB\u22D9\u2264\u2265\u2208\u220B\u2209\u220C\u2263\u2261\u2262\u2260=\u2016\u2047&|*\\/!?%<>\u29FA+-])/"), _BinaryOp), function(value) {
10061
10168
  var op = value[1];
10062
10169
  return op;
10063
10170
  });
@@ -10192,7 +10299,7 @@ ${input.slice(result.pos)}
10192
10299
  prec: "^^"
10193
10300
  };
10194
10301
  });
10195
- var BinaryOpSymbol$35 = $TV($C($EXPECT($R19, "BinaryOpSymbol /!\\^\\^?/"), $S($EXPECT($L101, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
10302
+ var BinaryOpSymbol$35 = $TV($C($EXPECT($R20, "BinaryOpSymbol /!\\^\\^?/"), $S($EXPECT($L101, 'BinaryOpSymbol "xnor"'), NonIdContinue)), function($skip, $loc, $0, $1) {
10196
10303
  return {
10197
10304
  call: module.getRef("xnor"),
10198
10305
  special: true,
@@ -10356,24 +10463,24 @@ ${input.slice(result.pos)}
10356
10463
  function Xor(ctx, state) {
10357
10464
  return $EVENT_C(ctx, state, "Xor", Xor$$);
10358
10465
  }
10359
- var Xnor$0 = $R$0($EXPECT($R19, "Xnor /!\\^\\^?/"));
10466
+ var Xnor$0 = $R$0($EXPECT($R20, "Xnor /!\\^\\^?/"));
10360
10467
  var Xnor$1 = $EXPECT($L101, 'Xnor "xnor"');
10361
10468
  var Xnor$$ = [Xnor$0, Xnor$1];
10362
10469
  function Xnor(ctx, state) {
10363
10470
  return $EVENT_C(ctx, state, "Xnor", Xnor$$);
10364
10471
  }
10365
- var UnaryOp$0 = $TR($EXPECT($R20, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10472
+ var UnaryOp$0 = $TR($EXPECT($R21, "UnaryOp /(?!\\+\\+|--)[!~+-](?!\\s)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
10366
10473
  return { $loc, token: $0 };
10367
10474
  });
10368
10475
  var UnaryOp$1 = AwaitOp;
10369
- var UnaryOp$2 = $TS($S($C(Delete, Void, Typeof), $N($EXPECT($R21, "UnaryOp /[:.]/")), $E(_)), function($skip, $loc, $0, $1, $2, $3) {
10476
+ var UnaryOp$2 = $TS($S($C(Delete, Void, Typeof), $N($EXPECT($R22, "UnaryOp /[:.]/")), $E(_)), function($skip, $loc, $0, $1, $2, $3) {
10370
10477
  var op = $1;
10371
10478
  var ws = $3;
10372
10479
  if (!ws)
10373
10480
  return [op, [" "]];
10374
10481
  return [op, ws];
10375
10482
  });
10376
- var UnaryOp$3 = $T($S(Not, $N($EXPECT($R21, "UnaryOp /[:.]/")), $E($EXPECT($L16, 'UnaryOp " "')), $E(_)), function(value) {
10483
+ var UnaryOp$3 = $T($S(Not, $N($EXPECT($R22, "UnaryOp /[:.]/")), $E($EXPECT($L16, 'UnaryOp " "')), $E(_)), function(value) {
10377
10484
  return [value[0], value[3]];
10378
10485
  });
10379
10486
  var UnaryOp$$ = [UnaryOp$0, UnaryOp$1, UnaryOp$2, UnaryOp$3];
@@ -10468,7 +10575,7 @@ ${input.slice(result.pos)}
10468
10575
  function NonPipelinePostfixedExpression(ctx, state) {
10469
10576
  return $EVENT(ctx, state, "NonPipelinePostfixedExpression", NonPipelinePostfixedExpression$0);
10470
10577
  }
10471
- var PostfixStatement$0 = $T($S($EXPECT($R22, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
10578
+ var PostfixStatement$0 = $T($S($EXPECT($R23, "PostfixStatement /(?=for|if|loop|unless|until|while)/"), _PostfixStatement), function(value) {
10472
10579
  return value[1];
10473
10580
  });
10474
10581
  function PostfixStatement(ctx, state) {
@@ -10601,7 +10708,7 @@ ${input.slice(result.pos)}
10601
10708
  function UnlessClause(ctx, state) {
10602
10709
  return $EVENT(ctx, state, "UnlessClause", UnlessClause$0);
10603
10710
  }
10604
- var IterationStatement$0 = $T($S($EXPECT($R23, "IterationStatement /(?=loop|do|for|until|while)/"), _IterationStatement), function(value) {
10711
+ var IterationStatement$0 = $T($S($EXPECT($R24, "IterationStatement /(?=loop|do|for|until|while)/"), _IterationStatement), function(value) {
10605
10712
  return value[1];
10606
10713
  });
10607
10714
  function IterationStatement(ctx, state) {
@@ -10954,7 +11061,7 @@ ${input.slice(result.pos)}
10954
11061
  names: binding.names
10955
11062
  };
10956
11063
  });
10957
- var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R24, "ForDeclaration /(?=[\\s\\),])/")), function($skip, $loc, $0, $1, $2, $3) {
11064
+ var ForDeclaration$1 = $TS($S(InsertConst, ForBinding, $EXPECT($R25, "ForDeclaration /(?=[\\s\\),])/")), function($skip, $loc, $0, $1, $2, $3) {
10958
11065
  var c = $1;
10959
11066
  var binding = $2;
10960
11067
  return {
@@ -11783,7 +11890,7 @@ ${input.slice(result.pos)}
11783
11890
  function UnprocessedModuleSpecifier(ctx, state) {
11784
11891
  return $EVENT_C(ctx, state, "UnprocessedModuleSpecifier", UnprocessedModuleSpecifier$$);
11785
11892
  }
11786
- var UnquotedSpecifier$0 = $TV($EXPECT($R25, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
11893
+ var UnquotedSpecifier$0 = $TV($EXPECT($R26, 'UnquotedSpecifier /[^;"\\s]+/'), function($skip, $loc, $0, $1) {
11787
11894
  var spec = $0;
11788
11895
  return { $loc, token: `"${spec}"` };
11789
11896
  });
@@ -12036,7 +12143,7 @@ ${input.slice(result.pos)}
12036
12143
  function VariableDeclarationList(ctx, state) {
12037
12144
  return $EVENT(ctx, state, "VariableDeclarationList", VariableDeclarationList$0);
12038
12145
  }
12039
- var NumericLiteral$0 = $TS($S($EXPECT($R26, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
12146
+ var NumericLiteral$0 = $TS($S($EXPECT($R27, "NumericLiteral /(?=[0-9.])/"), NumericLiteralKind), function($skip, $loc, $0, $1, $2) {
12040
12147
  var token = $2;
12041
12148
  return { type: "NumericLiteral", $loc, token };
12042
12149
  });
@@ -12052,36 +12159,36 @@ ${input.slice(result.pos)}
12052
12159
  function NumericLiteralKind(ctx, state) {
12053
12160
  return $EVENT_C(ctx, state, "NumericLiteralKind", NumericLiteralKind$$);
12054
12161
  }
12055
- var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R27, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
12162
+ var DecimalBigIntegerLiteral$0 = $R$0($EXPECT($R28, "DecimalBigIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)n/"));
12056
12163
  function DecimalBigIntegerLiteral(ctx, state) {
12057
12164
  return $EVENT(ctx, state, "DecimalBigIntegerLiteral", DecimalBigIntegerLiteral$0);
12058
12165
  }
12059
- var DecimalLiteral$0 = $TV($TEXT($EXPECT($R28, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
12166
+ var DecimalLiteral$0 = $TV($TEXT($EXPECT($R29, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?=\\.(?:\\p{ID_Start}|[_$]))/")), function($skip, $loc, $0, $1) {
12060
12167
  return $1 + ".";
12061
12168
  });
12062
- var DecimalLiteral$1 = $TEXT($S($EXPECT($R29, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), $E(ExponentPart)));
12063
- var DecimalLiteral$2 = $TEXT($S($EXPECT($R30, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), $E(ExponentPart)));
12169
+ var DecimalLiteral$1 = $TEXT($S($EXPECT($R30, "DecimalLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)(?:\\.(?:[0-9](?:_[0-9]|[0-9])*))?/"), $E(ExponentPart)));
12170
+ var DecimalLiteral$2 = $TEXT($S($EXPECT($R31, "DecimalLiteral /(?:\\.[0-9](?:_[0-9]|[0-9])*)/"), $E(ExponentPart)));
12064
12171
  var DecimalLiteral$$ = [DecimalLiteral$0, DecimalLiteral$1, DecimalLiteral$2];
12065
12172
  function DecimalLiteral(ctx, state) {
12066
12173
  return $EVENT_C(ctx, state, "DecimalLiteral", DecimalLiteral$$);
12067
12174
  }
12068
- var ExponentPart$0 = $R$0($EXPECT($R31, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
12175
+ var ExponentPart$0 = $R$0($EXPECT($R32, "ExponentPart /(?:[eE][+-]?[0-9]+(?:_[0-9]|[0-9])*)/"));
12069
12176
  function ExponentPart(ctx, state) {
12070
12177
  return $EVENT(ctx, state, "ExponentPart", ExponentPart$0);
12071
12178
  }
12072
- var BinaryIntegerLiteral$0 = $R$0($EXPECT($R32, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
12179
+ var BinaryIntegerLiteral$0 = $R$0($EXPECT($R33, "BinaryIntegerLiteral /0[bB][01](?:[01]|_[01])*n?/"));
12073
12180
  function BinaryIntegerLiteral(ctx, state) {
12074
12181
  return $EVENT(ctx, state, "BinaryIntegerLiteral", BinaryIntegerLiteral$0);
12075
12182
  }
12076
- var OctalIntegerLiteral$0 = $R$0($EXPECT($R33, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
12183
+ var OctalIntegerLiteral$0 = $R$0($EXPECT($R34, "OctalIntegerLiteral /0[oO][0-7](?:[0-7]|_[0-7])*n?/"));
12077
12184
  function OctalIntegerLiteral(ctx, state) {
12078
12185
  return $EVENT(ctx, state, "OctalIntegerLiteral", OctalIntegerLiteral$0);
12079
12186
  }
12080
- var HexIntegerLiteral$0 = $R$0($EXPECT($R34, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
12187
+ var HexIntegerLiteral$0 = $R$0($EXPECT($R35, "HexIntegerLiteral /0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_[0-9a-fA-F])*n?/"));
12081
12188
  function HexIntegerLiteral(ctx, state) {
12082
12189
  return $EVENT(ctx, state, "HexIntegerLiteral", HexIntegerLiteral$0);
12083
12190
  }
12084
- var IntegerLiteral$0 = $TS($S($EXPECT($R35, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
12191
+ var IntegerLiteral$0 = $TS($S($EXPECT($R36, "IntegerLiteral /(?=[0-9])/"), IntegerLiteralKind), function($skip, $loc, $0, $1, $2) {
12085
12192
  var token = $2;
12086
12193
  return { $loc, token };
12087
12194
  });
@@ -12097,7 +12204,7 @@ ${input.slice(result.pos)}
12097
12204
  function IntegerLiteralKind(ctx, state) {
12098
12205
  return $EVENT_C(ctx, state, "IntegerLiteralKind", IntegerLiteralKind$$);
12099
12206
  }
12100
- var DecimalIntegerLiteral$0 = $R$0($EXPECT($R36, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
12207
+ var DecimalIntegerLiteral$0 = $R$0($EXPECT($R37, "DecimalIntegerLiteral /(?:0|[1-9](?:_[0-9]|[0-9])*)/"));
12101
12208
  function DecimalIntegerLiteral(ctx, state) {
12102
12209
  return $EVENT(ctx, state, "DecimalIntegerLiteral", DecimalIntegerLiteral$0);
12103
12210
  }
@@ -12121,25 +12228,25 @@ ${input.slice(result.pos)}
12121
12228
  function StringLiteral(ctx, state) {
12122
12229
  return $EVENT_C(ctx, state, "StringLiteral", StringLiteral$$);
12123
12230
  }
12124
- var DoubleStringCharacters$0 = $TR($EXPECT($R37, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12231
+ var DoubleStringCharacters$0 = $TR($EXPECT($R38, 'DoubleStringCharacters /(?:\\\\.|[^"])*/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12125
12232
  return { $loc, token: $0 };
12126
12233
  });
12127
12234
  function DoubleStringCharacters(ctx, state) {
12128
12235
  return $EVENT(ctx, state, "DoubleStringCharacters", DoubleStringCharacters$0);
12129
12236
  }
12130
- var SingleStringCharacters$0 = $TR($EXPECT($R38, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12237
+ var SingleStringCharacters$0 = $TR($EXPECT($R39, "SingleStringCharacters /(?:\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12131
12238
  return { $loc, token: $0 };
12132
12239
  });
12133
12240
  function SingleStringCharacters(ctx, state) {
12134
12241
  return $EVENT(ctx, state, "SingleStringCharacters", SingleStringCharacters$0);
12135
12242
  }
12136
- var TripleDoubleStringCharacters$0 = $TR($EXPECT($R39, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12243
+ var TripleDoubleStringCharacters$0 = $TR($EXPECT($R40, 'TripleDoubleStringCharacters /(?:"(?!"")|#(?!\\{)|\\\\.|[^#"])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12137
12244
  return { $loc, token: $0 };
12138
12245
  });
12139
12246
  function TripleDoubleStringCharacters(ctx, state) {
12140
12247
  return $EVENT(ctx, state, "TripleDoubleStringCharacters", TripleDoubleStringCharacters$0);
12141
12248
  }
12142
- var TripleSingleStringCharacters$0 = $TR($EXPECT($R40, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12249
+ var TripleSingleStringCharacters$0 = $TR($EXPECT($R41, "TripleSingleStringCharacters /(?:'(?!'')|\\\\.|[^'])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12143
12250
  return { $loc, token: $0 };
12144
12251
  });
12145
12252
  function TripleSingleStringCharacters(ctx, state) {
@@ -12162,7 +12269,7 @@ ${input.slice(result.pos)}
12162
12269
  function CoffeeInterpolatedDoubleQuotedString(ctx, state) {
12163
12270
  return $EVENT(ctx, state, "CoffeeInterpolatedDoubleQuotedString", CoffeeInterpolatedDoubleQuotedString$0);
12164
12271
  }
12165
- var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R41, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12272
+ var CoffeeDoubleQuotedStringCharacters$0 = $TR($EXPECT($R42, 'CoffeeDoubleQuotedStringCharacters /(?:\\\\.|#(?!\\{)|[^"#])+/'), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12166
12273
  return { $loc, token: $0 };
12167
12274
  });
12168
12275
  function CoffeeDoubleQuotedStringCharacters(ctx, state) {
@@ -12182,7 +12289,7 @@ ${input.slice(result.pos)}
12182
12289
  function RegularExpressionClass(ctx, state) {
12183
12290
  return $EVENT(ctx, state, "RegularExpressionClass", RegularExpressionClass$0);
12184
12291
  }
12185
- var RegularExpressionClassCharacters$0 = $TR($EXPECT($R42, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12292
+ var RegularExpressionClassCharacters$0 = $TR($EXPECT($R43, "RegularExpressionClassCharacters /(?:\\\\.|[^\\]])*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12186
12293
  return { $loc, token: $0 };
12187
12294
  });
12188
12295
  function RegularExpressionClassCharacters(ctx, state) {
@@ -12239,7 +12346,7 @@ ${input.slice(result.pos)}
12239
12346
  var HeregexPart$2 = $T($S(TemplateSubstitution), function(value) {
12240
12347
  return { "type": "Substitution", "children": value[0] };
12241
12348
  });
12242
- var HeregexPart$3 = $TR($EXPECT($R43, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12349
+ var HeregexPart$3 = $TR($EXPECT($R44, "HeregexPart /(?:\\\\.)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12243
12350
  let token = $0;
12244
12351
  switch ($0[1]) {
12245
12352
  case "\n":
@@ -12257,13 +12364,13 @@ ${input.slice(result.pos)}
12257
12364
  var HeregexPart$4 = $TS($S(HeregexComment), function($skip, $loc, $0, $1) {
12258
12365
  return { $loc, token: "" };
12259
12366
  });
12260
- var HeregexPart$5 = $TR($EXPECT($R44, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12367
+ var HeregexPart$5 = $TR($EXPECT($R45, "HeregexPart /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12261
12368
  return { $loc, token: "" };
12262
12369
  });
12263
- var HeregexPart$6 = $TR($EXPECT($R45, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12370
+ var HeregexPart$6 = $TR($EXPECT($R46, "HeregexPart /\\/(?!\\/\\/)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12264
12371
  return { $loc, token: "\\/" };
12265
12372
  });
12266
- var HeregexPart$7 = $TR($EXPECT($R46, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12373
+ var HeregexPart$7 = $TR($EXPECT($R47, "HeregexPart /[^[\\/\\s#\\\\]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12267
12374
  return { $loc, token: $0 };
12268
12375
  });
12269
12376
  var HeregexPart$$ = [HeregexPart$0, HeregexPart$1, HeregexPart$2, HeregexPart$3, HeregexPart$4, HeregexPart$5, HeregexPart$6, HeregexPart$7];
@@ -12276,7 +12383,7 @@ ${input.slice(result.pos)}
12276
12383
  function HeregexComment(ctx, state) {
12277
12384
  return $EVENT_C(ctx, state, "HeregexComment", HeregexComment$$);
12278
12385
  }
12279
- var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R47, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpPart));
12386
+ var RegularExpressionBody$0 = $S($N($R$0($EXPECT($R48, "RegularExpressionBody /[*\\/\\r\\n]/"))), $Q(RegExpPart));
12280
12387
  function RegularExpressionBody(ctx, state) {
12281
12388
  return $EVENT(ctx, state, "RegularExpressionBody", RegularExpressionBody$0);
12282
12389
  }
@@ -12286,15 +12393,15 @@ ${input.slice(result.pos)}
12286
12393
  function RegExpPart(ctx, state) {
12287
12394
  return $EVENT_C(ctx, state, "RegExpPart", RegExpPart$$);
12288
12395
  }
12289
- var RegExpCharacter$0 = $R$0($EXPECT($R48, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
12396
+ var RegExpCharacter$0 = $R$0($EXPECT($R49, "RegExpCharacter /(?:\\\\.|[^[\\/\\r\\n])+/"));
12290
12397
  function RegExpCharacter(ctx, state) {
12291
12398
  return $EVENT(ctx, state, "RegExpCharacter", RegExpCharacter$0);
12292
12399
  }
12293
- var RegularExpressionFlags$0 = $R$0($EXPECT($R49, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
12400
+ var RegularExpressionFlags$0 = $R$0($EXPECT($R50, "RegularExpressionFlags /(?:\\p{ID_Continue}|[\\u200C\\u200D$])*/"));
12294
12401
  function RegularExpressionFlags(ctx, state) {
12295
12402
  return $EVENT(ctx, state, "RegularExpressionFlags", RegularExpressionFlags$0);
12296
12403
  }
12297
- var TemplateLiteral$0 = $T($S($EXPECT($R50, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
12404
+ var TemplateLiteral$0 = $T($S($EXPECT($R51, "TemplateLiteral /(?=[`'\"])/"), _TemplateLiteral), function(value) {
12298
12405
  return value[1];
12299
12406
  });
12300
12407
  function TemplateLiteral(ctx, state) {
@@ -12334,28 +12441,28 @@ ${input.slice(result.pos)}
12334
12441
  function TemplateSubstitution(ctx, state) {
12335
12442
  return $EVENT(ctx, state, "TemplateSubstitution", TemplateSubstitution$0);
12336
12443
  }
12337
- var TemplateCharacters$0 = $TR($EXPECT($R51, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12444
+ var TemplateCharacters$0 = $TR($EXPECT($R52, "TemplateCharacters /(?:\\$(?!\\{)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12338
12445
  return { $loc, token: $0 };
12339
12446
  });
12340
12447
  function TemplateCharacters(ctx, state) {
12341
12448
  return $EVENT(ctx, state, "TemplateCharacters", TemplateCharacters$0);
12342
12449
  }
12343
- var TemplateBlockCharacters$0 = $TR($EXPECT($R52, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12450
+ var TemplateBlockCharacters$0 = $TR($EXPECT($R53, "TemplateBlockCharacters /(?:\\$(?!\\{)|`(?!``)|\\\\.|[^$`])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12344
12451
  return { $loc, token: $0 };
12345
12452
  });
12346
12453
  function TemplateBlockCharacters(ctx, state) {
12347
12454
  return $EVENT(ctx, state, "TemplateBlockCharacters", TemplateBlockCharacters$0);
12348
12455
  }
12349
- var ReservedWord$0 = $S($R$0($EXPECT($R53, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
12350
- var ReservedWord$1 = $S($R$0($EXPECT($R54, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
12351
- var ReservedWord$2 = $S($R$0($EXPECT($R55, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
12352
- var ReservedWord$3 = $S($R$0($EXPECT($R56, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
12353
- var ReservedWord$4 = $R$0($EXPECT($R57, "ReservedWord /(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
12456
+ var ReservedWord$0 = $S($R$0($EXPECT($R54, "ReservedWord /(?:on|off|yes|no)(?!\\p{ID_Continue})/")), CoffeeBooleansEnabled);
12457
+ var ReservedWord$1 = $S($R$0($EXPECT($R55, "ReservedWord /(?:isnt)(?!\\p{ID_Continue})/")), CoffeeIsntEnabled);
12458
+ var ReservedWord$2 = $S($R$0($EXPECT($R56, "ReservedWord /(?:by)(?!\\p{ID_Continue})/")), CoffeeForLoopsEnabled);
12459
+ var ReservedWord$3 = $S($R$0($EXPECT($R57, "ReservedWord /(?:of)(?!\\p{ID_Continue})/")), CoffeeOfEnabled);
12460
+ var ReservedWord$4 = $R$0($EXPECT($R58, "ReservedWord /(?:and|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|if|import|in|instanceof|interface|is|let|loop|new|not|null|or|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|unless|until|var|void|while|with|yield)(?!\\p{ID_Continue})/"));
12354
12461
  var ReservedWord$$ = [ReservedWord$0, ReservedWord$1, ReservedWord$2, ReservedWord$3, ReservedWord$4];
12355
12462
  function ReservedWord(ctx, state) {
12356
12463
  return $EVENT_C(ctx, state, "ReservedWord", ReservedWord$$);
12357
12464
  }
12358
- var Comment$0 = $T($S($EXPECT($R58, "Comment /(?=\\/|#)/"), _Comment), function(value) {
12465
+ var Comment$0 = $T($S($EXPECT($R59, "Comment /(?=\\/|#)/"), _Comment), function(value) {
12359
12466
  return value[1];
12360
12467
  });
12361
12468
  function Comment(ctx, state) {
@@ -12373,7 +12480,7 @@ ${input.slice(result.pos)}
12373
12480
  function SingleLineComment(ctx, state) {
12374
12481
  return $EVENT_C(ctx, state, "SingleLineComment", SingleLineComment$$);
12375
12482
  }
12376
- var JSSingleLineComment$0 = $TR($EXPECT($R59, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12483
+ var JSSingleLineComment$0 = $TR($EXPECT($R60, "JSSingleLineComment /\\/\\/(?!\\/)[^\\r\\n]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12377
12484
  return { type: "Comment", $loc, token: $0 };
12378
12485
  });
12379
12486
  function JSSingleLineComment(ctx, state) {
@@ -12385,30 +12492,30 @@ ${input.slice(result.pos)}
12385
12492
  function MultiLineComment(ctx, state) {
12386
12493
  return $EVENT_C(ctx, state, "MultiLineComment", MultiLineComment$$);
12387
12494
  }
12388
- var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L123, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L124, 'JSMultiLineComment "*/"')), $EXPECT($R60, "JSMultiLineComment /./"))), $EXPECT($L124, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
12495
+ var JSMultiLineComment$0 = $TV($TEXT($S($EXPECT($L123, 'JSMultiLineComment "/*"'), $Q($S($N($EXPECT($L124, 'JSMultiLineComment "*/"')), $EXPECT($R61, "JSMultiLineComment /./"))), $EXPECT($L124, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
12389
12496
  return { type: "Comment", $loc, token: $1 };
12390
12497
  });
12391
12498
  function JSMultiLineComment(ctx, state) {
12392
12499
  return $EVENT(ctx, state, "JSMultiLineComment", JSMultiLineComment$0);
12393
12500
  }
12394
- var CoffeeSingleLineComment$0 = $TR($EXPECT($R61, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12501
+ var CoffeeSingleLineComment$0 = $TR($EXPECT($R62, "CoffeeSingleLineComment /#(?!##(?!#))([^\\r\\n]*)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12395
12502
  return { type: "Comment", $loc, token: `//${$1}` };
12396
12503
  });
12397
12504
  function CoffeeSingleLineComment(ctx, state) {
12398
12505
  return $EVENT(ctx, state, "CoffeeSingleLineComment", CoffeeSingleLineComment$0);
12399
12506
  }
12400
- var CoffeeMultiLineComment$0 = $TS($S(CoffeeHereCommentStart, $TEXT($EXPECT($R62, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
12507
+ var CoffeeMultiLineComment$0 = $TS($S(CoffeeHereCommentStart, $TEXT($EXPECT($R63, "CoffeeMultiLineComment /[^]*?###/"))), function($skip, $loc, $0, $1, $2) {
12401
12508
  $2 = $2.slice(0, $2.length - 3).replace(/\*\//g, "* /");
12402
12509
  return { type: "Comment", $loc, token: `/*${$2}*/` };
12403
12510
  });
12404
12511
  function CoffeeMultiLineComment(ctx, state) {
12405
12512
  return $EVENT(ctx, state, "CoffeeMultiLineComment", CoffeeMultiLineComment$0);
12406
12513
  }
12407
- var CoffeeHereCommentStart$0 = $R$0($EXPECT($R63, "CoffeeHereCommentStart /###(?!#)/"));
12514
+ var CoffeeHereCommentStart$0 = $R$0($EXPECT($R64, "CoffeeHereCommentStart /###(?!#)/"));
12408
12515
  function CoffeeHereCommentStart(ctx, state) {
12409
12516
  return $EVENT(ctx, state, "CoffeeHereCommentStart", CoffeeHereCommentStart$0);
12410
12517
  }
12411
- var InlineComment$0 = $TR($EXPECT($R64, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12518
+ var InlineComment$0 = $TR($EXPECT($R65, "InlineComment /\\/\\*(?:(?!\\*\\/)[^\\r\\n])*\\*\\//"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12412
12519
  return { $loc, token: $0 };
12413
12520
  });
12414
12521
  function InlineComment(ctx, state) {
@@ -12422,13 +12529,13 @@ ${input.slice(result.pos)}
12422
12529
  function TrailingComment(ctx, state) {
12423
12530
  return $EVENT(ctx, state, "TrailingComment", TrailingComment$0);
12424
12531
  }
12425
- var _$0 = $T($S($EXPECT($R65, "_ /(?=[ \\t\\/\\\\])/"), $P($C(NonNewlineWhitespace, InlineComment))), function(value) {
12532
+ var _$0 = $T($S($EXPECT($R66, "_ /(?=[ \\t\\/\\\\])/"), $P($C(NonNewlineWhitespace, InlineComment))), function(value) {
12426
12533
  return value[1];
12427
12534
  });
12428
12535
  function _(ctx, state) {
12429
12536
  return $EVENT(ctx, state, "_", _$0);
12430
12537
  }
12431
- var NonNewlineWhitespace$0 = $TR($EXPECT($R66, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12538
+ var NonNewlineWhitespace$0 = $TR($EXPECT($R67, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12432
12539
  return { $loc, token: $0 };
12433
12540
  });
12434
12541
  var NonNewlineWhitespace$1 = $T($S($EXPECT($L125, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
@@ -12445,7 +12552,7 @@ ${input.slice(result.pos)}
12445
12552
  function Trimmed_(ctx, state) {
12446
12553
  return $EVENT(ctx, state, "Trimmed_", Trimmed_$0);
12447
12554
  }
12448
- var __$0 = $T($S($EXPECT($R67, "__ /(?=\\s|\\/|#)/"), $Q($C(Whitespace, Comment))), function(value) {
12555
+ var __$0 = $T($S($EXPECT($R68, "__ /(?=\\s|\\/|#)/"), $Q($C(Whitespace, Comment))), function(value) {
12449
12556
  return value[1];
12450
12557
  });
12451
12558
  var __$1 = $EXPECT($L0, '__ ""');
@@ -12453,7 +12560,7 @@ ${input.slice(result.pos)}
12453
12560
  function __(ctx, state) {
12454
12561
  return $EVENT_C(ctx, state, "__", __$$);
12455
12562
  }
12456
- var Whitespace$0 = $TR($EXPECT($R44, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12563
+ var Whitespace$0 = $TR($EXPECT($R45, "Whitespace /[\\s]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12457
12564
  return { $loc, token: $0 };
12458
12565
  });
12459
12566
  function Whitespace(ctx, state) {
@@ -12491,7 +12598,7 @@ ${input.slice(result.pos)}
12491
12598
  function SemicolonDelimiter(ctx, state) {
12492
12599
  return $EVENT(ctx, state, "SemicolonDelimiter", SemicolonDelimiter$0);
12493
12600
  }
12494
- var NonIdContinue$0 = $R$0($EXPECT($R68, "NonIdContinue /(?!\\p{ID_Continue})/"));
12601
+ var NonIdContinue$0 = $R$0($EXPECT($R69, "NonIdContinue /(?!\\p{ID_Continue})/"));
12495
12602
  function NonIdContinue(ctx, state) {
12496
12603
  return $EVENT(ctx, state, "NonIdContinue", NonIdContinue$0);
12497
12604
  }
@@ -12609,7 +12716,7 @@ ${input.slice(result.pos)}
12609
12716
  function CoffeeSubstitutionStart(ctx, state) {
12610
12717
  return $EVENT(ctx, state, "CoffeeSubstitutionStart", CoffeeSubstitutionStart$0);
12611
12718
  }
12612
- var Colon$0 = $TS($S($EXPECT($L15, 'Colon ":"'), $N($EXPECT($R69, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
12719
+ var Colon$0 = $TS($S($EXPECT($L15, 'Colon ":"'), $N($EXPECT($R70, "Colon /[=:]/"))), function($skip, $loc, $0, $1, $2) {
12613
12720
  return { $loc, token: $1 };
12614
12721
  });
12615
12722
  function Colon(ctx, state) {
@@ -12654,7 +12761,7 @@ ${input.slice(result.pos)}
12654
12761
  var Dot$0 = $TV($EXPECT($L7, 'Dot "."'), function($skip, $loc, $0, $1) {
12655
12762
  return { $loc, token: $1 };
12656
12763
  });
12657
- var Dot$1 = $TS($S($EXPECT($R70, "Dot /['\u2019]s/"), _), function($skip, $loc, $0, $1, $2) {
12764
+ var Dot$1 = $TS($S($EXPECT($R71, "Dot /['\u2019]s/"), _), function($skip, $loc, $0, $1, $2) {
12658
12765
  var ws = $2;
12659
12766
  return [
12660
12767
  { $loc, token: "." },
@@ -12775,7 +12882,7 @@ ${input.slice(result.pos)}
12775
12882
  function If(ctx, state) {
12776
12883
  return $EVENT(ctx, state, "If", If$0);
12777
12884
  }
12778
- var Import$0 = $TS($S($EXPECT($L20, 'Import "import"'), $Y($EXPECT($R71, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
12885
+ var Import$0 = $TS($S($EXPECT($L20, 'Import "import"'), $Y($EXPECT($R72, "Import /\\s/"))), function($skip, $loc, $0, $1, $2) {
12779
12886
  return { $loc, token: $1 };
12780
12887
  });
12781
12888
  function Import(ctx, state) {
@@ -13044,49 +13151,55 @@ ${input.slice(result.pos)}
13044
13151
  function Typeof(ctx, state) {
13045
13152
  return $EVENT(ctx, state, "Typeof", Typeof$0);
13046
13153
  }
13047
- var Unless$0 = $TS($S($EXPECT($L202, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13154
+ var Undefined$0 = $TS($S($EXPECT($L202, 'Undefined "undefined"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13155
+ return { $loc, token: $1 };
13156
+ });
13157
+ function Undefined(ctx, state) {
13158
+ return $EVENT(ctx, state, "Undefined", Undefined$0);
13159
+ }
13160
+ var Unless$0 = $TS($S($EXPECT($L203, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13048
13161
  return { $loc, token: $1, negated: true };
13049
13162
  });
13050
13163
  function Unless(ctx, state) {
13051
13164
  return $EVENT(ctx, state, "Unless", Unless$0);
13052
13165
  }
13053
- var Until$0 = $TS($S($EXPECT($L203, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13166
+ var Until$0 = $TS($S($EXPECT($L204, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13054
13167
  return { $loc, token: $1 };
13055
13168
  });
13056
13169
  function Until(ctx, state) {
13057
13170
  return $EVENT(ctx, state, "Until", Until$0);
13058
13171
  }
13059
- var Using$0 = $TS($S($EXPECT($L204, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13172
+ var Using$0 = $TS($S($EXPECT($L205, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13060
13173
  return { $loc, token: $1 };
13061
13174
  });
13062
13175
  function Using(ctx, state) {
13063
13176
  return $EVENT(ctx, state, "Using", Using$0);
13064
13177
  }
13065
- var Var$0 = $TS($S($EXPECT($L205, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13178
+ var Var$0 = $TS($S($EXPECT($L206, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13066
13179
  return { $loc, token: $1 };
13067
13180
  });
13068
13181
  function Var(ctx, state) {
13069
13182
  return $EVENT(ctx, state, "Var", Var$0);
13070
13183
  }
13071
- var Void$0 = $TS($S($EXPECT($L206, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13184
+ var Void$0 = $TS($S($EXPECT($L207, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13072
13185
  return { $loc, token: $1 };
13073
13186
  });
13074
13187
  function Void(ctx, state) {
13075
13188
  return $EVENT(ctx, state, "Void", Void$0);
13076
13189
  }
13077
- var When$0 = $TS($S($EXPECT($L207, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13190
+ var When$0 = $TS($S($EXPECT($L208, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13078
13191
  return { $loc, token: "case" };
13079
13192
  });
13080
13193
  function When(ctx, state) {
13081
13194
  return $EVENT(ctx, state, "When", When$0);
13082
13195
  }
13083
- var While$0 = $TS($S($EXPECT($L208, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13196
+ var While$0 = $TS($S($EXPECT($L209, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13084
13197
  return { $loc, token: $1 };
13085
13198
  });
13086
13199
  function While(ctx, state) {
13087
13200
  return $EVENT(ctx, state, "While", While$0);
13088
13201
  }
13089
- var Yield$0 = $TS($S($EXPECT($L209, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13202
+ var Yield$0 = $TS($S($EXPECT($L210, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13090
13203
  return { $loc, token: $1, type: "Yield" };
13091
13204
  });
13092
13205
  function Yield(ctx, state) {
@@ -13115,7 +13228,7 @@ ${input.slice(result.pos)}
13115
13228
  function JSXImplicitFragment(ctx, state) {
13116
13229
  return $EVENT(ctx, state, "JSXImplicitFragment", JSXImplicitFragment$0);
13117
13230
  }
13118
- var JSXTag$0 = $T($S($EXPECT($R72, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
13231
+ var JSXTag$0 = $T($S($EXPECT($R73, "JSXTag /(?=[<])/"), _JSXTag), function(value) {
13119
13232
  return value[1];
13120
13233
  });
13121
13234
  function JSXTag(ctx, state) {
@@ -13165,7 +13278,7 @@ ${input.slice(result.pos)}
13165
13278
  function JSXElement(ctx, state) {
13166
13279
  return $EVENT_C(ctx, state, "JSXElement", JSXElement$$);
13167
13280
  }
13168
- var JSXSelfClosingElement$0 = $TS($S($EXPECT($L17, 'JSXSelfClosingElement "<"'), JSXElementName, $E(TypeArguments), $E(JSXAttributes), $E(Whitespace), $EXPECT($L210, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13281
+ var JSXSelfClosingElement$0 = $TS($S($EXPECT($L17, 'JSXSelfClosingElement "<"'), JSXElementName, $E(TypeArguments), $E(JSXAttributes), $E(Whitespace), $EXPECT($L211, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
13169
13282
  return { type: "JSXElement", children: $0, tag: $2 };
13170
13283
  });
13171
13284
  function JSXSelfClosingElement(ctx, state) {
@@ -13199,7 +13312,7 @@ ${input.slice(result.pos)}
13199
13312
  function JSXOptionalClosingElement(ctx, state) {
13200
13313
  return $EVENT_C(ctx, state, "JSXOptionalClosingElement", JSXOptionalClosingElement$$);
13201
13314
  }
13202
- var JSXClosingElement$0 = $S($EXPECT($L211, 'JSXClosingElement "</"'), $E(Whitespace), JSXElementName, $E(Whitespace), $EXPECT($L45, 'JSXClosingElement ">"'));
13315
+ var JSXClosingElement$0 = $S($EXPECT($L212, 'JSXClosingElement "</"'), $E(Whitespace), JSXElementName, $E(Whitespace), $EXPECT($L45, 'JSXClosingElement ">"'));
13203
13316
  function JSXClosingElement(ctx, state) {
13204
13317
  return $EVENT(ctx, state, "JSXClosingElement", JSXClosingElement$0);
13205
13318
  }
@@ -13220,7 +13333,7 @@ ${input.slice(result.pos)}
13220
13333
  ];
13221
13334
  return { type: "JSXFragment", children: parts, jsxChildren: children.jsxChildren };
13222
13335
  });
13223
- var JSXFragment$1 = $TS($S(CoffeeJSXEnabled, $EXPECT($L212, 'JSXFragment "<>"'), $E(JSXChildren), $E(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13336
+ var JSXFragment$1 = $TS($S(CoffeeJSXEnabled, $EXPECT($L213, 'JSXFragment "<>"'), $E(JSXChildren), $E(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
13224
13337
  var children = $3;
13225
13338
  $0 = $0.slice(1);
13226
13339
  return {
@@ -13233,7 +13346,7 @@ ${input.slice(result.pos)}
13233
13346
  function JSXFragment(ctx, state) {
13234
13347
  return $EVENT_C(ctx, state, "JSXFragment", JSXFragment$$);
13235
13348
  }
13236
- var PushJSXOpeningFragment$0 = $TV($EXPECT($L212, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
13349
+ var PushJSXOpeningFragment$0 = $TV($EXPECT($L213, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
13237
13350
  module.JSXTagStack.push("");
13238
13351
  return $1;
13239
13352
  });
@@ -13250,7 +13363,7 @@ ${input.slice(result.pos)}
13250
13363
  function JSXOptionalClosingFragment(ctx, state) {
13251
13364
  return $EVENT_C(ctx, state, "JSXOptionalClosingFragment", JSXOptionalClosingFragment$$);
13252
13365
  }
13253
- var JSXClosingFragment$0 = $EXPECT($L213, 'JSXClosingFragment "</>"');
13366
+ var JSXClosingFragment$0 = $EXPECT($L214, 'JSXClosingFragment "</>"');
13254
13367
  function JSXClosingFragment(ctx, state) {
13255
13368
  return $EVENT(ctx, state, "JSXClosingFragment", JSXClosingFragment$0);
13256
13369
  }
@@ -13262,7 +13375,7 @@ ${input.slice(result.pos)}
13262
13375
  function JSXElementName(ctx, state) {
13263
13376
  return $EVENT_C(ctx, state, "JSXElementName", JSXElementName$$);
13264
13377
  }
13265
- var JSXIdentifierName$0 = $R$0($EXPECT($R73, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
13378
+ var JSXIdentifierName$0 = $R$0($EXPECT($R74, "JSXIdentifierName /(?:\\p{ID_Start}|[_$])(?:\\p{ID_Continue}|[\\u200C\\u200D$-])*/"));
13266
13379
  function JSXIdentifierName(ctx, state) {
13267
13380
  return $EVENT(ctx, state, "JSXIdentifierName", JSXIdentifierName$0);
13268
13381
  }
@@ -13441,7 +13554,7 @@ ${input.slice(result.pos)}
13441
13554
  class: $2
13442
13555
  };
13443
13556
  });
13444
- var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R74, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13557
+ var JSXAttribute$7 = $TS($S($TEXT($EXPECT($R75, "JSXAttribute /[!+-]/")), JSXAttributeName, $Y(JSXAttributeSpace)), function($skip, $loc, $0, $1, $2, $3) {
13445
13558
  var toggle = $1;
13446
13559
  var id = $2;
13447
13560
  const value = toggle === "+" ? "true" : "false";
@@ -13451,11 +13564,11 @@ ${input.slice(result.pos)}
13451
13564
  function JSXAttribute(ctx, state) {
13452
13565
  return $EVENT_C(ctx, state, "JSXAttribute", JSXAttribute$$);
13453
13566
  }
13454
- var JSXAttributeSpace$0 = $R$0($EXPECT($R75, "JSXAttributeSpace /[\\s>]|\\/>/"));
13567
+ var JSXAttributeSpace$0 = $R$0($EXPECT($R76, "JSXAttributeSpace /[\\s>]|\\/>/"));
13455
13568
  function JSXAttributeSpace(ctx, state) {
13456
13569
  return $EVENT(ctx, state, "JSXAttributeSpace", JSXAttributeSpace$0);
13457
13570
  }
13458
- var JSXShorthandString$0 = $TR($EXPECT($R76, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13571
+ var JSXShorthandString$0 = $TR($EXPECT($R77, "JSXShorthandString /(?:[\\w\\-:]+|\\([^()]*\\)|\\[[^\\[\\]]*\\])+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13459
13572
  return quoteString($0);
13460
13573
  });
13461
13574
  var JSXShorthandString$1 = $TS($S(TemplateLiteral), function($skip, $loc, $0, $1) {
@@ -13489,7 +13602,7 @@ ${input.slice(result.pos)}
13489
13602
  }
13490
13603
  return [open, value, close];
13491
13604
  });
13492
- var JSXAttributeValue$4 = $R$0($EXPECT($R77, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13605
+ var JSXAttributeValue$4 = $R$0($EXPECT($R78, `JSXAttributeValue /"[^"]*"|'[^']*'/`));
13493
13606
  var JSXAttributeValue$$ = [JSXAttributeValue$0, JSXAttributeValue$1, JSXAttributeValue$2, JSXAttributeValue$3, JSXAttributeValue$4];
13494
13607
  function JSXAttributeValue(ctx, state) {
13495
13608
  return $EVENT_C(ctx, state, "JSXAttributeValue", JSXAttributeValue$$);
@@ -13502,7 +13615,7 @@ ${input.slice(result.pos)}
13502
13615
  function InlineJSXAttributeValue(ctx, state) {
13503
13616
  return $EVENT(ctx, state, "InlineJSXAttributeValue", InlineJSXAttributeValue$0);
13504
13617
  }
13505
- var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R78, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13618
+ var InlineJSXBinaryOpRHS$0 = $TS($S($N($EXPECT($R79, "InlineJSXBinaryOpRHS /[<>]/")), BinaryOp, InlineJSXUnaryExpression), function($skip, $loc, $0, $1, $2, $3) {
13506
13619
  var op = $2;
13507
13620
  var rhs = $3;
13508
13621
  return [[], op, [], rhs];
@@ -13519,7 +13632,7 @@ ${input.slice(result.pos)}
13519
13632
  function InlineJSXUnaryExpression(ctx, state) {
13520
13633
  return $EVENT(ctx, state, "InlineJSXUnaryExpression", InlineJSXUnaryExpression$0);
13521
13634
  }
13522
- var InlineJSXUnaryOp$0 = $TR($EXPECT($R79, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13635
+ var InlineJSXUnaryOp$0 = $TR($EXPECT($R80, "InlineJSXUnaryOp /[!~+-](?!\\s|[!~+-]*&)/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13523
13636
  return { $loc, token: $0 };
13524
13637
  });
13525
13638
  function InlineJSXUnaryOp(ctx, state) {
@@ -13729,19 +13842,19 @@ ${input.slice(result.pos)}
13729
13842
  function JSXChild(ctx, state) {
13730
13843
  return $EVENT_C(ctx, state, "JSXChild", JSXChild$$);
13731
13844
  }
13732
- var JSXComment$0 = $TS($S($EXPECT($L214, 'JSXComment "<!--"'), JSXCommentContent, $EXPECT($L215, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
13845
+ var JSXComment$0 = $TS($S($EXPECT($L215, 'JSXComment "<!--"'), JSXCommentContent, $EXPECT($L216, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
13733
13846
  return ["{/*", $2, "*/}"];
13734
13847
  });
13735
13848
  function JSXComment(ctx, state) {
13736
13849
  return $EVENT(ctx, state, "JSXComment", JSXComment$0);
13737
13850
  }
13738
- var JSXCommentContent$0 = $TR($EXPECT($R80, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13851
+ var JSXCommentContent$0 = $TR($EXPECT($R81, "JSXCommentContent /(?:-[^-]|[^-]*)*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13739
13852
  return { $loc, token: $0.replace(/\*\//g, "* /") };
13740
13853
  });
13741
13854
  function JSXCommentContent(ctx, state) {
13742
13855
  return $EVENT(ctx, state, "JSXCommentContent", JSXCommentContent$0);
13743
13856
  }
13744
- var JSXText$0 = $TR($EXPECT($R81, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13857
+ var JSXText$0 = $TR($EXPECT($R82, "JSXText /[^{}<>\\r\\n]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
13745
13858
  return {
13746
13859
  type: "JSXText",
13747
13860
  token: $0,
@@ -13916,37 +14029,37 @@ ${input.slice(result.pos)}
13916
14029
  function InterfaceExtendsTarget(ctx, state) {
13917
14030
  return $EVENT(ctx, state, "InterfaceExtendsTarget", InterfaceExtendsTarget$0);
13918
14031
  }
13919
- var TypeKeyword$0 = $TS($S($EXPECT($L216, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14032
+ var TypeKeyword$0 = $TS($S($EXPECT($L217, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13920
14033
  return { $loc, token: $1 };
13921
14034
  });
13922
14035
  function TypeKeyword(ctx, state) {
13923
14036
  return $EVENT(ctx, state, "TypeKeyword", TypeKeyword$0);
13924
14037
  }
13925
- var Enum$0 = $TS($S($EXPECT($L217, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14038
+ var Enum$0 = $TS($S($EXPECT($L218, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13926
14039
  return { $loc, token: $1 };
13927
14040
  });
13928
14041
  function Enum(ctx, state) {
13929
14042
  return $EVENT(ctx, state, "Enum", Enum$0);
13930
14043
  }
13931
- var Interface$0 = $TS($S($EXPECT($L218, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14044
+ var Interface$0 = $TS($S($EXPECT($L219, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13932
14045
  return { $loc, token: $1 };
13933
14046
  });
13934
14047
  function Interface(ctx, state) {
13935
14048
  return $EVENT(ctx, state, "Interface", Interface$0);
13936
14049
  }
13937
- var Global$0 = $TS($S($EXPECT($L219, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14050
+ var Global$0 = $TS($S($EXPECT($L220, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13938
14051
  return { $loc, token: $1 };
13939
14052
  });
13940
14053
  function Global(ctx, state) {
13941
14054
  return $EVENT(ctx, state, "Global", Global$0);
13942
14055
  }
13943
- var Module$0 = $TS($S($EXPECT($L220, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14056
+ var Module$0 = $TS($S($EXPECT($L221, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13944
14057
  return { $loc, token: $1 };
13945
14058
  });
13946
14059
  function Module(ctx, state) {
13947
14060
  return $EVENT(ctx, state, "Module", Module$0);
13948
14061
  }
13949
- var Namespace$0 = $TS($S($EXPECT($L221, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14062
+ var Namespace$0 = $TS($S($EXPECT($L222, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
13950
14063
  return { $loc, token: $1 };
13951
14064
  });
13952
14065
  function Namespace(ctx, state) {
@@ -14162,7 +14275,7 @@ ${input.slice(result.pos)}
14162
14275
  function TypeProperty(ctx, state) {
14163
14276
  return $EVENT(ctx, state, "TypeProperty", TypeProperty$0);
14164
14277
  }
14165
- var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R82, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R17, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
14278
+ var TypeIndexSignature$0 = $S($E($S($R$0($EXPECT($R83, "TypeIndexSignature /[+-]?/")), Readonly, NotDedented)), OpenBracket, TypeIndex, CloseBracket, $E($S(__, $R$0($EXPECT($R10, "TypeIndexSignature /[+-]/")), $Y($S($E(_), QuestionMark)))));
14166
14279
  function TypeIndexSignature(ctx, state) {
14167
14280
  return $EVENT(ctx, state, "TypeIndexSignature", TypeIndexSignature$0);
14168
14281
  }
@@ -14222,7 +14335,7 @@ ${input.slice(result.pos)}
14222
14335
  function ReturnTypeSuffix(ctx, state) {
14223
14336
  return $EVENT(ctx, state, "ReturnTypeSuffix", ReturnTypeSuffix$0);
14224
14337
  }
14225
- var ReturnType$0 = $TS($S($E($S(__, $EXPECT($L222, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
14338
+ var ReturnType$0 = $TS($S($E($S(__, $EXPECT($L223, 'ReturnType "asserts"'), NonIdContinue)), TypePredicate), function($skip, $loc, $0, $1, $2) {
14226
14339
  var asserts = $1;
14227
14340
  var t = $2;
14228
14341
  if (asserts) {
@@ -14301,7 +14414,7 @@ ${input.slice(result.pos)}
14301
14414
  function TypeUnarySuffix(ctx, state) {
14302
14415
  return $EVENT_C(ctx, state, "TypeUnarySuffix", TypeUnarySuffix$$);
14303
14416
  }
14304
- var TypeUnaryOp$0 = $S($EXPECT($L223, 'TypeUnaryOp "keyof"'), NonIdContinue);
14417
+ var TypeUnaryOp$0 = $S($EXPECT($L224, 'TypeUnaryOp "keyof"'), NonIdContinue);
14305
14418
  var TypeUnaryOp$1 = $S($EXPECT($L184, 'TypeUnaryOp "readonly"'), NonIdContinue);
14306
14419
  var TypeUnaryOp$$ = [TypeUnaryOp$0, TypeUnaryOp$1];
14307
14420
  function TypeUnaryOp(ctx, state) {
@@ -14332,7 +14445,7 @@ ${input.slice(result.pos)}
14332
14445
  function TypeIndexedAccess(ctx, state) {
14333
14446
  return $EVENT_C(ctx, state, "TypeIndexedAccess", TypeIndexedAccess$$);
14334
14447
  }
14335
- var UnknownAlias$0 = $TV($EXPECT($L224, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
14448
+ var UnknownAlias$0 = $TV($EXPECT($L225, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
14336
14449
  return { $loc, token: "unknown" };
14337
14450
  });
14338
14451
  function UnknownAlias(ctx, state) {
@@ -14458,7 +14571,7 @@ ${input.slice(result.pos)}
14458
14571
  function NestedType(ctx, state) {
14459
14572
  return $EVENT(ctx, state, "NestedType", NestedType$0);
14460
14573
  }
14461
- var TypeConditional$0 = $TS($S($E(_), $EXPECT($R83, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14574
+ var TypeConditional$0 = $TS($S($E(_), $EXPECT($R84, "TypeConditional /(?=if|unless)/"), TypeIfThenElse), function($skip, $loc, $0, $1, $2, $3) {
14462
14575
  return [$1, expressionizeTypeIf($3)];
14463
14576
  });
14464
14577
  var TypeConditional$1 = $TS($S(TypeCondition, NotDedented, QuestionMark, Type, __, Colon, Type), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
@@ -14538,17 +14651,17 @@ ${input.slice(result.pos)}
14538
14651
  }
14539
14652
  var TypeLiteral$0 = TypeTemplateLiteral;
14540
14653
  var TypeLiteral$1 = Literal;
14541
- var TypeLiteral$2 = $TS($S($EXPECT($R17, "TypeLiteral /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1, $2) {
14654
+ var TypeLiteral$2 = $TS($S($EXPECT($R10, "TypeLiteral /[+-]/"), NumericLiteral), function($skip, $loc, $0, $1, $2) {
14542
14655
  var sign = $1;
14543
14656
  var num = $2;
14544
14657
  if (sign[0] === "+")
14545
14658
  return num;
14546
14659
  return $0;
14547
14660
  });
14548
- var TypeLiteral$3 = $TS($S($EXPECT($L206, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14661
+ var TypeLiteral$3 = $TS($S($EXPECT($L207, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
14549
14662
  return { type: "VoidType", $loc, token: $1 };
14550
14663
  });
14551
- var TypeLiteral$4 = $TV($EXPECT($L225, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
14664
+ var TypeLiteral$4 = $TV($EXPECT($L226, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
14552
14665
  return { $loc, token: "[]" };
14553
14666
  });
14554
14667
  var TypeLiteral$$ = [TypeLiteral$0, TypeLiteral$1, TypeLiteral$2, TypeLiteral$3, TypeLiteral$4];
@@ -14658,15 +14771,15 @@ ${input.slice(result.pos)}
14658
14771
  function ThisType(ctx, state) {
14659
14772
  return $EVENT(ctx, state, "ThisType", ThisType$0);
14660
14773
  }
14661
- var Shebang$0 = $S($R$0($EXPECT($R84, "Shebang /#![^\\r\\n]*/")), EOL);
14774
+ var Shebang$0 = $S($R$0($EXPECT($R85, "Shebang /#![^\\r\\n]*/")), EOL);
14662
14775
  function Shebang(ctx, state) {
14663
14776
  return $EVENT(ctx, state, "Shebang", Shebang$0);
14664
14777
  }
14665
- var CivetPrologue$0 = $T($S($EXPECT($R85, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R86, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14778
+ var CivetPrologue$0 = $T($S($EXPECT($R86, "CivetPrologue /[\\t ]*/"), DoubleQuote, CivetPrologueContent, DoubleQuote, SimpleStatementDelimiter, $EXPECT($R87, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14666
14779
  var content = value[2];
14667
14780
  return content;
14668
14781
  });
14669
- var CivetPrologue$1 = $T($S($EXPECT($R85, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R86, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14782
+ var CivetPrologue$1 = $T($S($EXPECT($R86, "CivetPrologue /[\\t ]*/"), SingleQuote, CivetPrologueContent, SingleQuote, SimpleStatementDelimiter, $EXPECT($R87, "CivetPrologue /[ \\t]*/"), $C(EOL, $Y(RestOfLine))), function(value) {
14670
14783
  var content = value[2];
14671
14784
  return content;
14672
14785
  });
@@ -14674,7 +14787,7 @@ ${input.slice(result.pos)}
14674
14787
  function CivetPrologue(ctx, state) {
14675
14788
  return $EVENT_C(ctx, state, "CivetPrologue", CivetPrologue$$);
14676
14789
  }
14677
- var CivetPrologueContent$0 = $TS($S($EXPECT($L226, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R87, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14790
+ var CivetPrologueContent$0 = $TS($S($EXPECT($L227, 'CivetPrologueContent "civet"'), NonIdContinue, $Q(CivetOption), $EXPECT($R88, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
14678
14791
  var options = $3;
14679
14792
  return {
14680
14793
  type: "CivetPrologue",
@@ -14685,7 +14798,7 @@ ${input.slice(result.pos)}
14685
14798
  function CivetPrologueContent(ctx, state) {
14686
14799
  return $EVENT(ctx, state, "CivetPrologueContent", CivetPrologueContent$0);
14687
14800
  }
14688
- var CivetOption$0 = $TR($EXPECT($R88, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14801
+ var CivetOption$0 = $TR($EXPECT($R89, "CivetOption /\\s+([+-]?)([a-zA-Z0-9-]+)(\\s*=\\s*([a-zA-Z0-9.+-]*))?/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14689
14802
  const optionName = $2.replace(/-+([a-z]?)/g, (_2, l) => {
14690
14803
  if (l)
14691
14804
  return l.toUpperCase();
@@ -14702,11 +14815,11 @@ ${input.slice(result.pos)}
14702
14815
  function CivetOption(ctx, state) {
14703
14816
  return $EVENT(ctx, state, "CivetOption", CivetOption$0);
14704
14817
  }
14705
- var UnknownPrologue$0 = $S($R$0($EXPECT($R85, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14818
+ var UnknownPrologue$0 = $S($R$0($EXPECT($R86, "UnknownPrologue /[\\t ]*/")), StringLiteral, $TEXT(SimpleStatementDelimiter), EOS);
14706
14819
  function UnknownPrologue(ctx, state) {
14707
14820
  return $EVENT(ctx, state, "UnknownPrologue", UnknownPrologue$0);
14708
14821
  }
14709
- var TripleSlashDirective$0 = $S($R$0($EXPECT($R89, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14822
+ var TripleSlashDirective$0 = $S($R$0($EXPECT($R90, "TripleSlashDirective /\\/\\/\\/[^\\r\\n]*/")), $E(EOS));
14710
14823
  function TripleSlashDirective(ctx, state) {
14711
14824
  return $EVENT(ctx, state, "TripleSlashDirective", TripleSlashDirective$0);
14712
14825
  }
@@ -14722,13 +14835,13 @@ ${input.slice(result.pos)}
14722
14835
  function PrologueString(ctx, state) {
14723
14836
  return $EVENT_C(ctx, state, "PrologueString", PrologueString$$);
14724
14837
  }
14725
- var EOS$0 = $T($S($EXPECT($R90, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14838
+ var EOS$0 = $T($S($EXPECT($R91, "EOS /(?=[ \\t\\r\\n\\/#]|$)/"), $P(RestOfLine)), function(value) {
14726
14839
  return value[1];
14727
14840
  });
14728
14841
  function EOS(ctx, state) {
14729
14842
  return $EVENT(ctx, state, "EOS", EOS$0);
14730
14843
  }
14731
- var EOL$0 = $TR($EXPECT($R91, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14844
+ var EOL$0 = $TR($EXPECT($R92, "EOL /\\r\\n|\\n|\\r|$/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
14732
14845
  return { $loc, token: $0 };
14733
14846
  });
14734
14847
  function EOL(ctx, state) {
@@ -15300,11 +15413,11 @@ ${input.slice(result.pos)}
15300
15413
  function Prologue(ctx, state) {
15301
15414
  return $EVENT(ctx, state, "Prologue", Prologue$0);
15302
15415
  }
15303
- var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R92, "ProloguePrefix /[^]*/")));
15416
+ var ProloguePrefix$0 = $S(Prologue, $R$0($EXPECT($R93, "ProloguePrefix /[^]*/")));
15304
15417
  function ProloguePrefix(ctx, state) {
15305
15418
  return $EVENT(ctx, state, "ProloguePrefix", ProloguePrefix$0);
15306
15419
  }
15307
- var Indent$0 = $TR($EXPECT($R86, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15420
+ var Indent$0 = $TR($EXPECT($R87, "Indent /[ \\t]*/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15308
15421
  const level = getIndentLevel($0, module.config.tab);
15309
15422
  return {
15310
15423
  $loc,
@@ -15452,11 +15565,11 @@ ${input.slice(result.pos)}
15452
15565
  exports.WRHS = WRHS;
15453
15566
  exports.SingleLineBinaryOpRHS = SingleLineBinaryOpRHS;
15454
15567
  exports.RHS = RHS;
15455
- exports.ParenthesizedAssignment = ParenthesizedAssignment;
15456
15568
  exports.UnaryExpression = UnaryExpression;
15457
15569
  exports.UnaryWithoutParenthesizedAssignment = UnaryWithoutParenthesizedAssignment;
15458
15570
  exports.UnaryBody = UnaryBody;
15459
15571
  exports.UnaryWithoutParenthesizedAssignmentBody = UnaryWithoutParenthesizedAssignmentBody;
15572
+ exports.ParenthesizedAssignment = ParenthesizedAssignment;
15460
15573
  exports.UnaryPostfix = UnaryPostfix;
15461
15574
  exports.TypePostfix = TypePostfix;
15462
15575
  exports.Tuple = Tuple;
@@ -15484,6 +15597,7 @@ ${input.slice(result.pos)}
15484
15597
  exports.PipelineTailItem = PipelineTailItem;
15485
15598
  exports.PrimaryExpression = PrimaryExpression;
15486
15599
  exports.ParenthesizedExpression = ParenthesizedExpression;
15600
+ exports.PartialPlaceholder = PartialPlaceholder;
15487
15601
  exports.ClassDeclaration = ClassDeclaration;
15488
15602
  exports.ClassExpression = ClassExpression;
15489
15603
  exports.ClassBinding = ClassBinding;
@@ -15944,6 +16058,7 @@ ${input.slice(result.pos)}
15944
16058
  exports.TripleTick = TripleTick;
15945
16059
  exports.Try = Try;
15946
16060
  exports.Typeof = Typeof;
16061
+ exports.Undefined = Undefined;
15947
16062
  exports.Unless = Unless;
15948
16063
  exports.Until = Until;
15949
16064
  exports.Using = Using;
@@ -16160,6 +16275,13 @@ ${input.slice(result.pos)}
16160
16275
  var import_parser = __toESM(require_parser());
16161
16276
 
16162
16277
  // source/generate.civet
16278
+ function stringify(node) {
16279
+ try {
16280
+ return JSON.stringify(node);
16281
+ } catch (e) {
16282
+ return `${node}`;
16283
+ }
16284
+ }
16163
16285
  function gen(node, options) {
16164
16286
  if (node === null || node === void 0) {
16165
16287
  return "";
@@ -16193,16 +16315,16 @@ ${input.slice(result.pos)}
16193
16315
  if (!node.children) {
16194
16316
  switch (node.type) {
16195
16317
  case "Ref": {
16196
- throw new Error(`Unpopulated ref ${JSON.stringify(node)}`);
16318
+ throw new Error(`Unpopulated ref ${stringify(node)}`);
16197
16319
  }
16198
16320
  }
16199
16321
  debugger;
16200
- throw new Error(`Unknown node ${JSON.stringify(node)}`);
16322
+ throw new Error(`Unknown node ${stringify(node)}`);
16201
16323
  }
16202
16324
  return gen(node.children, options);
16203
16325
  }
16204
16326
  debugger;
16205
- throw new Error(`Unknown node ${JSON.stringify(node)}`);
16327
+ throw new Error(`Unknown node ${stringify(node)}`);
16206
16328
  }
16207
16329
  var generate_default = gen;
16208
16330
  function prune(node) {