@danielx/civet 0.9.3 → 0.9.5

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/main.mjs CHANGED
@@ -56,7 +56,7 @@ var require_machine = __commonJS({
56
56
  $EVENT: () => $EVENT2,
57
57
  $EVENT_C: () => $EVENT_C2,
58
58
  $EXPECT: () => $EXPECT2,
59
- $L: () => $L247,
59
+ $L: () => $L249,
60
60
  $N: () => $N2,
61
61
  $P: () => $P2,
62
62
  $Q: () => $Q2,
@@ -81,7 +81,7 @@ var require_machine = __commonJS({
81
81
  return result;
82
82
  };
83
83
  }
84
- function $L247(str) {
84
+ function $L249(str) {
85
85
  return function(_ctx, state2) {
86
86
  const { input, pos } = state2, { length } = str, end = pos + length;
87
87
  if (input.substring(pos, end) === str) {
@@ -1631,6 +1631,15 @@ function gatherRecursiveAll(node, predicate) {
1631
1631
  }
1632
1632
 
1633
1633
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\parser\ref.civet.jsx
1634
+ var range = (start, end) => {
1635
+ const length = end - start;
1636
+ if (length <= 0) return [];
1637
+ const arr = Array(length);
1638
+ for (let i = 0; i < length; ++i) {
1639
+ arr[i] = i + start;
1640
+ }
1641
+ return arr;
1642
+ };
1634
1643
  function makeRef(base = "ref", id = base) {
1635
1644
  return {
1636
1645
  type: "Ref",
@@ -1643,7 +1652,7 @@ function needsRef(expression, base = "ref") {
1643
1652
  return;
1644
1653
  }
1645
1654
  if (Array.isArray(expression)) {
1646
- const nonempty = ((s) => Array.from({ length: expression.length - s }, (_2, i) => s + i))(0).filter((i) => !isWhitespaceOrEmpty(expression[i]));
1655
+ const nonempty = range(0, expression.length).filter((i) => !isWhitespaceOrEmpty(expression[i]));
1647
1656
  if (nonempty.length === 1) {
1648
1657
  let ref1;
1649
1658
  if (ref1 = needsRef(expression[nonempty[0]], base)) {
@@ -1659,8 +1668,9 @@ function needsRef(expression, base = "ref") {
1659
1668
  case "Ref":
1660
1669
  case "Identifier":
1661
1670
  case "Literal":
1662
- case "Placeholder":
1671
+ case "Placeholder": {
1663
1672
  return;
1673
+ }
1664
1674
  }
1665
1675
  return makeRef(base);
1666
1676
  }
@@ -1690,10 +1700,34 @@ function maybeRefAssignment(exp, base = "ref") {
1690
1700
  return { ref, ...makeRefAssignment(ref, exp) };
1691
1701
  }
1692
1702
  }
1703
+ function populateRefs(statements) {
1704
+ const refNodes = gatherRecursive(statements, ($) => $.type === "Ref");
1705
+ if (!refNodes.length) {
1706
+ return;
1707
+ }
1708
+ const ids = gatherRecursive(statements, ($1) => $1.type === "Identifier");
1709
+ const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
1710
+ for (let i1 = 0, len3 = refNodes.length; i1 < len3; i1++) {
1711
+ const ref = refNodes[i1];
1712
+ if (!(ref.type === "Ref")) {
1713
+ continue;
1714
+ }
1715
+ const { base } = ref;
1716
+ ref.type = "Identifier";
1717
+ let n = 0;
1718
+ let name = base;
1719
+ while (names.has(name)) {
1720
+ n++;
1721
+ name = `${base}${n}`;
1722
+ }
1723
+ names.add(name);
1724
+ ref.children = ref.names = [name];
1725
+ }
1726
+ }
1693
1727
 
1694
1728
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\parser\binding.civet.jsx
1695
1729
  function adjustAtBindings(statements, asThis = false) {
1696
- for (let ref1 = gatherRecursiveAll(statements, ($) => $.type === "AtBindingProperty"), i1 = 0, len3 = ref1.length; i1 < len3; i1++) {
1730
+ for (let ref1 = gatherRecursiveAll(statements, ($1) => $1.type === "AtBindingProperty"), i1 = 0, len3 = ref1.length; i1 < len3; i1++) {
1697
1731
  const binding = ref1[i1];
1698
1732
  const { ref } = binding;
1699
1733
  if (asThis) {
@@ -1711,7 +1745,7 @@ function adjustAtBindings(statements, asThis = false) {
1711
1745
  }
1712
1746
  }
1713
1747
  function adjustBindingElements(elements) {
1714
- const names = elements.flatMap(($1) => $1.names || []);
1748
+ const names = elements.flatMap(($2) => $2.names || []);
1715
1749
  const { length } = elements;
1716
1750
  let blockPrefix, restIndex = -1, restCount = 0;
1717
1751
  for (let i2 = 0, len1 = elements.length; i2 < len1; i2++) {
@@ -1769,16 +1803,40 @@ function adjustBindingElements(elements) {
1769
1803
  length
1770
1804
  };
1771
1805
  }
1806
+ function gatherSubbindings(node, subbindings = []) {
1807
+ for (let ref2 = gatherRecursiveAll(node, ($) => $.subbinding != null), i3 = 0, len22 = ref2.length; i3 < len22; i3++) {
1808
+ const p = ref2[i3];
1809
+ const { subbinding } = p;
1810
+ subbindings.push(", ", subbinding);
1811
+ gatherSubbindings(subbinding, subbindings);
1812
+ }
1813
+ return subbindings;
1814
+ }
1815
+ function simplifyBindingProperties(node) {
1816
+ const results = [];
1817
+ for (let ref3 = gatherRecursiveAll(node, ($3) => $3.type === "BindingProperty"), i4 = 0, len3 = ref3.length; i4 < len3; i4++) {
1818
+ const p = ref3[i4];
1819
+ const { name, value } = p;
1820
+ if (value?.type === "NamedBindingPattern" && value.binding === name) {
1821
+ const [ws] = p.children;
1822
+ results.push(p.children = [ws, name, p.delim]);
1823
+ } else {
1824
+ results.push(void 0);
1825
+ }
1826
+ }
1827
+ ;
1828
+ return results;
1829
+ }
1772
1830
  function gatherBindingCode(statements, opts) {
1773
1831
  const thisAssignments = [];
1774
1832
  const splices = [];
1775
1833
  function insertRestSplices(s, p, thisAssignments2) {
1776
1834
  let m;
1777
- for (let ref2 = gatherRecursiveAll(
1835
+ for (let ref4 = gatherRecursiveAll(
1778
1836
  s,
1779
1837
  (n) => n.blockPrefix || opts?.injectParamProps && n.accessModifier || n.type === "AtBinding" || opts?.assignPins && (m = n.type, m === "PinPattern" || m === "PinProperty")
1780
- ), i3 = 0, len22 = ref2.length; i3 < len22; i3++) {
1781
- let n = ref2[i3];
1838
+ ), i5 = 0, len4 = ref4.length; i5 < len4; i5++) {
1839
+ let n = ref4[i5];
1782
1840
  if (n.type === "AtBinding") {
1783
1841
  const { ref } = n;
1784
1842
  const { id } = ref;
@@ -1787,7 +1845,7 @@ function gatherBindingCode(statements, opts) {
1787
1845
  }
1788
1846
  if (opts?.assignPins) {
1789
1847
  if (n.type === "PinProperty") {
1790
- n.children = n.children.flatMap(($2) => $2 === n.name ? [n.name, ": ", n.value] : $2);
1848
+ n.children = n.children.flatMap(($4) => $4 === n.name ? [n.name, ": ", n.value] : $4);
1791
1849
  updateParentPointers(n);
1792
1850
  n = n.value;
1793
1851
  }
@@ -1809,8 +1867,8 @@ function gatherBindingCode(statements, opts) {
1809
1867
  }
1810
1868
  }
1811
1869
  if (opts?.injectParamProps && n.type === "Parameter" && n.accessModifier) {
1812
- for (let ref3 = n.names, i4 = 0, len3 = ref3.length; i4 < len3; i4++) {
1813
- const id = ref3[i4];
1870
+ for (let ref5 = n.names, i6 = 0, len5 = ref5.length; i6 < len5; i6++) {
1871
+ const id = ref5[i6];
1814
1872
  thisAssignments2.push({
1815
1873
  type: "AssignmentExpression",
1816
1874
  children: [`this.${id} = `, id],
@@ -1828,8 +1886,8 @@ function gatherBindingCode(statements, opts) {
1828
1886
  return [splices, thisAssignments];
1829
1887
  }
1830
1888
  function arrayElementHasTrailingComma(elementNode) {
1831
- let ref4;
1832
- const lastChild = (ref4 = elementNode.children)[ref4.length - 1];
1889
+ let ref6;
1890
+ const lastChild = (ref6 = elementNode.children)[ref6.length - 1];
1833
1891
  return lastChild && lastChild[lastChild.length - 1]?.token === ",";
1834
1892
  }
1835
1893
  function gatherBindingPatternTypeSuffix(pattern) {
@@ -1840,9 +1898,9 @@ function gatherBindingPatternTypeSuffix(pattern) {
1840
1898
  switch (pattern.type) {
1841
1899
  case "ArrayBindingPattern": {
1842
1900
  {
1843
- const results = [];
1844
- for (let ref5 = pattern.elements, i5 = 0, len4 = ref5.length; i5 < len4; i5++) {
1845
- const elem = ref5[i5];
1901
+ const results1 = [];
1902
+ for (let ref7 = pattern.elements, i7 = 0, len6 = ref7.length; i7 < len6; i7++) {
1903
+ const elem = ref7[i7];
1846
1904
  let { typeSuffix } = elem;
1847
1905
  typeSuffix ??= elem.binding?.typeSuffix;
1848
1906
  if (typeSuffix) {
@@ -1859,10 +1917,10 @@ function gatherBindingPatternTypeSuffix(pattern) {
1859
1917
  } else {
1860
1918
  typeElement[0] ??= "unknown";
1861
1919
  }
1862
- results.push(typeElement);
1920
+ results1.push(typeElement);
1863
1921
  }
1864
1922
  ;
1865
- const types = results;
1923
+ const types = results1;
1866
1924
  if (count) {
1867
1925
  const t = [": [", types, "]"];
1868
1926
  pattern.typeSuffix = {
@@ -1879,9 +1937,9 @@ function gatherBindingPatternTypeSuffix(pattern) {
1879
1937
  case "ObjectBindingPattern": {
1880
1938
  {
1881
1939
  let restType;
1882
- const results1 = [];
1883
- for (let ref6 = pattern.properties, i6 = 0, len5 = ref6.length; i6 < len5; i6++) {
1884
- const prop = ref6[i6];
1940
+ const results2 = [];
1941
+ for (let ref8 = pattern.properties, i8 = 0, len7 = ref8.length; i8 < len7; i8++) {
1942
+ const prop = ref8[i8];
1885
1943
  let { typeSuffix } = prop;
1886
1944
  typeSuffix ??= prop.value?.typeSuffix;
1887
1945
  if (typeSuffix) {
@@ -1895,12 +1953,12 @@ function gatherBindingPatternTypeSuffix(pattern) {
1895
1953
  switch (prop.type) {
1896
1954
  case "BindingProperty": {
1897
1955
  const ws = prop.children.slice(0, prop.children.indexOf(prop.name));
1898
- results1.push([...ws, prop.name, typeSuffix, prop.delim]);
1956
+ results2.push([...ws, prop.name, typeSuffix, prop.delim]);
1899
1957
  break;
1900
1958
  }
1901
1959
  case "AtBindingProperty": {
1902
1960
  const ws = prop.children.slice(0, prop.children.indexOf(prop.binding));
1903
- results1.push([...ws, prop.ref.id, typeSuffix, prop.delim]);
1961
+ results2.push([...ws, prop.ref.id.replace(/^#/, ""), typeSuffix, prop.delim]);
1904
1962
  break;
1905
1963
  }
1906
1964
  case "BindingRestProperty": {
@@ -1910,7 +1968,7 @@ function gatherBindingPatternTypeSuffix(pattern) {
1910
1968
  }
1911
1969
  }
1912
1970
  ;
1913
- const types = results1;
1971
+ const types = results2;
1914
1972
  if (count) {
1915
1973
  const t = ["{", types, "}"];
1916
1974
  if (restType != null) {
@@ -1991,16 +2049,18 @@ var declareHelper = {
1991
2049
  "\n"
1992
2050
  ]]);
1993
2051
  },
1994
- rslice(rsliceRef) {
1995
- const RSliceable = makeRef("RSliceable");
2052
+ RSliceable(RSliceableRef) {
1996
2053
  state.prelude.push([
1997
2054
  "",
1998
- ts(["type ", RSliceable, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"])
2055
+ ts(["type ", RSliceableRef, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"])
1999
2056
  ]);
2057
+ },
2058
+ rslice(rsliceRef) {
2059
+ const RSliceableRef = getHelperRef("RSliceable");
2000
2060
  state.prelude.push(["", [
2001
2061
  preludeVar,
2002
2062
  rsliceRef,
2003
- ts([": <R, T extends string | ", RSliceable, "<R>>(a: T, start?: number, end?: number) => T extends string ? string : T extends ", RSliceable, "<infer R> ? R : never"]),
2063
+ ts([": <R, T extends string | ", RSliceableRef, "<R>>(a: T, start?: number, end?: number) => T extends string ? string : T extends ", RSliceableRef, "<infer R> ? R : never"]),
2004
2064
  " = ((a, start = -1, end = -1) => {\n",
2005
2065
  " const l = a.length\n",
2006
2066
  " if (start < 0) start += l\n",
@@ -2019,6 +2079,72 @@ var declareHelper = {
2019
2079
  "})"
2020
2080
  ], ";\n"]);
2021
2081
  },
2082
+ range(rangeRef) {
2083
+ state.prelude.push(["", [
2084
+ preludeVar,
2085
+ rangeRef,
2086
+ ts([": (start: number, end: number) => number[]"]),
2087
+ " ",
2088
+ `= (start, end) => {
2089
+ const length = end - start;
2090
+ if (length <= 0) return [];
2091
+ const arr = Array(length);
2092
+ for (let i = 0; i < length; ++i) {
2093
+ arr[i] = i + start;
2094
+ }
2095
+ return arr;
2096
+ }`
2097
+ ], ";\n"]);
2098
+ },
2099
+ revRange(revRangeRef) {
2100
+ state.prelude.push(["", [
2101
+ preludeVar,
2102
+ revRangeRef,
2103
+ ts([": (start: number, end: number) => number[]"]),
2104
+ " ",
2105
+ `= (start, end) => {
2106
+ const length = start - end;
2107
+ if (length <= 0) return [];
2108
+ const arr = Array(length);
2109
+ for (let i = 0; i < length; ++i) {
2110
+ arr[i] = start - i;
2111
+ }
2112
+ return arr;
2113
+ }`
2114
+ ], ";\n"]);
2115
+ },
2116
+ stringRange(stringRangeRef) {
2117
+ state.prelude.push(["", [
2118
+ preludeVar,
2119
+ stringRangeRef,
2120
+ ts([": (start: number, length: number) => string[]"]),
2121
+ " ",
2122
+ `= (start, length) => {
2123
+ if (length <= 0) return [];
2124
+ const arr = Array(length);
2125
+ for (let i = 0; i < length; ++i) {
2126
+ arr[i] = String.fromCharCode(start + i);
2127
+ }
2128
+ return arr;
2129
+ }`
2130
+ ], ";\n"]);
2131
+ },
2132
+ revStringRange(revStringRangeRef) {
2133
+ state.prelude.push(["", [
2134
+ preludeVar,
2135
+ revStringRangeRef,
2136
+ ts([": (start: number, length: number) => string[]"]),
2137
+ " ",
2138
+ `= (start, length) => {
2139
+ if (length <= 0) return [];
2140
+ const arr = Array(length);
2141
+ for (let i = 0; i < length; ++i) {
2142
+ arr[i] = String.fromCharCode(start - i);
2143
+ }
2144
+ return arr;
2145
+ }`
2146
+ ], ";\n"]);
2147
+ },
2022
2148
  div(divRef) {
2023
2149
  state.prelude.push(["", [
2024
2150
  // [indent, statement]
@@ -2161,9 +2287,28 @@ function peekHelperRef(base) {
2161
2287
  return state.helperRefs[base];
2162
2288
  }
2163
2289
  function extractPreludeFor(node) {
2164
- let helpers = new Set(Object.values(state.helperRefs));
2165
- helpers = new Set(gatherRecursive(node, helpers.has.bind(helpers)));
2166
- return state.prelude.filter((s) => gatherRecursive(s, helpers.has.bind(helpers)).length);
2290
+ if (!state.prelude.length) {
2291
+ return state.prelude;
2292
+ }
2293
+ const allHelpers = new Set(Object.values(state.helperRefs));
2294
+ const isHelper = allHelpers.has.bind(allHelpers);
2295
+ const usedHelpers = new Set(gatherRecursive(node, isHelper));
2296
+ while (true) {
2297
+ let prelude = state.prelude.filter((s) => {
2298
+ return gatherRecursive(s, usedHelpers.has.bind(usedHelpers)).length;
2299
+ });
2300
+ let changed = false;
2301
+ for (let ref1 = gatherRecursive(prelude, isHelper), i = 0, len3 = ref1.length; i < len3; i++) {
2302
+ const helper = ref1[i];
2303
+ if (!usedHelpers.has(helper)) {
2304
+ usedHelpers.add(helper);
2305
+ changed = true;
2306
+ }
2307
+ }
2308
+ if (!changed) {
2309
+ return prelude;
2310
+ }
2311
+ }
2167
2312
  }
2168
2313
 
2169
2314
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\generate.civet.jsx
@@ -2175,7 +2320,8 @@ function stringify(node) {
2175
2320
  }
2176
2321
  }
2177
2322
  function gen(root, options) {
2178
- const updateSourceMap = options?.sourceMap?.updateSourceMap;
2323
+ let ref;
2324
+ const updateSourceMap = (ref = options?.sourceMap)?.updateSourceMap.bind(ref);
2179
2325
  return recurse(root);
2180
2326
  function recurse(node) {
2181
2327
  if (!(node != null)) {
@@ -2200,15 +2346,15 @@ function gen(root, options) {
2200
2346
  let line = "?";
2201
2347
  let column = "?";
2202
2348
  let offset;
2203
- let ref;
2204
- if (ref = options.sourceMap) {
2205
- const sourceMap = ref;
2349
+ let ref1;
2350
+ if (ref1 = options.sourceMap) {
2351
+ const sourceMap = ref1;
2206
2352
  if (node.$loc != null) {
2207
2353
  sourceMap.updateSourceMap("", node.$loc.pos);
2208
2354
  }
2209
- line = sourceMap.data.srcLine + 1;
2210
- column = sourceMap.data.srcColumn + 1;
2211
- offset = sourceMap.data.srcOffset;
2355
+ line = sourceMap.srcLine + 1;
2356
+ column = sourceMap.srcColumn + 1;
2357
+ offset = sourceMap.srcOffset;
2212
2358
  }
2213
2359
  options.errors ??= [];
2214
2360
  options.errors.push(new import_lib2.ParseError(
@@ -3259,9 +3405,30 @@ function wrapIterationReturningResults(statement, collect) {
3259
3405
  if (statement.resultsRef != null) {
3260
3406
  return;
3261
3407
  }
3262
- const resultsRef = statement.resultsRef = makeRef("results");
3408
+ if (statement.resultsParent) {
3409
+ const { ancestor: ancestor2 } = findAncestor(
3410
+ statement,
3411
+ ($5) => $5.type === "ForStatement" || $5.type === "IterationStatement",
3412
+ isFunction
3413
+ );
3414
+ if (!ancestor2) {
3415
+ statement.children.unshift({
3416
+ type: "Error",
3417
+ message: "Could not find ancestor of spread iteration"
3418
+ });
3419
+ return;
3420
+ }
3421
+ const resultsRef2 = statement.resultsRef = ancestor2.resultsRef;
3422
+ iterationDefaultBody(statement);
3423
+ const { block } = statement;
3424
+ if (!block.empty) {
3425
+ assignResults(block, (node) => [resultsRef2, ".push(", node, ")"]);
3426
+ }
3427
+ return;
3428
+ }
3429
+ const resultsRef = statement.resultsRef ??= makeRef("results");
3263
3430
  const declaration = iterationDeclaration(statement);
3264
- const { ancestor, child } = findAncestor(statement, ($5) => $5.type === "BlockStatement");
3431
+ const { ancestor, child } = findAncestor(statement, ($6) => $6.type === "BlockStatement");
3265
3432
  assert.notNull(ancestor, `Could not find block containing ${statement.type}`);
3266
3433
  const index = findChildIndex(ancestor.expressions, child);
3267
3434
  assert.notEqual(index, -1, `Could not find ${statement.type} in containing block`);
@@ -3305,6 +3472,9 @@ function iterationDeclaration(statement) {
3305
3472
  case "every": {
3306
3473
  return "true";
3307
3474
  }
3475
+ case "first": {
3476
+ return "undefined";
3477
+ }
3308
3478
  case "min": {
3309
3479
  return "Infinity";
3310
3480
  }
@@ -3317,6 +3487,9 @@ function iterationDeclaration(statement) {
3317
3487
  case "join": {
3318
3488
  return '""';
3319
3489
  }
3490
+ case "concat": {
3491
+ return "[]";
3492
+ }
3320
3493
  default: {
3321
3494
  return "0";
3322
3495
  }
@@ -3361,10 +3534,16 @@ function iterationDeclaration(statement) {
3361
3534
  case "count": {
3362
3535
  return ["if (", node, ") ++", resultsRef];
3363
3536
  }
3537
+ case "first": {
3538
+ return [resultsRef, " = ", node, "; break"];
3539
+ }
3364
3540
  case "sum":
3365
3541
  case "join": {
3366
3542
  return [resultsRef, " += ", node];
3367
3543
  }
3544
+ case "concat": {
3545
+ return [getHelperRef("concatAssign"), "(", resultsRef, ", ", node, ")"];
3546
+ }
3368
3547
  case "product": {
3369
3548
  return [resultsRef, " *= ", node];
3370
3549
  }
@@ -3418,31 +3597,34 @@ function iterationDefaultBody(statement) {
3418
3597
  }
3419
3598
  }
3420
3599
  }
3421
- if (statement.type === "ForStatement" && statement.declaration?.type === "ForDeclaration") {
3422
- if (reduction) {
3423
- const bindings = patternBindings(statement.declaration.binding.pattern);
3424
- if (bindings.length) {
3425
- fillBlock(["", bindings[0]]);
3426
- for (const binding of bindings.slice(1)) {
3427
- binding.children.unshift({
3428
- type: "Error",
3429
- subtype: "Warning",
3430
- message: "Ignored binding in reduction loop with implicit body"
3431
- });
3600
+ if (statement.type === "ForStatement") {
3601
+ const declaration = statement.eachDeclaration ?? statement.declaration;
3602
+ if (declaration?.type === "ForDeclaration") {
3603
+ if (reduction) {
3604
+ const bindings = patternBindings(declaration.binding.pattern);
3605
+ if (bindings.length) {
3606
+ fillBlock(["", bindings[0]]);
3607
+ for (const binding of bindings.slice(1)) {
3608
+ binding.children.unshift({
3609
+ type: "Error",
3610
+ subtype: "Warning",
3611
+ message: "Ignored binding in reduction loop with implicit body"
3612
+ });
3613
+ }
3614
+ } else {
3615
+ fillBlock([
3616
+ "",
3617
+ {
3618
+ type: "Error",
3619
+ message: "Empty binding pattern in reduction loop with implicit body"
3620
+ }
3621
+ ]);
3432
3622
  }
3433
3623
  } else {
3434
- fillBlock([
3435
- "",
3436
- {
3437
- type: "Error",
3438
- message: "Empty binding pattern in reduction loop with implicit body"
3439
- }
3440
- ]);
3624
+ fillBlock(["", patternAsValue(declaration.binding.pattern)]);
3441
3625
  }
3442
- } else {
3443
- fillBlock(["", patternAsValue(statement.declaration.binding.pattern)]);
3626
+ block.empty = false;
3444
3627
  }
3445
- block.empty = false;
3446
3628
  }
3447
3629
  return false;
3448
3630
  }
@@ -3503,7 +3685,7 @@ function processParams(f) {
3503
3685
  }
3504
3686
  }
3505
3687
  }
3506
- parameters.names = before.flatMap(($6) => $6.names);
3688
+ parameters.names = before.flatMap(($7) => $7.names);
3507
3689
  parameters.parameters.splice(0, 1 / 0, ...[]);
3508
3690
  if (tt) {
3509
3691
  parameters.parameters.push(tt);
@@ -3514,14 +3696,15 @@ function processParams(f) {
3514
3696
  parameters.names.push(...rest.names || []);
3515
3697
  rest.children.pop();
3516
3698
  if (after.length) {
3517
- if (rest.binding.type === "ArrayBindingPattern" || rest.binding.type === "ObjectBindingPattern") {
3699
+ let m4;
3700
+ if (m4 = rest.binding.type, m4 === "ArrayBindingPattern" || m4 === "ObjectBindingPattern" || m4 === "NamedBindingPattern") {
3518
3701
  parameters.parameters.push({
3519
3702
  type: "Error",
3520
3703
  message: "Non-end rest parameter cannot be binding pattern"
3521
3704
  });
3522
3705
  }
3523
3706
  after = trimFirstSpace(after);
3524
- const names = after.flatMap(($7) => $7.names);
3707
+ const names = after.flatMap(($8) => $8.names);
3525
3708
  const elements = after.map((p) => {
3526
3709
  if (p.type === "Error") {
3527
3710
  return p;
@@ -3610,9 +3793,9 @@ function processParams(f) {
3610
3793
  colon,
3611
3794
  t,
3612
3795
  children: [
3613
- ...oldSuffix.children.filter(($8) => (
3796
+ ...oldSuffix.children.filter(($9) => (
3614
3797
  // spaces and colon
3615
- $8 !== oldSuffix.optional && $8 !== oldSuffix.t
3798
+ $9 !== oldSuffix.optional && $9 !== oldSuffix.t
3616
3799
  )),
3617
3800
  !oldSuffix.colon ? colon : void 0,
3618
3801
  t
@@ -3646,25 +3829,28 @@ function processParams(f) {
3646
3829
  injectParamProps: isConstructor,
3647
3830
  assignPins: true
3648
3831
  });
3832
+ const subbindings = gatherSubbindings(parameters.parameters);
3833
+ simplifyBindingProperties(parameters.parameters);
3834
+ simplifyBindingProperties(subbindings);
3649
3835
  if (isConstructor) {
3650
- const { ancestor } = findAncestor(f, ($9) => $9.type === "ClassExpression");
3836
+ const { ancestor } = findAncestor(f, ($10) => $10.type === "ClassExpression");
3651
3837
  if (ancestor != null) {
3652
- const fields = new Set(gatherRecursiveWithinFunction(ancestor, ($10) => $10.type === "FieldDefinition").map(($11) => $11.id).filter((a3) => typeof a3 === "object" && a3 != null && "type" in a3 && a3.type === "Identifier").map(($12) => $12.name));
3838
+ const fields = new Set(gatherRecursiveWithinFunction(ancestor, ($11) => $11.type === "FieldDefinition").map(($12) => $12.id).filter((a3) => typeof a3 === "object" && a3 != null && "type" in a3 && a3.type === "Identifier").map(($13) => $13.name));
3653
3839
  const classExpressions = ancestor.body.expressions;
3654
3840
  let index2 = findChildIndex(classExpressions, f);
3655
3841
  assert.notEqual(index2, -1, "Could not find constructor in class");
3656
- let m4;
3657
- while (m4 = classExpressions[index2 - 1]?.[1], typeof m4 === "object" && m4 != null && "type" in m4 && m4.type === "MethodDefinition" && "name" in m4 && m4.name === "constructor") {
3842
+ let m5;
3843
+ while (m5 = classExpressions[index2 - 1]?.[1], typeof m5 === "object" && m5 != null && "type" in m5 && m5.type === "MethodDefinition" && "name" in m5 && m5.name === "constructor") {
3658
3844
  index2--;
3659
3845
  }
3660
3846
  const fStatement = classExpressions[index2];
3661
- for (let ref18 = gatherRecursive(parameters, ($13) => $13.type === "Parameter"), i9 = 0, len8 = ref18.length; i9 < len8; i9++) {
3847
+ for (let ref18 = gatherRecursive(parameters, ($14) => $14.type === "Parameter"), i9 = 0, len8 = ref18.length; i9 < len8; i9++) {
3662
3848
  const parameter = ref18[i9];
3663
3849
  const { accessModifier } = parameter;
3664
3850
  if (!(accessModifier || parameter.typeSuffix)) {
3665
3851
  continue;
3666
3852
  }
3667
- for (let ref19 = gatherRecursive(parameter, ($14) => $14.type === "AtBinding"), i10 = 0, len9 = ref19.length; i10 < len9; i10++) {
3853
+ for (let ref19 = gatherRecursive(parameter, ($15) => $15.type === "AtBinding"), i10 = 0, len9 = ref19.length; i10 < len9; i10++) {
3668
3854
  const binding = ref19[i10];
3669
3855
  const typeSuffix = binding.parent?.typeSuffix;
3670
3856
  if (!(accessModifier || typeSuffix)) {
@@ -3694,6 +3880,15 @@ function processParams(f) {
3694
3880
  children: [";"]
3695
3881
  };
3696
3882
  let prefix = [];
3883
+ if (subbindings.length) {
3884
+ prefix.push(makeNode({
3885
+ type: "Declaration",
3886
+ children: ["const ", subbindings.slice(1)],
3887
+ names: subbindings.flatMap(($16) => $16.names ?? []),
3888
+ bindings: [],
3889
+ decl: "const"
3890
+ }));
3891
+ }
3697
3892
  for (let ref20 = splices, i11 = 0, len10 = ref20.length; i11 < len10; i11++) {
3698
3893
  const binding = ref20[i11];
3699
3894
  assert.equal(binding.type, "PostRestBindingElements", "splice should be of type Binding");
@@ -3747,7 +3942,7 @@ function processSignature(f) {
3747
3942
  f.async.push("async ");
3748
3943
  signature.modifier.async = true;
3749
3944
  } else {
3750
- for (let ref21 = gatherRecursiveWithinFunction(block, ($15) => $15.type === "Await"), i12 = 0, len11 = ref21.length; i12 < len11; i12++) {
3945
+ for (let ref21 = gatherRecursiveWithinFunction(block, ($17) => $17.type === "Await"), i12 = 0, len11 = ref21.length; i12 < len11; i12++) {
3751
3946
  const a = ref21[i12];
3752
3947
  const i = findChildIndex(a.parent, a);
3753
3948
  a.parent.children.splice(i + 1, 0, {
@@ -3762,9 +3957,9 @@ function processSignature(f) {
3762
3957
  f.generator.push("*");
3763
3958
  signature.modifier.generator = true;
3764
3959
  } else {
3765
- for (let ref22 = gatherRecursiveWithinFunction(block, ($16) => $16.type === "YieldExpression"), i13 = 0, len12 = ref22.length; i13 < len12; i13++) {
3960
+ for (let ref22 = gatherRecursiveWithinFunction(block, ($18) => $18.type === "YieldExpression"), i13 = 0, len12 = ref22.length; i13 < len12; i13++) {
3766
3961
  const y = ref22[i13];
3767
- const i = y.children.findIndex(($17) => $17.type === "Yield");
3962
+ const i = y.children.findIndex(($19) => $19.type === "Yield");
3768
3963
  y.children.splice(i + 1, 0, {
3769
3964
  type: "Error",
3770
3965
  message: `yield invalid in ${f.type === "ArrowFunction" ? "=> arrow function" : signature.modifier.get ? "getter" : signature.modifier.set ? "setter" : signature.name}`
@@ -3777,7 +3972,7 @@ function processSignature(f) {
3777
3972
  }
3778
3973
  }
3779
3974
  function processFunctions(statements, config2) {
3780
- for (let ref23 = gatherRecursiveAll(statements, ($18) => $18.type === "FunctionExpression" || $18.type === "ArrowFunction" || $18.type === "MethodDefinition"), i14 = 0, len13 = ref23.length; i14 < len13; i14++) {
3975
+ for (let ref23 = gatherRecursiveAll(statements, ($20) => $20.type === "FunctionExpression" || $20.type === "ArrowFunction" || $20.type === "MethodDefinition"), i14 = 0, len13 = ref23.length; i14 < len13; i14++) {
3781
3976
  const f = ref23[i14];
3782
3977
  if (f.type === "FunctionExpression" || f.type === "MethodDefinition") {
3783
3978
  implicitFunctionBlock(f);
@@ -3789,7 +3984,7 @@ function processFunctions(statements, config2) {
3789
3984
  }
3790
3985
  function expressionizeIteration(exp) {
3791
3986
  let { async, generator, block, children, statement } = exp;
3792
- const i = children.indexOf(statement);
3987
+ let i = children.indexOf(statement);
3793
3988
  if (i < 0) {
3794
3989
  throw new Error("Could not find iteration statement in iteration expression");
3795
3990
  }
@@ -3800,12 +3995,6 @@ function expressionizeIteration(exp) {
3800
3995
  }
3801
3996
  let statements;
3802
3997
  if (generator) {
3803
- if (statement.reduction) {
3804
- children.unshift({
3805
- type: "Error",
3806
- message: `Cannot use reduction (${statement.reduction.subtype}) with generators`
3807
- });
3808
- }
3809
3998
  iterationDefaultBody(statement);
3810
3999
  assignResults(block, (node) => {
3811
4000
  return {
@@ -3853,7 +4042,7 @@ function expressionizeIteration(exp) {
3853
4042
  }
3854
4043
  }
3855
4044
  function processIterationExpressions(statements) {
3856
- for (let ref25 = gatherRecursiveAll(statements, ($19) => $19.type === "IterationExpression"), i15 = 0, len14 = ref25.length; i15 < len14; i15++) {
4045
+ for (let ref25 = gatherRecursiveAll(statements, ($21) => $21.type === "IterationExpression"), i15 = 0, len14 = ref25.length; i15 < len14; i15++) {
3857
4046
  const s = ref25[i15];
3858
4047
  expressionizeIteration(s);
3859
4048
  }
@@ -3903,12 +4092,12 @@ function processCoffeeDo(ws, expression) {
3903
4092
  const newParameters = {
3904
4093
  ...parameters,
3905
4094
  parameters: newParameterList,
3906
- children: parameters.children.map(($20) => $20 === parameterList ? newParameterList : $20)
4095
+ children: parameters.children.map(($22) => $22 === parameterList ? newParameterList : $22)
3907
4096
  };
3908
4097
  expression = {
3909
4098
  ...expression,
3910
4099
  parameters: newParameters,
3911
- children: expression.children.map(($21) => $21 === parameters ? newParameters : $21)
4100
+ children: expression.children.map(($23) => $23 === parameters ? newParameters : $23)
3912
4101
  };
3913
4102
  }
3914
4103
  return {
@@ -3930,7 +4119,7 @@ function makeAmpersandFunction(rhs) {
3930
4119
  ref = makeRef("$");
3931
4120
  inplacePrepend(ref, body);
3932
4121
  }
3933
- if (startsWithPredicate(body, ($22) => $22.type === "ObjectExpression")) {
4122
+ if (startsWithPredicate(body, ($24) => $24.type === "ObjectExpression")) {
3934
4123
  body = makeLeftHandSideExpression(body);
3935
4124
  }
3936
4125
  const parameterList = [
@@ -4726,17 +4915,15 @@ function getPatternConditions(pattern, ref, conditions = []) {
4726
4915
  break;
4727
4916
  }
4728
4917
  case "ConditionFragment": {
4729
- let { children } = pattern;
4730
- if (children.length) {
4731
- let [first, ...rest] = children;
4918
+ let { rhs } = pattern;
4919
+ if (rhs.length) {
4920
+ let [first, ...rest] = rhs;
4732
4921
  let [ws, ...op] = first;
4733
4922
  ws = [" "].concat(ws);
4734
4923
  first = [ws, ...op];
4735
- children = [first, ...rest];
4924
+ rhs = [first, ...rest];
4736
4925
  }
4737
- conditions.push(
4738
- processBinaryOpExpression([ref, children])
4739
- );
4926
+ conditions.push(processBinaryOpExpression([ref, rhs]));
4740
4927
  break;
4741
4928
  }
4742
4929
  case "RegularExpressionLiteral": {
@@ -4754,6 +4941,10 @@ function getPatternConditions(pattern, ref, conditions = []) {
4754
4941
  ]);
4755
4942
  break;
4756
4943
  }
4944
+ case "NamedBindingPattern": {
4945
+ getPatternConditions(pattern.pattern, ref, conditions);
4946
+ break;
4947
+ }
4757
4948
  case "Literal": {
4758
4949
  conditions.push([
4759
4950
  ref,
@@ -4783,27 +4974,51 @@ function getPatternBlockPrefix(pattern, ref, decl = "const ", typeSuffix) {
4783
4974
  }
4784
4975
  case "Literal":
4785
4976
  case "RegularExpressionLiteral":
4786
- case "PinPattern":
4787
- case "ConditionFragment": {
4977
+ case "PinPattern": {
4788
4978
  return;
4789
4979
  }
4980
+ case "ConditionFragment": {
4981
+ if (!pattern.binding) {
4982
+ return;
4983
+ }
4984
+ ;
4985
+ break;
4986
+ }
4790
4987
  }
4791
4988
  let [splices, thisAssignments] = gatherBindingCode(pattern);
4792
4989
  const patternBindings2 = nonMatcherBindings(pattern);
4793
- splices = splices.map((s) => [", ", nonMatcherBindings(s)]);
4990
+ const subbindings = gatherSubbindings(patternBindings2);
4991
+ simplifyBindingProperties(patternBindings2);
4992
+ simplifyBindingProperties(subbindings);
4993
+ splices = splices.flatMap((s) => [", ", nonMatcherBindings(s)]);
4794
4994
  thisAssignments = thisAssignments.map(($7) => ["", $7, ";"]);
4795
- const duplicateDeclarations = aggregateDuplicateBindings([patternBindings2, splices]);
4796
- return [
4797
- ["", {
4995
+ const duplicateDeclarations = aggregateDuplicateBindings([patternBindings2, splices, subbindings]);
4996
+ const blockPrefix = [];
4997
+ if (ref || subbindings.length || splices.length) {
4998
+ const children = [decl];
4999
+ if (ref) {
5000
+ children.push(patternBindings2, typeSuffix, " = ", ref);
5001
+ }
5002
+ children.push(...subbindings);
5003
+ children.push(...splices);
5004
+ if (!ref) {
5005
+ children.splice(1, 1);
5006
+ }
5007
+ blockPrefix.push(["", {
4798
5008
  type: "Declaration",
4799
- children: [decl, patternBindings2, typeSuffix, " = ", ref, ...splices],
5009
+ children,
5010
+ decl,
4800
5011
  names: [],
4801
5012
  bindings: []
4802
5013
  // avoid implicit return of any bindings
4803
- }, ";"],
4804
- ...thisAssignments,
4805
- ...duplicateDeclarations.map(($8) => ["", $8, ";"])
4806
- ];
5014
+ }, ";"]);
5015
+ }
5016
+ blockPrefix.push(...thisAssignments);
5017
+ blockPrefix.push(...duplicateDeclarations.map(($8) => ["", $8, ";"]));
5018
+ if (!blockPrefix.length) {
5019
+ return;
5020
+ }
5021
+ return blockPrefix;
4807
5022
  }
4808
5023
  function elideMatchersFromArrayBindings(elements) {
4809
5024
  const results = [];
@@ -4844,45 +5059,75 @@ function elideMatchersFromArrayBindings(elements) {
4844
5059
  return results;
4845
5060
  }
4846
5061
  function elideMatchersFromPropertyBindings(properties) {
4847
- return properties.map((p) => {
5062
+ const results1 = [];
5063
+ for (let i6 = 0, len5 = properties.length; i6 < len5; i6++) {
5064
+ const p = properties[i6];
4848
5065
  switch (p.type) {
4849
- case "BindingProperty": {
5066
+ case "BindingProperty":
5067
+ case "PinProperty": {
4850
5068
  const { children, name, value } = p;
4851
5069
  const [ws] = children;
4852
5070
  const shouldElide = name.type === "NumericLiteral" && !value?.name || name.type === "ComputedPropertyName" && value?.subtype === "NumericLiteral";
4853
5071
  if (shouldElide) {
4854
- return;
4855
- }
4856
- switch (value && value.type) {
4857
- case "ArrayBindingPattern":
4858
- case "ObjectBindingPattern": {
4859
- const bindings = nonMatcherBindings(value);
4860
- return {
4861
- ...p,
4862
- children: [ws, name, bindings && ": ", bindings, p.delim]
4863
- };
5072
+ continue;
5073
+ } else {
5074
+ let contents;
5075
+ let m1;
5076
+ switch (value?.type) {
5077
+ case "ArrayBindingPattern":
5078
+ case "ObjectBindingPattern": {
5079
+ const bindings = nonMatcherBindings(value);
5080
+ contents = {
5081
+ ...p,
5082
+ value: bindings,
5083
+ children: [ws, name, bindings && ": ", bindings, p.delim]
5084
+ };
5085
+ break;
5086
+ }
5087
+ case "Identifier":
5088
+ case void 0: {
5089
+ contents = p;
5090
+ break;
5091
+ }
5092
+ case "NamedBindingPattern": {
5093
+ const bindings = nonMatcherBindings(value.pattern);
5094
+ contents = {
5095
+ ...p,
5096
+ subbinding: (m1 = bindings?.type, m1 === "ArrayBindingPattern" || m1 === "ObjectBindingPattern" || m1 === "Identifier") ? [
5097
+ bindings,
5098
+ " = ",
5099
+ name
5100
+ ] : void 0
5101
+ };
5102
+ if (p.name === value.binding) {
5103
+ contents.children = [ws, name, p.delim];
5104
+ }
5105
+ ;
5106
+ break;
5107
+ }
5108
+ default: {
5109
+ contents = void 0;
5110
+ }
4864
5111
  }
4865
- case "Identifier": {
4866
- return p;
5112
+ if (contents) {
5113
+ results1.push(contents);
5114
+ } else {
5115
+ continue;
4867
5116
  }
4868
- case "Literal":
4869
- case "RegularExpressionLiteral":
4870
- case "StringLiteral":
4871
- default:
4872
- return {
4873
- ...p,
4874
- children: [ws, name, p.delim]
4875
- };
4876
5117
  }
5118
+ ;
5119
+ break;
5120
+ }
5121
+ default: {
5122
+ results1.push(p);
4877
5123
  }
4878
- case "PinProperty":
4879
- case "BindingRestProperty":
4880
- default:
4881
- return p;
4882
5124
  }
4883
- });
5125
+ }
5126
+ ;
5127
+ return results1;
4884
5128
  }
4885
5129
  function nonMatcherBindings(pattern) {
5130
+ let m2;
4886
5131
  switch (pattern.type) {
4887
5132
  case "ArrayBindingPattern":
4888
5133
  case "PostRestBindingElements": {
@@ -4901,6 +5146,16 @@ function nonMatcherBindings(pattern) {
4901
5146
  children: pattern.children.map(($10) => $10 === pattern.properties ? properties : $10)
4902
5147
  });
4903
5148
  }
5149
+ case "NamedBindingPattern": {
5150
+ const bindings = nonMatcherBindings(pattern.pattern);
5151
+ return makeNode({
5152
+ ...pattern,
5153
+ subbinding: (m2 = bindings?.type, m2 === "ArrayBindingPattern" || m2 === "ObjectBindingPattern" || m2 === "Identifier") ? [bindings, " = ", pattern.binding] : void 0
5154
+ });
5155
+ }
5156
+ case "ConditionFragment": {
5157
+ return pattern.binding;
5158
+ }
4904
5159
  default: {
4905
5160
  return pattern;
4906
5161
  }
@@ -4916,11 +5171,11 @@ function aggregateDuplicateBindings(bindings) {
4916
5171
  );
4917
5172
  const declarations = [];
4918
5173
  const propsGroupedByName = /* @__PURE__ */ new Map();
4919
- for (let i6 = 0, len5 = props.length; i6 < len5; i6++) {
4920
- const p = props[i6];
5174
+ for (let i7 = 0, len6 = props.length; i7 < len6; i7++) {
5175
+ const p = props[i7];
4921
5176
  const { name, value } = p;
4922
- let m1;
4923
- if (m1 = value?.type, m1 === "ArrayBindingPattern" || m1 === "ObjectBindingPattern") {
5177
+ let m3;
5178
+ if (m3 = value?.type, m3 === "ArrayBindingPattern" || m3 === "ObjectBindingPattern") {
4924
5179
  continue;
4925
5180
  }
4926
5181
  const key = value?.name || name?.name || name;
@@ -4942,8 +5197,8 @@ function aggregateDuplicateBindings(bindings) {
4942
5197
  pos: 0,
4943
5198
  input: key
4944
5199
  })) {
4945
- for (let i7 = 0, len6 = shared.length; i7 < len6; i7++) {
4946
- const p = shared[i7];
5200
+ for (let i8 = 0, len7 = shared.length; i8 < len7; i8++) {
5201
+ const p = shared[i8];
4947
5202
  aliasBinding(p, makeRef(`_${key}`, key));
4948
5203
  }
4949
5204
  return;
@@ -5035,8 +5290,18 @@ function processDeclarations(statements) {
5035
5290
  if (!(bindings != null)) {
5036
5291
  continue;
5037
5292
  }
5038
- for (let i2 = 0, len22 = bindings.length; i2 < len22; i2++) {
5039
- const binding = bindings[i2];
5293
+ for (let i2 = bindings.length + -1; i2 >= 0; --i2) {
5294
+ const i = i2;
5295
+ const binding = bindings[i];
5296
+ const subbindings = gatherSubbindings(binding);
5297
+ if (subbindings.length) {
5298
+ simplifyBindingProperties(binding);
5299
+ simplifyBindingProperties(subbindings);
5300
+ spliceChild(declaration, binding, 1, binding, subbindings);
5301
+ }
5302
+ }
5303
+ for (let i3 = 0, len22 = bindings.length; i3 < len22; i3++) {
5304
+ const binding = bindings[i3];
5040
5305
  let { typeSuffix, initializer } = binding;
5041
5306
  if (typeSuffix && typeSuffix.optional) {
5042
5307
  if (initializer && !typeSuffix.t) {
@@ -5074,6 +5339,25 @@ function processDeclarations(statements) {
5074
5339
  }
5075
5340
  }
5076
5341
  }
5342
+ for (let ref2 = gatherRecursiveAll(statements, ($1) => $1.type === "ForStatement"), i4 = 0, len3 = ref2.length; i4 < len3; i4++) {
5343
+ const statement = ref2[i4];
5344
+ const { declaration } = statement;
5345
+ if (!(declaration?.type === "ForDeclaration")) {
5346
+ continue;
5347
+ }
5348
+ const { binding } = declaration;
5349
+ const blockPrefix = getPatternBlockPrefix(
5350
+ binding.pattern,
5351
+ void 0,
5352
+ append(declaration.decl, " "),
5353
+ binding.typeSuffix
5354
+ );
5355
+ simplifyBindingProperties(binding);
5356
+ if (blockPrefix != null) {
5357
+ statement.block.expressions.unshift(...blockPrefix);
5358
+ braceBlock(statement.block);
5359
+ }
5360
+ }
5077
5361
  }
5078
5362
  function prependStatementExpressionBlock(initializer, statement) {
5079
5363
  let { expression: exp } = initializer;
@@ -5082,7 +5366,7 @@ function prependStatementExpressionBlock(initializer, statement) {
5082
5366
  ws = exp[0];
5083
5367
  exp = exp[1];
5084
5368
  }
5085
- if (!(exp?.type === "StatementExpression")) {
5369
+ if (!(typeof exp === "object" && exp != null && "type" in exp && exp.type === "StatementExpression" || typeof exp === "object" && exp != null && "type" in exp && exp.type === "SpreadElement" && "expression" in exp && typeof exp.expression === "object" && exp.expression != null && "type" in exp.expression && exp.expression.type === "StatementExpression")) {
5086
5370
  return;
5087
5371
  }
5088
5372
  const pre = [];
@@ -5217,8 +5501,7 @@ function processDeclarationConditionStatement(s) {
5217
5501
  }
5218
5502
  let { expression } = condition;
5219
5503
  if (expression && typeof expression === "object" && "type" in expression && expression.type === "UnaryExpression" && "children" in expression && Array.isArray(expression.children) && len2(expression.children, 2) && Array.isArray(expression.children[0]) && len2(expression.children[0], 1) && expression.children[0][0] === "!" && typeof expression.children[1] === "object" && expression.children[1] != null && "type" in expression.children[1] && expression.children[1].type === "ParenthesizedExpression" && "expression" in expression.children[1]) {
5220
- const { type: type1, children: [[], { type: type2, expression: expression2 }] } = expression;
5221
- const type = [type1, type2];
5504
+ const { children: [[], { expression: expression2 }] } = expression;
5222
5505
  expression = expression2;
5223
5506
  }
5224
5507
  processDeclarationCondition(expression, condition.expression, s);
@@ -5243,8 +5526,8 @@ function processDeclarationConditionStatement(s) {
5243
5526
  ({ children } = condition.expression.children[1]);
5244
5527
  }
5245
5528
  children.unshift("(");
5246
- for (let i3 = 0, len3 = conditions.length; i3 < len3; i3++) {
5247
- const c = conditions[i3];
5529
+ for (let i5 = 0, len4 = conditions.length; i5 < len4; i5++) {
5530
+ const c = conditions[i5];
5248
5531
  children.push(" && ", c);
5249
5532
  }
5250
5533
  children.push(")");
@@ -5266,11 +5549,11 @@ function processDeclarationConditionStatement(s) {
5266
5549
  ancestor.expressions.splice(index + 1, 0, ...blockPrefix);
5267
5550
  updateParentPointers(ancestor);
5268
5551
  braceBlock(ancestor);
5269
- let ref2;
5552
+ let ref3;
5270
5553
  switch (s.type) {
5271
5554
  case "IfStatement": {
5272
- if (ref2 = s.else?.block) {
5273
- const elseBlock = ref2;
5555
+ if (ref3 = s.else?.block) {
5556
+ const elseBlock = ref3;
5274
5557
  if (elseBlock.bare && !elseBlock.semicolon) {
5275
5558
  elseBlock.children.push(elseBlock.semicolon = ";");
5276
5559
  }
@@ -5294,13 +5577,13 @@ function processDeclarationConditionStatement(s) {
5294
5577
  if (s.negated) {
5295
5578
  if (e != null) {
5296
5579
  const block = blockWithPrefix(blockPrefix, e.block);
5297
- e.children = e.children.map(($1) => $1 === e.block ? block : $1);
5580
+ e.children = e.children.map(($2) => $2 === e.block ? block : $2);
5298
5581
  e.block = block;
5299
5582
  updateParentPointers(e);
5300
5583
  }
5301
5584
  } else {
5302
5585
  const block = blockWithPrefix(blockPrefix, s.then);
5303
- s.children = s.children.map(($2) => $2 === s.then ? block : $2);
5586
+ s.children = s.children.map(($3) => $3 === s.then ? block : $3);
5304
5587
  s.then = block;
5305
5588
  updateParentPointers(s);
5306
5589
  }
@@ -5313,7 +5596,7 @@ function processDeclarationConditionStatement(s) {
5313
5596
  }
5314
5597
  const { children, block } = s;
5315
5598
  const newBlock = blockWithPrefix(blockPrefix, block);
5316
- s.children = children.map(($3) => $3 === block ? newBlock : $3);
5599
+ s.children = children.map(($4) => $4 === block ? newBlock : $4);
5317
5600
  updateParentPointers(s);
5318
5601
  break;
5319
5602
  }
@@ -5341,7 +5624,7 @@ function processDeclarationConditionStatement(s) {
5341
5624
  const block = makeEmptyBlock();
5342
5625
  replaceBlockExpression(s.parent, s, block);
5343
5626
  block.expressions.push(["", s]);
5344
- s.children.splice(s.children.findIndex(($4) => $4.token === "switch"), 0, blockPrefix);
5627
+ s.children.splice(s.children.findIndex(($5) => $5.token === "switch"), 0, blockPrefix);
5345
5628
  s.parent = block;
5346
5629
  } else {
5347
5630
  const block = blockWithPrefix([["", [{
@@ -5361,12 +5644,12 @@ function processDeclarationConditionStatement(s) {
5361
5644
  function dynamizeFromClause(from) {
5362
5645
  from = from.slice(1);
5363
5646
  from = trimFirstSpace(from);
5364
- let ref3;
5365
- if (ref3 = from[from.length - 1]?.assertion) {
5366
- const assert2 = ref3;
5367
- let ref4;
5368
- ref4 = from[from.length - 1];
5369
- ref4.children = ref4.children.filter((a2) => a2 !== assert2);
5647
+ let ref4;
5648
+ if (ref4 = from[from.length - 1]?.assertion) {
5649
+ const assert2 = ref4;
5650
+ let ref5;
5651
+ ref5 = from[from.length - 1];
5652
+ ref5.children = ref5.children.filter((a2) => a2 !== assert2);
5370
5653
  from.push(", {", assert2.keyword, ":", assert2.object, "}");
5371
5654
  }
5372
5655
  return ["(", ...from, ")"];
@@ -5375,20 +5658,20 @@ function dynamizeImportDeclaration(decl) {
5375
5658
  const { imports } = decl;
5376
5659
  let { star, binding, specifiers } = imports;
5377
5660
  const justDefault = binding && !specifiers && !star;
5378
- let ref5;
5661
+ let ref6;
5379
5662
  {
5380
5663
  if (binding) {
5381
5664
  if (specifiers) {
5382
- ref5 = makeRef();
5665
+ ref6 = makeRef();
5383
5666
  } else {
5384
- ref5 = binding;
5667
+ ref6 = binding;
5385
5668
  }
5386
5669
  } else {
5387
- ref5 = convertNamedImportsToObject(imports, true);
5670
+ ref6 = convertNamedImportsToObject(imports, true);
5388
5671
  }
5389
5672
  }
5390
5673
  ;
5391
- const pattern = ref5;
5674
+ const pattern = ref6;
5392
5675
  const c = "const";
5393
5676
  const expression = [
5394
5677
  justDefault ? "(" : void 0,
@@ -5653,7 +5936,7 @@ function processUnaryNestedExpression(pre, args, post) {
5653
5936
  children: args.children.map(
5654
5937
  (arg) => {
5655
5938
  if (typeof arg === "object" && arg != null && "type" in arg && arg.type === "ArrayElement" && "expression" in arg && "children" in arg) {
5656
- const { type, expression: exp, children } = arg;
5939
+ const { expression: exp, children } = arg;
5657
5940
  let expression = processUnaryExpression([last], trimFirstSpace(exp));
5658
5941
  expression = prepend(getTrimmingSpace(exp), expression);
5659
5942
  return {
@@ -5899,12 +6182,12 @@ function processPipelineExpressions(statements) {
5899
6182
  }
5900
6183
 
5901
6184
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\parser\for.civet.jsx
5902
- function processRangeExpression(start, ws1, range, end) {
5903
- ws1 = [ws1, range.children[0]];
5904
- const ws2 = range.children[1];
5905
- const comma = { $loc: range.$loc, token: "," };
6185
+ function processRangeExpression(start, ws1, range2, end) {
6186
+ ws1 = [ws1, range2.children[0]];
6187
+ const ws2 = range2.children[1];
6188
+ const comma = { $loc: range2.$loc, token: "," };
5906
6189
  let ref;
5907
- switch (range.increasing) {
6190
+ switch (range2.increasing) {
5908
6191
  case true: {
5909
6192
  ref = ($) => $;
5910
6193
  break;
@@ -5919,15 +6202,7 @@ function processRangeExpression(start, ws1, range, end) {
5919
6202
  }
5920
6203
  ;
5921
6204
  const abs = ref;
5922
- const lengthAdjust = 1 - Number(!range.left.inclusive) - Number(!range.right.inclusive);
5923
- let ref1;
5924
- if (lengthAdjust > 0) ref1 = ` + ${lengthAdjust}`;
5925
- else if (lengthAdjust < 0) ref1 = ` - ${-lengthAdjust}`;
5926
- else {
5927
- ref1 = void 0;
5928
- }
5929
- ;
5930
- const lengthAdjustExpression = ref1;
6205
+ const lengthAdjust = 1 - Number(!range2.left.inclusive) - Number(!range2.right.inclusive);
5931
6206
  let children;
5932
6207
  if (typeof start === "object" && start != null && "type" in start && start.type === "Literal" && (typeof end === "object" && end != null && "type" in end && end.type === "Literal")) {
5933
6208
  let startValue = literalValue(start);
@@ -5940,7 +6215,7 @@ function processRangeExpression(start, ws1, range, end) {
5940
6215
  let endCode = endValue.charCodeAt(0);
5941
6216
  const step = startCode <= endCode ? 1 : -1;
5942
6217
  const length = abs(endCode - startCode) + lengthAdjust;
5943
- if (!range.left.inclusive) {
6218
+ if (!range2.left.inclusive) {
5944
6219
  startCode += step;
5945
6220
  }
5946
6221
  if (length <= 26) {
@@ -5953,20 +6228,21 @@ function processRangeExpression(start, ws1, range, end) {
5953
6228
  ];
5954
6229
  } else {
5955
6230
  children = [
5956
- `Array.from({length: ${length.toString()}}, `,
5957
- "(_, i) => String.fromCharCode(",
6231
+ getHelperRef(startCode <= endCode ? "stringRange" : "revStringRange"),
6232
+ "(",
5958
6233
  startCode.toString(),
5959
- step > 0 ? " + " : " - ",
5960
- "i))"
6234
+ ", ",
6235
+ length.toString(),
6236
+ ")"
5961
6237
  ];
5962
6238
  }
5963
- if (range.error != null) {
5964
- children.unshift(range.error);
6239
+ if (range2.error != null) {
6240
+ children.unshift(range2.error);
5965
6241
  }
5966
6242
  } else if (typeof startValue === "number" && typeof endValue === "number") {
5967
6243
  const step = startValue <= endValue ? 1 : -1;
5968
6244
  const length = abs(endValue - startValue) + lengthAdjust;
5969
- if (!range.left.inclusive) {
6245
+ if (!range2.left.inclusive) {
5970
6246
  startValue += step;
5971
6247
  }
5972
6248
  if (length <= 20) {
@@ -5975,33 +6251,36 @@ function processRangeExpression(start, ws1, range, end) {
5975
6251
  Array.from({ length }, (_2, i) => startValue + i * step).join(", "),
5976
6252
  "]"
5977
6253
  ];
5978
- if (range.error != null) {
5979
- children.unshift(range.error);
6254
+ if (range2.error != null) {
6255
+ children.unshift(range2.error);
5980
6256
  }
5981
6257
  }
5982
6258
  }
5983
6259
  }
5984
6260
  if (!(children != null)) {
5985
- if (range.increasing != null) {
5986
- const sign = range.increasing ? "+" : "-";
6261
+ if (range2.increasing != null) {
6262
+ const sign = range2.increasing ? "+" : "-";
5987
6263
  end = makeLeftHandSideExpression(end);
5988
6264
  children = [
5989
- "((s) => Array.from({length: ",
5990
- range.increasing ? [ws2, end, " - s"] : ["s - ", ws2, end],
5991
- lengthAdjustExpression,
5992
- "}, (_, i) => s ",
5993
- sign,
5994
- " i))",
6265
+ getHelperRef(range2.increasing ? "range" : "revRange"),
5995
6266
  "(",
5996
- range.left.inclusive ? start : [makeLeftHandSideExpression(start), ` ${sign} 1`],
6267
+ range2.left.inclusive ? start : [makeLeftHandSideExpression(start), ` ${sign} 1`],
6268
+ ",",
6269
+ range2.right.inclusive ? [makeLeftHandSideExpression(end), ` ${sign} 1`] : end,
5997
6270
  ...ws1,
5998
6271
  ")"
5999
6272
  ];
6000
6273
  } else {
6001
6274
  children = [
6002
- "((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)",
6003
- lengthAdjustExpression,
6004
- "}, (_, i) => s + i * step)})",
6275
+ "((s, e) => s > e ? ",
6276
+ getHelperRef("revRange"),
6277
+ "(s, e",
6278
+ range2.right.inclusive ? " - 1" : void 0,
6279
+ ") : ",
6280
+ getHelperRef("range"),
6281
+ "(s, e",
6282
+ range2.right.inclusive ? " + 1" : void 0,
6283
+ "))",
6005
6284
  "(",
6006
6285
  start,
6007
6286
  ...ws1,
@@ -6017,14 +6296,14 @@ function processRangeExpression(start, ws1, range, end) {
6017
6296
  children,
6018
6297
  start,
6019
6298
  end,
6020
- error: range.error,
6021
- left: range.left,
6022
- right: range.right,
6023
- increasing: range.increasing
6299
+ error: range2.error,
6300
+ left: range2.left,
6301
+ right: range2.right,
6302
+ increasing: range2.increasing
6024
6303
  };
6025
6304
  }
6026
- function forRange(open, forDeclaration, range, stepExp, close) {
6027
- let { start, end, left, right, increasing } = range;
6305
+ function forRange(open, forDeclaration, range2, stepExp, close) {
6306
+ let { start, end, left, right, increasing } = range2;
6028
6307
  const counterRef = makeRef("i");
6029
6308
  const infinite = typeof end === "object" && end != null && "type" in end && end.type === "Identifier" && "name" in end && end.name === "Infinity";
6030
6309
  let stepRef, asc;
@@ -6042,25 +6321,25 @@ function forRange(open, forDeclaration, range, stepExp, close) {
6042
6321
  asc = false;
6043
6322
  }
6044
6323
  }
6045
- let ref2;
6324
+ let ref1;
6046
6325
  if (stepExp?.type === "Literal") {
6047
6326
  try {
6048
- ref2 = literalValue(stepExp);
6327
+ ref1 = literalValue(stepExp);
6049
6328
  } catch (e) {
6050
- ref2 = void 0;
6329
+ ref1 = void 0;
6051
6330
  }
6052
6331
  } else {
6053
- ref2 = void 0;
6332
+ ref1 = void 0;
6054
6333
  }
6055
6334
  ;
6056
- const stepValue = ref2;
6335
+ const stepValue = ref1;
6057
6336
  if (typeof stepValue === "number") {
6058
6337
  asc = stepValue > 0;
6059
6338
  }
6060
- let ref3;
6061
- if (stepRef) ref3 = start;
6062
- else ref3 = maybeRef(start, "start");
6063
- let startRef = ref3;
6339
+ let ref2;
6340
+ if (stepRef) ref2 = start;
6341
+ else ref2 = maybeRef(start, "start");
6342
+ let startRef = ref2;
6064
6343
  let endRef = maybeRef(end, "end");
6065
6344
  const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
6066
6345
  const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
@@ -6072,8 +6351,8 @@ function forRange(open, forDeclaration, range, stepExp, close) {
6072
6351
  }
6073
6352
  if (start?.type === "Literal" && "Literal" === end?.type) {
6074
6353
  asc = literalValue(start) <= literalValue(end);
6075
- let ref4;
6076
- if ("StringLiteral" === (ref4 = start.subtype) && ref4 === end.subtype) {
6354
+ let ref3;
6355
+ if ("StringLiteral" === (ref3 = start.subtype) && ref3 === end.subtype) {
6077
6356
  const startChar = literalValue(start).charCodeAt(0).toString();
6078
6357
  startRef = {
6079
6358
  type: "Literal",
@@ -6123,14 +6402,14 @@ function forRange(open, forDeclaration, range, stepExp, close) {
6123
6402
  // This declaration doesn't always appear in the output,
6124
6403
  // but it's still helpful for determining the primary loop variable
6125
6404
  declaration: forDeclaration,
6126
- children: [range.error, open, declaration, "; ", ...condition, "; ", ...increment, close],
6405
+ children: [range2.error, open, declaration, "; ", ...condition, "; ", ...increment, close],
6127
6406
  blockPrefix
6128
6407
  };
6129
6408
  }
6130
6409
  function processForInOf($0) {
6131
6410
  let [awaits, eachOwn, open, declaration, declaration2, ws, inOf, exp, step, close] = $0;
6132
- for (let ref5 = [declaration, declaration2?.[declaration2.length - 1]], i1 = 0, len3 = ref5.length; i1 < len3; i1++) {
6133
- const decl = ref5[i1];
6411
+ for (let ref4 = [declaration, declaration2?.[declaration2.length - 1]], i1 = 0, len3 = ref4.length; i1 < len3; i1++) {
6412
+ const decl = ref4[i1];
6134
6413
  if (!(decl != null)) {
6135
6414
  continue;
6136
6415
  }
@@ -6179,14 +6458,16 @@ function processForInOf($0) {
6179
6458
  names: assignmentNames,
6180
6459
  implicitLift: true
6181
6460
  }, ";"]);
6461
+ const eachDeclaration = declaration;
6182
6462
  declaration = {
6183
6463
  type: "Declaration",
6184
6464
  children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", trimFirstSpace(expRef2), ".length"],
6465
+ decl: "let",
6185
6466
  names: []
6186
6467
  };
6187
6468
  const condition = [counterRef, " < ", lenRef, "; "];
6188
6469
  const children = [open, declaration, "; ", condition, counterRef, increment, close];
6189
- return { declaration, children, blockPrefix };
6470
+ return { declaration, eachDeclaration, children, blockPrefix };
6190
6471
  } else {
6191
6472
  eachOwnError = {
6192
6473
  type: "Error",
@@ -6205,6 +6486,9 @@ function processForInOf($0) {
6205
6486
  }
6206
6487
  const { binding } = declaration;
6207
6488
  let pattern = binding?.pattern;
6489
+ if (pattern?.type === "NamedBindingPattern") {
6490
+ pattern = pattern.binding;
6491
+ }
6208
6492
  if (binding?.typeSuffix || inOf.token === "in" && declaration2 && pattern.type !== "Identifier") {
6209
6493
  const itemRef = makeRef(inOf.token === "in" ? "key" : "item");
6210
6494
  blockPrefix.push(["", {
@@ -6243,12 +6527,14 @@ function processForInOf($0) {
6243
6527
  hoistDec = {
6244
6528
  type: "Declaration",
6245
6529
  children: ["let ", counterRef, " = 0"],
6530
+ decl: "let",
6246
6531
  names: []
6247
6532
  };
6248
6533
  blockPrefix.push(["", {
6249
6534
  type: "Declaration",
6250
6535
  children: [trimFirstSpace(ws2), decl2, " = ", counterRef, "++"],
6251
- names: decl2.names
6536
+ names: decl2.names,
6537
+ decl: decl2.decl
6252
6538
  }, ";"]);
6253
6539
  break;
6254
6540
  }
@@ -6258,7 +6544,8 @@ function processForInOf($0) {
6258
6544
  hoistDec = {
6259
6545
  type: "Declaration",
6260
6546
  children: ["let ", expRef2],
6261
- names: []
6547
+ names: [],
6548
+ decl: "let"
6262
6549
  };
6263
6550
  exp = {
6264
6551
  type: "AssignmentExpression",
@@ -6270,20 +6557,58 @@ function processForInOf($0) {
6270
6557
  blockPrefix.push(["", ["if (!", hasPropRef, "(", trimFirstSpace(expRef2), ", ", trimFirstSpace(pattern), ")) continue"], ";"]);
6271
6558
  }
6272
6559
  if (decl2) {
6273
- blockPrefix.push(["", {
6274
- type: "Declaration",
6560
+ const trimmedPattern = trimFirstSpace(pattern);
6561
+ const expression = makeNode({
6562
+ type: "MemberExpression",
6275
6563
  children: [
6276
- trimFirstSpace(ws2),
6277
- decl2,
6278
- " = ",
6279
6564
  trimFirstSpace(expRef2),
6280
- "[",
6281
- trimFirstSpace(pattern),
6282
- "]"
6283
- ],
6284
- decl: decl2,
6285
- names: decl2.names
6286
- }, ";"]);
6565
+ makeNode({
6566
+ type: "Index",
6567
+ expression: trimmedPattern,
6568
+ children: ["[", trimmedPattern, "]"]
6569
+ })
6570
+ ]
6571
+ });
6572
+ blockPrefix.push([
6573
+ "",
6574
+ (() => {
6575
+ if (decl2.type === "ForDeclaration") {
6576
+ const { binding: binding2, children } = decl2;
6577
+ binding2.children.push(binding2.initializer = makeNode({
6578
+ type: "Initializer",
6579
+ expression,
6580
+ children: [" = ", expression]
6581
+ }));
6582
+ return makeNode({
6583
+ type: "Declaration",
6584
+ children: [
6585
+ trimFirstSpace(ws2),
6586
+ ...children
6587
+ ],
6588
+ bindings: [decl2.binding],
6589
+ decl: decl2.decl,
6590
+ names: decl2.names
6591
+ });
6592
+ } else {
6593
+ return makeNode({
6594
+ type: "AssignmentExpression",
6595
+ children: [
6596
+ trimFirstSpace(ws2),
6597
+ decl2,
6598
+ " = ",
6599
+ trimFirstSpace(expRef2),
6600
+ "[",
6601
+ trimFirstSpace(pattern),
6602
+ "]"
6603
+ ],
6604
+ names: decl2.names,
6605
+ lhs: decl2,
6606
+ assigned: decl2
6607
+ });
6608
+ }
6609
+ })(),
6610
+ ";"
6611
+ ]);
6287
6612
  }
6288
6613
  ;
6289
6614
  break;
@@ -6813,7 +7138,7 @@ function processTryBlock($0) {
6813
7138
  const clauses = cs.map((clause) => {
6814
7139
  let ref1;
6815
7140
  if ((ref1 = clause.binding?.parameter) && typeof ref1 === "object" && "type" in ref1 && ref1.type === "CatchPattern" && "patterns" in ref1) {
6816
- const { type, patterns } = ref1;
7141
+ const { patterns } = ref1;
6817
7142
  return {
6818
7143
  type: "PatternClause",
6819
7144
  patterns,
@@ -7417,7 +7742,14 @@ function makeGetterMethod(name, ws, value, returnType, block, kind = { token: "g
7417
7742
  function processBindingPatternLHS(lhs, tail) {
7418
7743
  adjustAtBindings(lhs, true);
7419
7744
  const [splices, thisAssignments] = gatherBindingCode(lhs);
7420
- tail.push(...splices.map((s) => [", ", s]), ...thisAssignments.map((a) => [", ", a]));
7745
+ const subbindings = gatherSubbindings(lhs);
7746
+ simplifyBindingProperties(lhs);
7747
+ simplifyBindingProperties(subbindings);
7748
+ tail.push(
7749
+ ...splices.map((s) => [", ", s]),
7750
+ ...thisAssignments.map((a) => [", ", a]),
7751
+ ...subbindings
7752
+ );
7421
7753
  }
7422
7754
  function processAssignments(statements) {
7423
7755
  for (let ref7 = gatherRecursiveAll(statements, ($4) => $4.type === "AssignmentExpression" || $4.type === "UpdateExpression"), i5 = 0, len3 = ref7.length; i5 < len3; i5++) {
@@ -7502,7 +7834,7 @@ function processAssignments(statements) {
7502
7834
  let { lhs: $1, expression: $2 } = exp, tail = [], len3 = $1.length;
7503
7835
  let block;
7504
7836
  let ref12;
7505
- if (exp.parent?.type === "BlockStatement" && !(ref12 = $1[$1.length - 1])?.[ref12.length - 1]?.special) {
7837
+ if (blockContainingStatement(exp) && !(ref12 = $1[$1.length - 1])?.[ref12.length - 1]?.special) {
7506
7838
  block = makeBlockFragment();
7507
7839
  let ref13;
7508
7840
  if (ref13 = prependStatementExpressionBlock(
@@ -7586,7 +7918,7 @@ function processAssignments(statements) {
7586
7918
  message: "Slice range cannot be decreasing in assignment"
7587
7919
  });
7588
7920
  break;
7589
- } else if (m3 = lhs.type, m3 === "ObjectBindingPattern" || m3 === "ArrayBindingPattern") {
7921
+ } else if (m3 = lhs.type, m3 === "ObjectBindingPattern" || m3 === "ArrayBindingPattern" || m3 === "NamedBindingPattern") {
7590
7922
  processBindingPatternLHS(lhs, tail);
7591
7923
  gatherRecursiveAll(lhs, ($9) => $9.type === "Ref").forEach(refsToDeclare.add.bind(refsToDeclare));
7592
7924
  }
@@ -7735,7 +8067,7 @@ function processTypes(node) {
7735
8067
  while (suffixIndex >= 0) {
7736
8068
  const suffix = unary.suffix[suffixIndex];
7737
8069
  if (typeof suffix === "object" && suffix != null && "token" in suffix && suffix.token === "?") {
7738
- const { token } = suffix;
8070
+ const {} = suffix;
7739
8071
  let count = 0;
7740
8072
  let m4;
7741
8073
  while (m4 = unary.suffix[suffixIndex], typeof m4 === "object" && m4 != null && "token" in m4 && m4.token === "?") {
@@ -7793,7 +8125,7 @@ function processTypes(node) {
7793
8125
  }
7794
8126
  results2.push(replaceNode(unary, replace, parent));
7795
8127
  } else if (typeof suffix === "object" && suffix != null && "type" in suffix && suffix.type === "NonNullAssertion") {
7796
- const { type } = suffix;
8128
+ const {} = suffix;
7797
8129
  let m6;
7798
8130
  while (m6 = unary.suffix[suffixIndex], typeof m6 === "object" && m6 != null && "type" in m6 && m6.type === "NonNullAssertion") {
7799
8131
  unary.suffix.splice(suffixIndex--, 1);
@@ -8098,15 +8430,8 @@ function processProgram(root) {
8098
8430
  assert.equal(state2.forbidNewlineBinaryOp.length, 1, "forbidNewlineBinaryOp");
8099
8431
  assert.equal(state2.forbidTrailingMemberProperty.length, 1, "forbidTrailingMemberProperty");
8100
8432
  assert.equal(state2.JSXTagStack.length, 1, "JSXTagStack");
8101
- let rootIIFE;
8102
- if (config2.iife || config2.repl) {
8103
- rootIIFE = wrapIIFE(root.expressions, root.topLevelAwait);
8104
- const newExpressions = [["", rootIIFE]];
8105
- root.children = root.children.map(($16) => $16 === root.expressions ? newExpressions : $16);
8106
- root.expressions = newExpressions;
8107
- }
8108
8433
  addParentPointers(root);
8109
- const { expressions: statements } = root;
8434
+ let { expressions: statements } = root;
8110
8435
  processPlaceholders(statements);
8111
8436
  processNegativeIndexAccess(statements);
8112
8437
  processTypes(statements);
@@ -8119,12 +8444,25 @@ function processProgram(root) {
8119
8444
  processIterationExpressions(statements);
8120
8445
  processFinallyClauses(statements);
8121
8446
  processBreaksContinues(statements);
8447
+ root.topLevelAwait = hasAwait(statements);
8448
+ root.topLevelYield = hasYield(statements);
8449
+ let rootIIFE;
8450
+ if (config2.iife || config2.repl) {
8451
+ rootIIFE = wrapIIFE(
8452
+ root.expressions,
8453
+ root.topLevelAwait,
8454
+ root.topLevelYield ? "*" : void 0
8455
+ );
8456
+ statements = [["", rootIIFE]];
8457
+ root.children = root.children.map(($16) => $16 === root.expressions ? statements : $16);
8458
+ root.expressions = statements;
8459
+ }
8122
8460
  hoistRefDecs(statements);
8123
8461
  processFunctions(statements, config2);
8124
8462
  if (config2.coffeeClasses) {
8125
8463
  processCoffeeClasses(statements);
8126
8464
  }
8127
- statements.unshift(...state2.prelude);
8465
+ statements.unshift(...extractPreludeFor(statements));
8128
8466
  if (config2.autoLet) {
8129
8467
  createConstLetDecs(statements, [], "let");
8130
8468
  } else if (config2.autoConst) {
@@ -8185,30 +8523,10 @@ function processRepl(root, rootIIFE) {
8185
8523
  }
8186
8524
  }
8187
8525
  }
8188
- function populateRefs(statements) {
8189
- const refNodes = gatherRecursive(statements, ($21) => $21.type === "Ref");
8190
- if (refNodes.length) {
8191
- const ids = gatherRecursive(statements, (s) => s.type === "Identifier");
8192
- const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
8193
- refNodes.forEach((ref) => {
8194
- const { type, base } = ref;
8195
- if (type !== "Ref") return;
8196
- ref.type = "Identifier";
8197
- let n = 0;
8198
- let name = base;
8199
- while (names.has(name)) {
8200
- n++;
8201
- name = `${base}${n}`;
8202
- }
8203
- names.add(name);
8204
- return ref.children = ref.names = [name];
8205
- });
8206
- }
8207
- }
8208
8526
  function processPlaceholders(statements) {
8209
8527
  const placeholderMap = /* @__PURE__ */ new Map();
8210
8528
  const liftedIfs = /* @__PURE__ */ new Set();
8211
- for (let ref25 = gatherRecursiveAll(statements, ($22) => $22.type === "Placeholder"), i17 = 0, len14 = ref25.length; i17 < len14; i17++) {
8529
+ for (let ref25 = gatherRecursiveAll(statements, ($21) => $21.type === "Placeholder"), i17 = 0, len14 = ref25.length; i17 < len14; i17++) {
8212
8530
  const exp = ref25[i17];
8213
8531
  let ancestor;
8214
8532
  if (exp.subtype === ".") {
@@ -8505,6 +8823,8 @@ var grammar = {
8505
8823
  ExpressionizedStatement,
8506
8824
  StatementExpression,
8507
8825
  CommaExpression,
8826
+ CommaExpressionSpread,
8827
+ AssignmentExpressionSpread,
8508
8828
  Arguments,
8509
8829
  ImplicitArguments,
8510
8830
  ExplicitArguments,
@@ -8649,6 +8969,7 @@ var grammar = {
8649
8969
  NWBindingIdentifier,
8650
8970
  AtIdentifierRef,
8651
8971
  PinPattern,
8972
+ NamedBindingPattern,
8652
8973
  BindingPattern,
8653
8974
  ObjectBindingPattern,
8654
8975
  ObjectBindingPatternContent,
@@ -8684,6 +9005,7 @@ var grammar = {
8684
9005
  BareNestedBlock,
8685
9006
  BareBlock,
8686
9007
  ThenClause,
9008
+ ThenBlock,
8687
9009
  BracedThenClause,
8688
9010
  BracedOrEmptyBlock,
8689
9011
  NoCommaBracedOrEmptyBlock,
@@ -8793,6 +9115,7 @@ var grammar = {
8793
9115
  PostfixStatement,
8794
9116
  _PostfixStatement,
8795
9117
  Statement,
9118
+ IterationActualStatement,
8796
9119
  ShouldExpressionize,
8797
9120
  NoCommaStatement,
8798
9121
  EmptyStatement,
@@ -9448,130 +9771,132 @@ var $L119 = (0, import_lib2.$L)(";");
9448
9771
  var $L120 = (0, import_lib2.$L)("some");
9449
9772
  var $L121 = (0, import_lib2.$L)("every");
9450
9773
  var $L122 = (0, import_lib2.$L)("count");
9451
- var $L123 = (0, import_lib2.$L)("sum");
9452
- var $L124 = (0, import_lib2.$L)("product");
9453
- var $L125 = (0, import_lib2.$L)("min");
9454
- var $L126 = (0, import_lib2.$L)("max");
9455
- var $L127 = (0, import_lib2.$L)("join");
9456
- var $L128 = (0, import_lib2.$L)("break");
9457
- var $L129 = (0, import_lib2.$L)("continue");
9458
- var $L130 = (0, import_lib2.$L)("debugger");
9459
- var $L131 = (0, import_lib2.$L)("require");
9460
- var $L132 = (0, import_lib2.$L)("with");
9461
- var $L133 = (0, import_lib2.$L)("assert");
9462
- var $L134 = (0, import_lib2.$L)(":=");
9463
- var $L135 = (0, import_lib2.$L)("\u2254");
9464
- var $L136 = (0, import_lib2.$L)(".=");
9465
- var $L137 = (0, import_lib2.$L)("::=");
9466
- var $L138 = (0, import_lib2.$L)("/*");
9467
- var $L139 = (0, import_lib2.$L)("*/");
9468
- var $L140 = (0, import_lib2.$L)("\\");
9469
- var $L141 = (0, import_lib2.$L)(")");
9470
- var $L142 = (0, import_lib2.$L)("abstract");
9471
- var $L143 = (0, import_lib2.$L)("as");
9472
- var $L144 = (0, import_lib2.$L)("@");
9473
- var $L145 = (0, import_lib2.$L)("@@");
9474
- var $L146 = (0, import_lib2.$L)("async");
9475
- var $L147 = (0, import_lib2.$L)("await");
9476
- var $L148 = (0, import_lib2.$L)("`");
9477
- var $L149 = (0, import_lib2.$L)("by");
9478
- var $L150 = (0, import_lib2.$L)("case");
9479
- var $L151 = (0, import_lib2.$L)("catch");
9480
- var $L152 = (0, import_lib2.$L)("class");
9481
- var $L153 = (0, import_lib2.$L)("#{");
9482
- var $L154 = (0, import_lib2.$L)("comptime");
9483
- var $L155 = (0, import_lib2.$L)("declare");
9484
- var $L156 = (0, import_lib2.$L)("default");
9485
- var $L157 = (0, import_lib2.$L)("delete");
9486
- var $L158 = (0, import_lib2.$L)("do");
9487
- var $L159 = (0, import_lib2.$L)("..");
9488
- var $L160 = (0, import_lib2.$L)("\u2025");
9489
- var $L161 = (0, import_lib2.$L)("...");
9490
- var $L162 = (0, import_lib2.$L)("\u2026");
9491
- var $L163 = (0, import_lib2.$L)("::");
9492
- var $L164 = (0, import_lib2.$L)('"');
9493
- var $L165 = (0, import_lib2.$L)("each");
9494
- var $L166 = (0, import_lib2.$L)("else");
9495
- var $L167 = (0, import_lib2.$L)("!");
9496
- var $L168 = (0, import_lib2.$L)("export");
9497
- var $L169 = (0, import_lib2.$L)("extends");
9498
- var $L170 = (0, import_lib2.$L)("finally");
9499
- var $L171 = (0, import_lib2.$L)("for");
9500
- var $L172 = (0, import_lib2.$L)("from");
9501
- var $L173 = (0, import_lib2.$L)("function");
9502
- var $L174 = (0, import_lib2.$L)("get");
9503
- var $L175 = (0, import_lib2.$L)("set");
9504
- var $L176 = (0, import_lib2.$L)("#");
9505
- var $L177 = (0, import_lib2.$L)("if");
9506
- var $L178 = (0, import_lib2.$L)("in");
9507
- var $L179 = (0, import_lib2.$L)("infer");
9508
- var $L180 = (0, import_lib2.$L)("let");
9509
- var $L181 = (0, import_lib2.$L)("const");
9510
- var $L182 = (0, import_lib2.$L)("is");
9511
- var $L183 = (0, import_lib2.$L)("var");
9512
- var $L184 = (0, import_lib2.$L)("like");
9513
- var $L185 = (0, import_lib2.$L)("loop");
9514
- var $L186 = (0, import_lib2.$L)("new");
9515
- var $L187 = (0, import_lib2.$L)("not");
9516
- var $L188 = (0, import_lib2.$L)("of");
9517
- var $L189 = (0, import_lib2.$L)("[");
9518
- var $L190 = (0, import_lib2.$L)("operator");
9519
- var $L191 = (0, import_lib2.$L)("override");
9520
- var $L192 = (0, import_lib2.$L)("own");
9521
- var $L193 = (0, import_lib2.$L)("public");
9522
- var $L194 = (0, import_lib2.$L)("private");
9523
- var $L195 = (0, import_lib2.$L)("protected");
9524
- var $L196 = (0, import_lib2.$L)("||>");
9525
- var $L197 = (0, import_lib2.$L)("|\u25B7");
9526
- var $L198 = (0, import_lib2.$L)("|>=");
9527
- var $L199 = (0, import_lib2.$L)("\u25B7=");
9528
- var $L200 = (0, import_lib2.$L)("|>");
9529
- var $L201 = (0, import_lib2.$L)("\u25B7");
9530
- var $L202 = (0, import_lib2.$L)("readonly");
9531
- var $L203 = (0, import_lib2.$L)("return");
9532
- var $L204 = (0, import_lib2.$L)("satisfies");
9533
- var $L205 = (0, import_lib2.$L)("'");
9534
- var $L206 = (0, import_lib2.$L)("static");
9535
- var $L207 = (0, import_lib2.$L)("${");
9536
- var $L208 = (0, import_lib2.$L)("super");
9537
- var $L209 = (0, import_lib2.$L)("switch");
9538
- var $L210 = (0, import_lib2.$L)("target");
9539
- var $L211 = (0, import_lib2.$L)("then");
9540
- var $L212 = (0, import_lib2.$L)("this");
9541
- var $L213 = (0, import_lib2.$L)("throw");
9542
- var $L214 = (0, import_lib2.$L)('"""');
9543
- var $L215 = (0, import_lib2.$L)("'''");
9544
- var $L216 = (0, import_lib2.$L)("///");
9545
- var $L217 = (0, import_lib2.$L)("```");
9546
- var $L218 = (0, import_lib2.$L)("try");
9547
- var $L219 = (0, import_lib2.$L)("typeof");
9548
- var $L220 = (0, import_lib2.$L)("undefined");
9549
- var $L221 = (0, import_lib2.$L)("unless");
9550
- var $L222 = (0, import_lib2.$L)("until");
9551
- var $L223 = (0, import_lib2.$L)("using");
9552
- var $L224 = (0, import_lib2.$L)("void");
9553
- var $L225 = (0, import_lib2.$L)("when");
9554
- var $L226 = (0, import_lib2.$L)("while");
9555
- var $L227 = (0, import_lib2.$L)("yield");
9556
- var $L228 = (0, import_lib2.$L)("/>");
9557
- var $L229 = (0, import_lib2.$L)("</");
9558
- var $L230 = (0, import_lib2.$L)("<>");
9559
- var $L231 = (0, import_lib2.$L)("</>");
9560
- var $L232 = (0, import_lib2.$L)("<!--");
9561
- var $L233 = (0, import_lib2.$L)("-->");
9562
- var $L234 = (0, import_lib2.$L)("type");
9563
- var $L235 = (0, import_lib2.$L)("enum");
9564
- var $L236 = (0, import_lib2.$L)("interface");
9565
- var $L237 = (0, import_lib2.$L)("global");
9566
- var $L238 = (0, import_lib2.$L)("module");
9567
- var $L239 = (0, import_lib2.$L)("namespace");
9568
- var $L240 = (0, import_lib2.$L)("asserts");
9569
- var $L241 = (0, import_lib2.$L)("keyof");
9570
- var $L242 = (0, import_lib2.$L)("???");
9571
- var $L243 = (0, import_lib2.$L)("unique");
9572
- var $L244 = (0, import_lib2.$L)("symbol");
9573
- var $L245 = (0, import_lib2.$L)("[]");
9574
- var $L246 = (0, import_lib2.$L)("civet");
9774
+ var $L123 = (0, import_lib2.$L)("first");
9775
+ var $L124 = (0, import_lib2.$L)("sum");
9776
+ var $L125 = (0, import_lib2.$L)("product");
9777
+ var $L126 = (0, import_lib2.$L)("min");
9778
+ var $L127 = (0, import_lib2.$L)("max");
9779
+ var $L128 = (0, import_lib2.$L)("join");
9780
+ var $L129 = (0, import_lib2.$L)("concat");
9781
+ var $L130 = (0, import_lib2.$L)("break");
9782
+ var $L131 = (0, import_lib2.$L)("continue");
9783
+ var $L132 = (0, import_lib2.$L)("debugger");
9784
+ var $L133 = (0, import_lib2.$L)("require");
9785
+ var $L134 = (0, import_lib2.$L)("with");
9786
+ var $L135 = (0, import_lib2.$L)("assert");
9787
+ var $L136 = (0, import_lib2.$L)(":=");
9788
+ var $L137 = (0, import_lib2.$L)("\u2254");
9789
+ var $L138 = (0, import_lib2.$L)(".=");
9790
+ var $L139 = (0, import_lib2.$L)("::=");
9791
+ var $L140 = (0, import_lib2.$L)("/*");
9792
+ var $L141 = (0, import_lib2.$L)("*/");
9793
+ var $L142 = (0, import_lib2.$L)("\\");
9794
+ var $L143 = (0, import_lib2.$L)(")");
9795
+ var $L144 = (0, import_lib2.$L)("abstract");
9796
+ var $L145 = (0, import_lib2.$L)("as");
9797
+ var $L146 = (0, import_lib2.$L)("@");
9798
+ var $L147 = (0, import_lib2.$L)("@@");
9799
+ var $L148 = (0, import_lib2.$L)("async");
9800
+ var $L149 = (0, import_lib2.$L)("await");
9801
+ var $L150 = (0, import_lib2.$L)("`");
9802
+ var $L151 = (0, import_lib2.$L)("by");
9803
+ var $L152 = (0, import_lib2.$L)("case");
9804
+ var $L153 = (0, import_lib2.$L)("catch");
9805
+ var $L154 = (0, import_lib2.$L)("class");
9806
+ var $L155 = (0, import_lib2.$L)("#{");
9807
+ var $L156 = (0, import_lib2.$L)("comptime");
9808
+ var $L157 = (0, import_lib2.$L)("declare");
9809
+ var $L158 = (0, import_lib2.$L)("default");
9810
+ var $L159 = (0, import_lib2.$L)("delete");
9811
+ var $L160 = (0, import_lib2.$L)("do");
9812
+ var $L161 = (0, import_lib2.$L)("..");
9813
+ var $L162 = (0, import_lib2.$L)("\u2025");
9814
+ var $L163 = (0, import_lib2.$L)("...");
9815
+ var $L164 = (0, import_lib2.$L)("\u2026");
9816
+ var $L165 = (0, import_lib2.$L)("::");
9817
+ var $L166 = (0, import_lib2.$L)('"');
9818
+ var $L167 = (0, import_lib2.$L)("each");
9819
+ var $L168 = (0, import_lib2.$L)("else");
9820
+ var $L169 = (0, import_lib2.$L)("!");
9821
+ var $L170 = (0, import_lib2.$L)("export");
9822
+ var $L171 = (0, import_lib2.$L)("extends");
9823
+ var $L172 = (0, import_lib2.$L)("finally");
9824
+ var $L173 = (0, import_lib2.$L)("for");
9825
+ var $L174 = (0, import_lib2.$L)("from");
9826
+ var $L175 = (0, import_lib2.$L)("function");
9827
+ var $L176 = (0, import_lib2.$L)("get");
9828
+ var $L177 = (0, import_lib2.$L)("set");
9829
+ var $L178 = (0, import_lib2.$L)("#");
9830
+ var $L179 = (0, import_lib2.$L)("if");
9831
+ var $L180 = (0, import_lib2.$L)("in");
9832
+ var $L181 = (0, import_lib2.$L)("infer");
9833
+ var $L182 = (0, import_lib2.$L)("let");
9834
+ var $L183 = (0, import_lib2.$L)("const");
9835
+ var $L184 = (0, import_lib2.$L)("is");
9836
+ var $L185 = (0, import_lib2.$L)("var");
9837
+ var $L186 = (0, import_lib2.$L)("like");
9838
+ var $L187 = (0, import_lib2.$L)("loop");
9839
+ var $L188 = (0, import_lib2.$L)("new");
9840
+ var $L189 = (0, import_lib2.$L)("not");
9841
+ var $L190 = (0, import_lib2.$L)("of");
9842
+ var $L191 = (0, import_lib2.$L)("[");
9843
+ var $L192 = (0, import_lib2.$L)("operator");
9844
+ var $L193 = (0, import_lib2.$L)("override");
9845
+ var $L194 = (0, import_lib2.$L)("own");
9846
+ var $L195 = (0, import_lib2.$L)("public");
9847
+ var $L196 = (0, import_lib2.$L)("private");
9848
+ var $L197 = (0, import_lib2.$L)("protected");
9849
+ var $L198 = (0, import_lib2.$L)("||>");
9850
+ var $L199 = (0, import_lib2.$L)("|\u25B7");
9851
+ var $L200 = (0, import_lib2.$L)("|>=");
9852
+ var $L201 = (0, import_lib2.$L)("\u25B7=");
9853
+ var $L202 = (0, import_lib2.$L)("|>");
9854
+ var $L203 = (0, import_lib2.$L)("\u25B7");
9855
+ var $L204 = (0, import_lib2.$L)("readonly");
9856
+ var $L205 = (0, import_lib2.$L)("return");
9857
+ var $L206 = (0, import_lib2.$L)("satisfies");
9858
+ var $L207 = (0, import_lib2.$L)("'");
9859
+ var $L208 = (0, import_lib2.$L)("static");
9860
+ var $L209 = (0, import_lib2.$L)("${");
9861
+ var $L210 = (0, import_lib2.$L)("super");
9862
+ var $L211 = (0, import_lib2.$L)("switch");
9863
+ var $L212 = (0, import_lib2.$L)("target");
9864
+ var $L213 = (0, import_lib2.$L)("then");
9865
+ var $L214 = (0, import_lib2.$L)("this");
9866
+ var $L215 = (0, import_lib2.$L)("throw");
9867
+ var $L216 = (0, import_lib2.$L)('"""');
9868
+ var $L217 = (0, import_lib2.$L)("'''");
9869
+ var $L218 = (0, import_lib2.$L)("///");
9870
+ var $L219 = (0, import_lib2.$L)("```");
9871
+ var $L220 = (0, import_lib2.$L)("try");
9872
+ var $L221 = (0, import_lib2.$L)("typeof");
9873
+ var $L222 = (0, import_lib2.$L)("undefined");
9874
+ var $L223 = (0, import_lib2.$L)("unless");
9875
+ var $L224 = (0, import_lib2.$L)("until");
9876
+ var $L225 = (0, import_lib2.$L)("using");
9877
+ var $L226 = (0, import_lib2.$L)("void");
9878
+ var $L227 = (0, import_lib2.$L)("when");
9879
+ var $L228 = (0, import_lib2.$L)("while");
9880
+ var $L229 = (0, import_lib2.$L)("yield");
9881
+ var $L230 = (0, import_lib2.$L)("/>");
9882
+ var $L231 = (0, import_lib2.$L)("</");
9883
+ var $L232 = (0, import_lib2.$L)("<>");
9884
+ var $L233 = (0, import_lib2.$L)("</>");
9885
+ var $L234 = (0, import_lib2.$L)("<!--");
9886
+ var $L235 = (0, import_lib2.$L)("-->");
9887
+ var $L236 = (0, import_lib2.$L)("type");
9888
+ var $L237 = (0, import_lib2.$L)("enum");
9889
+ var $L238 = (0, import_lib2.$L)("interface");
9890
+ var $L239 = (0, import_lib2.$L)("global");
9891
+ var $L240 = (0, import_lib2.$L)("module");
9892
+ var $L241 = (0, import_lib2.$L)("namespace");
9893
+ var $L242 = (0, import_lib2.$L)("asserts");
9894
+ var $L243 = (0, import_lib2.$L)("keyof");
9895
+ var $L244 = (0, import_lib2.$L)("???");
9896
+ var $L245 = (0, import_lib2.$L)("unique");
9897
+ var $L246 = (0, import_lib2.$L)("symbol");
9898
+ var $L247 = (0, import_lib2.$L)("[]");
9899
+ var $L248 = (0, import_lib2.$L)("civet");
9575
9900
  var $R0 = (0, import_lib2.$R)(new RegExp("(?=async|debugger|if|unless|comptime|do|for|loop|until|while|switch|throw|try)", "suy"));
9576
9901
  var $R1 = (0, import_lib2.$R)(new RegExp("&(?=\\s)", "suy"));
9577
9902
  var $R2 = (0, import_lib2.$R)(new RegExp("(as|of|by|satisfies|then|when|implements|xor|xnor)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
@@ -9687,8 +10012,7 @@ var Program$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Reset, Init, (0, import
9687
10012
  expressions: statements,
9688
10013
  children: [reset, init, ws1, statements, ws2],
9689
10014
  bare: true,
9690
- root: true,
9691
- topLevelAwait: hasAwait(statements)
10015
+ root: true
9692
10016
  };
9693
10017
  processProgram(program);
9694
10018
  return program;
@@ -9815,6 +10139,71 @@ var CommaExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(AssignmentExpre
9815
10139
  function CommaExpression(ctx, state2) {
9816
10140
  return (0, import_lib2.$EVENT)(ctx, state2, "CommaExpression", CommaExpression$0);
9817
10141
  }
10142
+ var CommaExpressionSpread$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, (0, import_lib2.$E)(_), IterationActualStatement), function($skip, $loc, $0, $1, $2, $3, $4) {
10143
+ var ws = $1;
10144
+ var ws2 = $3;
10145
+ var iteration = $4;
10146
+ if (iteration.subtype === "do" || iteration.subtype === "comptime") return $skip;
10147
+ if (ws2) {
10148
+ if (ws) {
10149
+ ws = [ws, ws2];
10150
+ } else {
10151
+ ws = ws2;
10152
+ }
10153
+ }
10154
+ iteration = { ...iteration, resultsParent: true };
10155
+ return prepend(ws, iteration);
10156
+ });
10157
+ var CommaExpressionSpread$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(AssignmentExpressionSpread, (0, import_lib2.$Q)((0, import_lib2.$S)(CommaDelimiter, AssignmentExpressionSpread))), function($skip, $loc, $0, $1, $2) {
10158
+ if ($2.length == 0) return $1;
10159
+ return $0;
10160
+ });
10161
+ var CommaExpressionSpread$$ = [CommaExpressionSpread$0, CommaExpressionSpread$1];
10162
+ function CommaExpressionSpread(ctx, state2) {
10163
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "CommaExpressionSpread", CommaExpressionSpread$$);
10164
+ }
10165
+ var AssignmentExpressionSpread$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3) {
10166
+ var expression = $3;
10167
+ return {
10168
+ type: "SpreadElement",
10169
+ children: $0,
10170
+ expression,
10171
+ names: expression.names
10172
+ };
10173
+ });
10174
+ var AssignmentExpressionSpread$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(AssignmentExpression, (0, import_lib2.$E)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot))), function($skip, $loc, $0, $1, $2) {
10175
+ var expression = $1;
10176
+ if (!$2) return $1;
10177
+ return {
10178
+ type: "SpreadElement",
10179
+ children: [...$2, $1],
10180
+ expression,
10181
+ names: expression.names
10182
+ };
10183
+ });
10184
+ var AssignmentExpressionSpread$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3) {
10185
+ var expression = $3;
10186
+ return {
10187
+ type: "SpreadElement",
10188
+ children: $0,
10189
+ expression,
10190
+ names: expression.names
10191
+ };
10192
+ });
10193
+ var AssignmentExpressionSpread$3 = (0, import_lib2.$TS)((0, import_lib2.$S)(AssignmentExpression, (0, import_lib2.$E)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot))), function($skip, $loc, $0, $1, $2) {
10194
+ var expression = $1;
10195
+ if (!$2) return $1;
10196
+ return {
10197
+ type: "SpreadElement",
10198
+ children: [...$2, $1],
10199
+ expression,
10200
+ names: expression.names
10201
+ };
10202
+ });
10203
+ var AssignmentExpressionSpread$$ = [AssignmentExpressionSpread$0, AssignmentExpressionSpread$1, AssignmentExpressionSpread$2, AssignmentExpressionSpread$3];
10204
+ function AssignmentExpressionSpread(ctx, state2) {
10205
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "AssignmentExpressionSpread", AssignmentExpressionSpread$$);
10206
+ }
9818
10207
  var Arguments$0 = ExplicitArguments;
9819
10208
  var Arguments$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(ForbidTrailingMemberProperty, (0, import_lib2.$E)(ImplicitArguments), RestoreTrailingMemberProperty), function($skip, $loc, $0, $1, $2, $3) {
9820
10209
  var args = $2;
@@ -11130,8 +11519,9 @@ var LeftHandSideExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, impo
11130
11519
  expression
11131
11520
  };
11132
11521
  });
11133
- var LeftHandSideExpression$1 = CallExpression;
11134
- var LeftHandSideExpression$$ = [LeftHandSideExpression$0, LeftHandSideExpression$1];
11522
+ var LeftHandSideExpression$1 = NamedBindingPattern;
11523
+ var LeftHandSideExpression$2 = CallExpression;
11524
+ var LeftHandSideExpression$$ = [LeftHandSideExpression$0, LeftHandSideExpression$1, LeftHandSideExpression$2];
11135
11525
  function LeftHandSideExpression(ctx, state2) {
11136
11526
  return (0, import_lib2.$EVENT_C)(ctx, state2, "LeftHandSideExpression", LeftHandSideExpression$$);
11137
11527
  }
@@ -11754,7 +12144,7 @@ var FunctionRestParameter$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, impor
11754
12144
  function FunctionRestParameter(ctx, state2) {
11755
12145
  return (0, import_lib2.$EVENT)(ctx, state2, "FunctionRestParameter", FunctionRestParameter$0);
11756
12146
  }
11757
- var ParameterElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$E)(AccessModifier), (0, import_lib2.$E)(_), (0, import_lib2.$C)(NWBindingIdentifier, BindingPattern), (0, import_lib2.$E)(TypeSuffix), (0, import_lib2.$E)(Initializer), ParameterElementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
12147
+ var ParameterElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$E)(AccessModifier), (0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingPattern, NWBindingIdentifier), (0, import_lib2.$E)(TypeSuffix), (0, import_lib2.$E)(Initializer), ParameterElementDelimiter), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7) {
11758
12148
  var accessModifier = $2;
11759
12149
  var binding = $4;
11760
12150
  var typeSuffix = $5;
@@ -11867,12 +12257,31 @@ var PinPattern$$ = [PinPattern$0, PinPattern$1, PinPattern$2, PinPattern$3];
11867
12257
  function PinPattern(ctx, state2) {
11868
12258
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PinPattern", PinPattern$$);
11869
12259
  }
12260
+ var NamedBindingPattern$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(BindingIdentifier, Caret, (0, import_lib2.$E)(_), BindingPattern), function($skip, $loc, $0, $1, $2, $3, $4) {
12261
+ var binding = $1;
12262
+ var ws = $3;
12263
+ var pattern = $4;
12264
+ pattern = prepend(ws, pattern);
12265
+ return {
12266
+ type: "NamedBindingPattern",
12267
+ // NOTE: children just has binding, not pattern, for easy destructuring
12268
+ children: [binding],
12269
+ binding,
12270
+ pattern,
12271
+ subbinding: [pattern, " = ", binding],
12272
+ typeSuffix: pattern.typeSuffix
12273
+ };
12274
+ });
12275
+ function NamedBindingPattern(ctx, state2) {
12276
+ return (0, import_lib2.$EVENT)(ctx, state2, "NamedBindingPattern", NamedBindingPattern$0);
12277
+ }
11870
12278
  var BindingPattern$0 = ObjectBindingPattern;
11871
12279
  var BindingPattern$1 = ArrayBindingPattern;
11872
12280
  var BindingPattern$2 = PinPattern;
11873
12281
  var BindingPattern$3 = Literal;
11874
12282
  var BindingPattern$4 = RegularExpressionLiteral;
11875
- var BindingPattern$$ = [BindingPattern$0, BindingPattern$1, BindingPattern$2, BindingPattern$3, BindingPattern$4];
12283
+ var BindingPattern$5 = NamedBindingPattern;
12284
+ var BindingPattern$$ = [BindingPattern$0, BindingPattern$1, BindingPattern$2, BindingPattern$3, BindingPattern$4, BindingPattern$5];
11876
12285
  function BindingPattern(ctx, state2) {
11877
12286
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BindingPattern", BindingPattern$$);
11878
12287
  }
@@ -11996,14 +12405,32 @@ function NestedBindingPropertyList(ctx, state2) {
11996
12405
  return (0, import_lib2.$EVENT)(ctx, state2, "NestedBindingPropertyList", NestedBindingPropertyList$0);
11997
12406
  }
11998
12407
  var BindingProperty$0 = BindingRestProperty;
11999
- var BindingProperty$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), PropertyName, (0, import_lib2.$E)(_), Colon, (0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingIdentifier, BindingPattern), (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8) {
12408
+ var BindingProperty$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), PropertyName, (0, import_lib2.$E)(Caret), (0, import_lib2.$E)(_), Colon, (0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingPattern, BindingIdentifier), (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
12409
+ var ws1 = $1;
12000
12410
  var name = $2;
12001
- var value = $6;
12002
- var typeSuffix = $7;
12003
- var initializer = $8;
12411
+ var bind = $3;
12412
+ var ws2 = $4;
12413
+ var colon = $5;
12414
+ var ws3 = $6;
12415
+ var value = $7;
12416
+ var typeSuffix = $8;
12417
+ var initializer = $9;
12418
+ if (bind) {
12419
+ const binding = name, pattern = value;
12420
+ value = {
12421
+ type: "NamedBindingPattern",
12422
+ // NOTE: children just has binding, not pattern, for easy destructuring
12423
+ children: [binding],
12424
+ binding,
12425
+ pattern,
12426
+ subbinding: [pattern, " = ", binding],
12427
+ typeSuffix: pattern.typeSuffix,
12428
+ names: value.names
12429
+ };
12430
+ }
12004
12431
  return {
12005
12432
  type: "BindingProperty",
12006
- children: [$1, name, $3, $4, $5, value, initializer],
12433
+ children: [ws1, name, ws2, colon, ws3, value, initializer],
12007
12434
  // omit typeSuffix
12008
12435
  name,
12009
12436
  value,
@@ -12012,13 +12439,49 @@ var BindingProperty$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2
12012
12439
  names: value.names
12013
12440
  };
12014
12441
  });
12015
- var BindingProperty$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$E)(Caret), BindingIdentifier, (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12442
+ var BindingProperty$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), Caret, BindingIdentifier, (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12016
12443
  var ws = $1;
12017
12444
  var pin = $2;
12018
12445
  var binding = $3;
12019
12446
  var typeSuffix = $4;
12020
12447
  var initializer = $5;
12021
- let children = [ws, binding, initializer];
12448
+ const children = [ws, binding];
12449
+ if (binding.type === "AtBinding") {
12450
+ children.push({
12451
+ type: "Error",
12452
+ message: "Pinned properties do not yet work with @binding"
12453
+ });
12454
+ }
12455
+ if (typeSuffix) {
12456
+ children.push({
12457
+ type: "Error",
12458
+ message: "Pinned properties cannot have type annotations"
12459
+ });
12460
+ }
12461
+ if (initializer) {
12462
+ children.push({
12463
+ type: "Error",
12464
+ message: "Pinned properties cannot have initializers"
12465
+ });
12466
+ }
12467
+ return {
12468
+ type: "PinProperty",
12469
+ children,
12470
+ name: binding,
12471
+ value: {
12472
+ type: "PinPattern",
12473
+ children: [binding],
12474
+ expression: binding
12475
+ }
12476
+ };
12477
+ });
12478
+ var BindingProperty$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), BindingIdentifier, (0, import_lib2.$E)(Caret), (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
12479
+ var ws = $1;
12480
+ var binding = $2;
12481
+ var bind = $3;
12482
+ var typeSuffix = $4;
12483
+ var initializer = $5;
12484
+ const children = [ws, binding, initializer];
12022
12485
  if (binding.type === "AtBinding") {
12023
12486
  return {
12024
12487
  type: "AtBindingProperty",
@@ -12030,31 +12493,6 @@ var BindingProperty$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2
12030
12493
  names: []
12031
12494
  };
12032
12495
  }
12033
- if (pin) {
12034
- children = [ws, binding];
12035
- if (typeSuffix) {
12036
- children.push({
12037
- type: "Error",
12038
- message: "Pinned properties cannot have type annotations"
12039
- });
12040
- }
12041
- if (initializer) {
12042
- children.push({
12043
- type: "Error",
12044
- message: "Pinned properties cannot have initializers"
12045
- });
12046
- }
12047
- return {
12048
- type: "PinProperty",
12049
- children,
12050
- name: binding,
12051
- value: {
12052
- type: "PinPattern",
12053
- children: [binding],
12054
- expression: binding
12055
- }
12056
- };
12057
- }
12058
12496
  return {
12059
12497
  type: "BindingProperty",
12060
12498
  children,
@@ -12066,7 +12504,7 @@ var BindingProperty$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2
12066
12504
  identifier: binding
12067
12505
  };
12068
12506
  });
12069
- var BindingProperty$$ = [BindingProperty$0, BindingProperty$1, BindingProperty$2];
12507
+ var BindingProperty$$ = [BindingProperty$0, BindingProperty$1, BindingProperty$2, BindingProperty$3];
12070
12508
  function BindingProperty(ctx, state2) {
12071
12509
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BindingProperty", BindingProperty$$);
12072
12510
  }
@@ -12121,7 +12559,7 @@ function NestedBindingElements(ctx, state2) {
12121
12559
  return (0, import_lib2.$EVENT)(ctx, state2, "NestedBindingElements", NestedBindingElements$0);
12122
12560
  }
12123
12561
  var BindingElement$0 = BindingRestElement;
12124
- var BindingElement$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingIdentifier, BindingPattern), (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4) {
12562
+ var BindingElement$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingPattern, BindingIdentifier), (0, import_lib2.$E)(BindingTypeSuffix), (0, import_lib2.$E)(Initializer)), function($skip, $loc, $0, $1, $2, $3, $4) {
12125
12563
  var ws = $1;
12126
12564
  var binding = $2;
12127
12565
  var typeSuffix = $3;
@@ -12146,7 +12584,7 @@ var BindingElement$$ = [BindingElement$0, BindingElement$1, BindingElement$2];
12146
12584
  function BindingElement(ctx, state2) {
12147
12585
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BindingElement", BindingElement$$);
12148
12586
  }
12149
- var BindingRestElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, (0, import_lib2.$C)(BindingIdentifier, BindingPattern, EmptyBindingPattern), (0, import_lib2.$E)(BindingTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4) {
12587
+ var BindingRestElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, (0, import_lib2.$C)(BindingPattern, BindingIdentifier, EmptyBindingPattern), (0, import_lib2.$E)(BindingTypeSuffix)), function($skip, $loc, $0, $1, $2, $3, $4) {
12150
12588
  var ws = $1;
12151
12589
  var dots = $2;
12152
12590
  var binding = $3;
@@ -12162,7 +12600,7 @@ var BindingRestElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
12162
12600
  rest: true
12163
12601
  };
12164
12602
  });
12165
- var BindingRestElement$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingIdentifier, BindingPattern), DotDotDot), function($skip, $loc, $0, $1, $2, $3) {
12603
+ var BindingRestElement$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$C)(BindingPattern, BindingIdentifier), DotDotDot), function($skip, $loc, $0, $1, $2, $3) {
12166
12604
  var ws = $1;
12167
12605
  var binding = $2;
12168
12606
  var dots = $3;
@@ -12632,12 +13070,21 @@ var BareBlock$$ = [BareBlock$0, BareBlock$1, BareBlock$2, BareBlock$3, BareBlock
12632
13070
  function BareBlock(ctx, state2) {
12633
13071
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BareBlock", BareBlock$$);
12634
13072
  }
12635
- var ThenClause$0 = (0, import_lib2.$T)((0, import_lib2.$S)(Then, SingleLineStatements), function(value) {
13073
+ var ThenClause$0 = (0, import_lib2.$T)((0, import_lib2.$S)(Then, ThenBlock), function(value) {
12636
13074
  return value[1];
12637
13075
  });
12638
13076
  function ThenClause(ctx, state2) {
12639
13077
  return (0, import_lib2.$EVENT)(ctx, state2, "ThenClause", ThenClause$0);
12640
13078
  }
13079
+ var ThenBlock$0 = (0, import_lib2.$T)((0, import_lib2.$S)(NoBlock, EmptyBlock), function(value) {
13080
+ return value[1];
13081
+ });
13082
+ var ThenBlock$1 = ImplicitNestedBlock;
13083
+ var ThenBlock$2 = SingleLineStatements;
13084
+ var ThenBlock$$ = [ThenBlock$0, ThenBlock$1, ThenBlock$2];
13085
+ function ThenBlock(ctx, state2) {
13086
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "ThenBlock", ThenBlock$$);
13087
+ }
12641
13088
  var BracedThenClause$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$Y)(Then), InsertOpenBrace, ThenClause, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4) {
12642
13089
  var open = $2;
12643
13090
  var exp = $3;
@@ -13162,9 +13609,9 @@ function RangeEnd(ctx, state2) {
13162
13609
  var RangeExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Expression, __, RangeDots, Expression), function($skip, $loc, $0, $1, $2, $3, $4) {
13163
13610
  var start = $1;
13164
13611
  var ws = $2;
13165
- var range = $3;
13612
+ var range2 = $3;
13166
13613
  var end = $4;
13167
- return processRangeExpression(start, ws, range, end);
13614
+ return processRangeExpression(start, ws, range2, end);
13168
13615
  });
13169
13616
  var RangeExpression$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(Expression, __, DotDot, (0, import_lib2.$Y)((0, import_lib2.$S)(__, CloseBracket))), function($skip, $loc, $0, $1, $2, $3, $4) {
13170
13617
  var s = $1;
@@ -14649,11 +15096,7 @@ var Statement$1 = VariableStatement;
14649
15096
  var Statement$2 = (0, import_lib2.$T)((0, import_lib2.$S)(IfStatement, (0, import_lib2.$N)(ShouldExpressionize)), function(value) {
14650
15097
  return value[0];
14651
15098
  });
14652
- var Statement$3 = (0, import_lib2.$TS)((0, import_lib2.$S)(IterationStatement, (0, import_lib2.$N)(ShouldExpressionize)), function($skip, $loc, $0, $1, $2) {
14653
- if ($1.generator) return $skip;
14654
- if ($1.reduction) return $skip;
14655
- return $1;
14656
- });
15099
+ var Statement$3 = IterationActualStatement;
14657
15100
  var Statement$4 = (0, import_lib2.$T)((0, import_lib2.$S)(SwitchStatement, (0, import_lib2.$N)(ShouldExpressionize)), function(value) {
14658
15101
  return value[0];
14659
15102
  });
@@ -14669,6 +15112,14 @@ var Statement$$ = [Statement$0, Statement$1, Statement$2, Statement$3, Statement
14669
15112
  function Statement(ctx, state2) {
14670
15113
  return (0, import_lib2.$EVENT_C)(ctx, state2, "Statement", Statement$$);
14671
15114
  }
15115
+ var IterationActualStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(IterationStatement, (0, import_lib2.$N)(ShouldExpressionize)), function($skip, $loc, $0, $1, $2) {
15116
+ if ($1.generator) return $skip;
15117
+ if ($1.reduction) return $skip;
15118
+ return $1;
15119
+ });
15120
+ function IterationActualStatement(ctx, state2) {
15121
+ return (0, import_lib2.$EVENT)(ctx, state2, "IterationActualStatement", IterationActualStatement$0);
15122
+ }
14672
15123
  var ShouldExpressionize$0 = AllowedTrailingCallExpressions;
14673
15124
  var ShouldExpressionize$1 = (0, import_lib2.$S)(NotDedented, Pipe);
14674
15125
  var ShouldExpressionize$2 = BinaryOpRHS;
@@ -14771,12 +15222,12 @@ var LabelledItem$$ = [LabelledItem$0, LabelledItem$1];
14771
15222
  function LabelledItem(ctx, state2) {
14772
15223
  return (0, import_lib2.$EVENT_C)(ctx, state2, "LabelledItem", LabelledItem$$);
14773
15224
  }
14774
- var IfStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)(If, Unless), (0, import_lib2.$E)(_), BoundedCondition, Then, BlockOrEmpty, (0, import_lib2.$E)(ElseClause)), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
15225
+ var IfStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)(If, Unless), (0, import_lib2.$E)(_), BoundedCondition, ThenClause, (0, import_lib2.$E)(ElseClause)), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
14775
15226
  var kind = $1;
14776
15227
  var ws = $2;
14777
15228
  var condition = $3;
14778
- var block = $5;
14779
- var e = $6;
15229
+ var block = $4;
15230
+ var e = $5;
14780
15231
  if (kind.negated) {
14781
15232
  kind = { ...kind, token: "if" };
14782
15233
  condition = negateCondition(condition);
@@ -15020,15 +15471,18 @@ function ForStatement(ctx, state2) {
15020
15471
  var ForClause$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(For, (0, import_lib2.$E)((0, import_lib2.$S)((0, import_lib2.$E)(_), Star)), __, ForStatementControlWithWhen), function($skip, $loc, $0, $1, $2, $3, $4) {
15021
15472
  var generator = $2;
15022
15473
  var c = $4;
15023
- const { children, declaration } = c;
15474
+ let { children, reduction } = c;
15475
+ if (generator && reduction) {
15476
+ children = [{
15477
+ type: "Error",
15478
+ message: `Cannot use reduction (${reduction.subtype}) with generators`
15479
+ }, ...children];
15480
+ }
15024
15481
  return {
15482
+ ...c,
15025
15483
  type: "ForStatement",
15026
15484
  children: [$1, ...$3, ...children],
15027
- declaration,
15028
15485
  block: null,
15029
- blockPrefix: c.blockPrefix,
15030
- hoistDec: c.hoistDec,
15031
- reduction: c.reduction,
15032
15486
  generator
15033
15487
  };
15034
15488
  });
@@ -15074,7 +15528,7 @@ var ForStatementControlWithReduction$$ = [ForStatementControlWithReduction$0, Fo
15074
15528
  function ForStatementControlWithReduction(ctx, state2) {
15075
15529
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ForStatementControlWithReduction", ForStatementControlWithReduction$$);
15076
15530
  }
15077
- var ForReduction$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L120, 'ForReduction "some"'), (0, import_lib2.$EXPECT)($L121, 'ForReduction "every"'), (0, import_lib2.$EXPECT)($L122, 'ForReduction "count"'), (0, import_lib2.$EXPECT)($L123, 'ForReduction "sum"'), (0, import_lib2.$EXPECT)($L124, 'ForReduction "product"'), (0, import_lib2.$EXPECT)($L125, 'ForReduction "min"'), (0, import_lib2.$EXPECT)($L126, 'ForReduction "max"'), (0, import_lib2.$EXPECT)($L127, 'ForReduction "join"')), NonIdContinue, __), function($skip, $loc, $0, $1, $2, $3) {
15531
+ var ForReduction$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L120, 'ForReduction "some"'), (0, import_lib2.$EXPECT)($L121, 'ForReduction "every"'), (0, import_lib2.$EXPECT)($L122, 'ForReduction "count"'), (0, import_lib2.$EXPECT)($L123, 'ForReduction "first"'), (0, import_lib2.$EXPECT)($L124, 'ForReduction "sum"'), (0, import_lib2.$EXPECT)($L125, 'ForReduction "product"'), (0, import_lib2.$EXPECT)($L126, 'ForReduction "min"'), (0, import_lib2.$EXPECT)($L127, 'ForReduction "max"'), (0, import_lib2.$EXPECT)($L128, 'ForReduction "join"'), (0, import_lib2.$EXPECT)($L129, 'ForReduction "concat"')), NonIdContinue, __), function($skip, $loc, $0, $1, $2, $3) {
15078
15532
  var subtype = $1;
15079
15533
  var ws = $3;
15080
15534
  return {
@@ -15295,10 +15749,13 @@ var ForDeclaration$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(LetOrConstOrVar,
15295
15749
  var ForDeclaration$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(InsertConst, (0, import_lib2.$N)(ActualMemberExpression), ForBinding), function($skip, $loc, $0, $1, $2, $3) {
15296
15750
  var c = $1;
15297
15751
  var binding = $3;
15752
+ if (gatherRecursive(binding, ($) => $.type === "PinPattern").length) {
15753
+ return $skip;
15754
+ }
15298
15755
  return {
15299
15756
  type: "ForDeclaration",
15300
15757
  children: [c, binding],
15301
- decl: c.token,
15758
+ decl: c.token.trimEnd(),
15302
15759
  binding,
15303
15760
  names: binding.names
15304
15761
  };
@@ -15468,12 +15925,17 @@ function PatternExpressionList(ctx, state2) {
15468
15925
  return (0, import_lib2.$EVENT)(ctx, state2, "PatternExpressionList", PatternExpressionList$0);
15469
15926
  }
15470
15927
  var PatternExpression$0 = BindingPattern;
15471
- var PatternExpression$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(ForbidIndentedApplication, (0, import_lib2.$E)((0, import_lib2.$P)(SingleLineBinaryOpRHS)), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3) {
15472
- var pattern = $2;
15473
- if (!pattern) return $skip;
15928
+ var PatternExpression$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(ForbidIndentedApplication, (0, import_lib2.$E)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$S)(BindingIdentifier, (0, import_lib2.$E)(Caret))), (0, import_lib2.$P)(SingleLineBinaryOpRHS))), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3) {
15929
+ var body = $2;
15930
+ if (!body) return $skip;
15931
+ const [named, rhs] = body;
15932
+ let binding;
15933
+ if (named) [binding] = named;
15474
15934
  return {
15475
15935
  type: "ConditionFragment",
15476
- children: pattern
15936
+ children: [binding, rhs],
15937
+ binding,
15938
+ rhs
15477
15939
  };
15478
15940
  });
15479
15941
  var PatternExpression$$ = [PatternExpression$0, PatternExpression$1];
@@ -15585,31 +16047,31 @@ var FinallyClause$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Finally, (0, impo
15585
16047
  function FinallyClause(ctx, state2) {
15586
16048
  return (0, import_lib2.$EVENT)(ctx, state2, "FinallyClause", FinallyClause$0);
15587
16049
  }
15588
- var CatchParameter$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(BindingIdentifier, (0, import_lib2.$E)(TypeSuffix)), function($skip, $loc, $0, $1, $2) {
16050
+ var CatchParameter$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)(ObjectBindingPattern, ArrayBindingPattern), TypeSuffix), function($skip, $loc, $0, $1, $2) {
15589
16051
  var binding = $1;
15590
16052
  var typeSuffix = $2;
15591
16053
  return {
15592
16054
  type: "CatchParameter",
15593
16055
  binding,
15594
16056
  typeSuffix,
15595
- children: $0
16057
+ children: [binding, typeSuffix]
16058
+ };
16059
+ });
16060
+ var CatchParameter$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(PatternExpressionList), function($skip, $loc, $0, $1) {
16061
+ return {
16062
+ type: "CatchPattern",
16063
+ children: $0,
16064
+ patterns: $1
15596
16065
  };
15597
16066
  });
15598
- var CatchParameter$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)(ObjectBindingPattern, ArrayBindingPattern), TypeSuffix), function($skip, $loc, $0, $1, $2) {
16067
+ var CatchParameter$2 = (0, import_lib2.$TS)((0, import_lib2.$S)(BindingIdentifier, (0, import_lib2.$E)(TypeSuffix)), function($skip, $loc, $0, $1, $2) {
15599
16068
  var binding = $1;
15600
16069
  var typeSuffix = $2;
15601
16070
  return {
15602
16071
  type: "CatchParameter",
15603
16072
  binding,
15604
16073
  typeSuffix,
15605
- children: [binding, typeSuffix]
15606
- };
15607
- });
15608
- var CatchParameter$2 = (0, import_lib2.$TS)((0, import_lib2.$S)(PatternExpressionList), function($skip, $loc, $0, $1) {
15609
- return {
15610
- type: "CatchPattern",
15611
- children: $0,
15612
- patterns: $1
16074
+ children: $0
15613
16075
  };
15614
16076
  });
15615
16077
  var CatchParameter$$ = [CatchParameter$0, CatchParameter$1, CatchParameter$2];
@@ -15923,7 +16385,7 @@ var RestoreAll$0 = (0, import_lib2.$S)(RestoreTrailingMemberProperty, RestoreBra
15923
16385
  function RestoreAll(ctx, state2) {
15924
16386
  return (0, import_lib2.$EVENT)(ctx, state2, "RestoreAll", RestoreAll$0);
15925
16387
  }
15926
- var CommaExpressionStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(CommaExpression), function($skip, $loc, $0, $1) {
16388
+ var CommaExpressionStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(CommaExpressionSpread), function($skip, $loc, $0, $1) {
15927
16389
  return makeExpressionStatement($1);
15928
16390
  });
15929
16391
  function CommaExpressionStatement(ctx, state2) {
@@ -15997,19 +16459,19 @@ var ThrowStatement$0 = (0, import_lib2.$T)((0, import_lib2.$S)(Throw, MaybeParen
15997
16459
  function ThrowStatement(ctx, state2) {
15998
16460
  return (0, import_lib2.$EVENT)(ctx, state2, "ThrowStatement", ThrowStatement$0);
15999
16461
  }
16000
- var Break$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L128, 'Break "break"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16462
+ var Break$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L130, 'Break "break"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16001
16463
  return { $loc, token: $1 };
16002
16464
  });
16003
16465
  function Break(ctx, state2) {
16004
16466
  return (0, import_lib2.$EVENT)(ctx, state2, "Break", Break$0);
16005
16467
  }
16006
- var Continue$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L129, 'Continue "continue"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16468
+ var Continue$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L131, 'Continue "continue"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16007
16469
  return { $loc, token: $1 };
16008
16470
  });
16009
16471
  function Continue(ctx, state2) {
16010
16472
  return (0, import_lib2.$EVENT)(ctx, state2, "Continue", Continue$0);
16011
16473
  }
16012
- var Debugger$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L130, 'Debugger "debugger"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16474
+ var Debugger$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L132, 'Debugger "debugger"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
16013
16475
  return { $loc, token: $1 };
16014
16476
  });
16015
16477
  function Debugger(ctx, state2) {
@@ -16086,7 +16548,7 @@ var MaybeParenNestedExpression$$ = [MaybeParenNestedExpression$0, MaybeParenNest
16086
16548
  function MaybeParenNestedExpression(ctx, state2) {
16087
16549
  return (0, import_lib2.$EVENT_C)(ctx, state2, "MaybeParenNestedExpression", MaybeParenNestedExpression$$);
16088
16550
  }
16089
- var ImportDeclaration$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Import, _, Identifier, (0, import_lib2.$E)(_), Equals, __, (0, import_lib2.$EXPECT)($L131, 'ImportDeclaration "require"'), NonIdContinue, Arguments), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16551
+ var ImportDeclaration$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Import, _, Identifier, (0, import_lib2.$E)(_), Equals, __, (0, import_lib2.$EXPECT)($L133, 'ImportDeclaration "require"'), NonIdContinue, Arguments), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
16090
16552
  const imp = [
16091
16553
  { ...$1, ts: true },
16092
16554
  { ...$1, token: "const", js: true }
@@ -16274,7 +16736,7 @@ var ImpliedFrom$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'ImpliedF
16274
16736
  function ImpliedFrom(ctx, state2) {
16275
16737
  return (0, import_lib2.$EVENT)(ctx, state2, "ImpliedFrom", ImpliedFrom$0);
16276
16738
  }
16277
- var ImportAssertion$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$C)((0, import_lib2.$EXPECT)($L132, 'ImportAssertion "with"'), (0, import_lib2.$EXPECT)($L133, 'ImportAssertion "assert"')), NonIdContinue, (0, import_lib2.$E)(_), ObjectLiteral), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16739
+ var ImportAssertion$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$C)((0, import_lib2.$EXPECT)($L134, 'ImportAssertion "with"'), (0, import_lib2.$EXPECT)($L135, 'ImportAssertion "assert"')), NonIdContinue, (0, import_lib2.$E)(_), ObjectLiteral), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
16278
16740
  var keyword = $2;
16279
16741
  var object = $5;
16280
16742
  return {
@@ -16595,19 +17057,19 @@ var LexicalDeclaration$$ = [LexicalDeclaration$0, LexicalDeclaration$1];
16595
17057
  function LexicalDeclaration(ctx, state2) {
16596
17058
  return (0, import_lib2.$EVENT_C)(ctx, state2, "LexicalDeclaration", LexicalDeclaration$$);
16597
17059
  }
16598
- var ConstAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L134, 'ConstAssignment ":="'), (0, import_lib2.$EXPECT)($L135, 'ConstAssignment "\u2254"')), function($skip, $loc, $0, $1) {
17060
+ var ConstAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L136, 'ConstAssignment ":="'), (0, import_lib2.$EXPECT)($L137, 'ConstAssignment "\u2254"')), function($skip, $loc, $0, $1) {
16599
17061
  return { $loc, token: "=", decl: "const " };
16600
17062
  });
16601
17063
  function ConstAssignment(ctx, state2) {
16602
17064
  return (0, import_lib2.$EVENT)(ctx, state2, "ConstAssignment", ConstAssignment$0);
16603
17065
  }
16604
- var LetAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L136, 'LetAssignment ".="'), function($skip, $loc, $0, $1) {
17066
+ var LetAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L138, 'LetAssignment ".="'), function($skip, $loc, $0, $1) {
16605
17067
  return { $loc, token: "=", decl: "let " };
16606
17068
  });
16607
17069
  function LetAssignment(ctx, state2) {
16608
17070
  return (0, import_lib2.$EVENT)(ctx, state2, "LetAssignment", LetAssignment$0);
16609
17071
  }
16610
- var TypeAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L137, 'TypeAssignment "::="'), function($skip, $loc, $0, $1) {
17072
+ var TypeAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L139, 'TypeAssignment "::="'), function($skip, $loc, $0, $1) {
16611
17073
  return { $loc, token: "=" };
16612
17074
  });
16613
17075
  function TypeAssignment(ctx, state2) {
@@ -17051,7 +17513,7 @@ var MultiLineComment$$ = [MultiLineComment$0, MultiLineComment$1];
17051
17513
  function MultiLineComment(ctx, state2) {
17052
17514
  return (0, import_lib2.$EVENT_C)(ctx, state2, "MultiLineComment", MultiLineComment$$);
17053
17515
  }
17054
- var JSMultiLineComment$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L138, 'JSMultiLineComment "/*"'), (0, import_lib2.$Q)((0, import_lib2.$S)((0, import_lib2.$N)((0, import_lib2.$EXPECT)($L139, 'JSMultiLineComment "*/"')), (0, import_lib2.$EXPECT)($R70, "JSMultiLineComment /./"))), (0, import_lib2.$EXPECT)($L139, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
17516
+ var JSMultiLineComment$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L140, 'JSMultiLineComment "/*"'), (0, import_lib2.$Q)((0, import_lib2.$S)((0, import_lib2.$N)((0, import_lib2.$EXPECT)($L141, 'JSMultiLineComment "*/"')), (0, import_lib2.$EXPECT)($R70, "JSMultiLineComment /./"))), (0, import_lib2.$EXPECT)($L141, 'JSMultiLineComment "*/"'))), function($skip, $loc, $0, $1) {
17055
17517
  return { type: "Comment", $loc, token: $1 };
17056
17518
  });
17057
17519
  function JSMultiLineComment(ctx, state2) {
@@ -17097,7 +17559,7 @@ function _(ctx, state2) {
17097
17559
  var NonNewlineWhitespace$0 = (0, import_lib2.$TR)((0, import_lib2.$EXPECT)($R23, "NonNewlineWhitespace /[ \\t]+/"), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
17098
17560
  return { $loc, token: $0 };
17099
17561
  });
17100
- var NonNewlineWhitespace$1 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L140, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
17562
+ var NonNewlineWhitespace$1 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L142, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
17101
17563
  return " ";
17102
17564
  });
17103
17565
  var NonNewlineWhitespace$$ = [NonNewlineWhitespace$0, NonNewlineWhitespace$1];
@@ -17148,7 +17610,7 @@ var StatementDelimiter$$ = [StatementDelimiter$0, StatementDelimiter$1, Statemen
17148
17610
  function StatementDelimiter(ctx, state2) {
17149
17611
  return (0, import_lib2.$EVENT_C)(ctx, state2, "StatementDelimiter", StatementDelimiter$$);
17150
17612
  }
17151
- var ClosingDelimiter$0 = (0, import_lib2.$Y)((0, import_lib2.$S)(__, (0, import_lib2.$C)((0, import_lib2.$EXPECT)($L37, 'ClosingDelimiter "}"'), (0, import_lib2.$EXPECT)($L141, 'ClosingDelimiter ")"'), (0, import_lib2.$EXPECT)($L46, 'ClosingDelimiter "]"'))));
17613
+ var ClosingDelimiter$0 = (0, import_lib2.$Y)((0, import_lib2.$S)(__, (0, import_lib2.$C)((0, import_lib2.$EXPECT)($L37, 'ClosingDelimiter "}"'), (0, import_lib2.$EXPECT)($L143, 'ClosingDelimiter ")"'), (0, import_lib2.$EXPECT)($L46, 'ClosingDelimiter "]"'))));
17152
17614
  function ClosingDelimiter(ctx, state2) {
17153
17615
  return (0, import_lib2.$EVENT)(ctx, state2, "ClosingDelimiter", ClosingDelimiter$0);
17154
17616
  }
@@ -17171,7 +17633,7 @@ var Loc$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'Loc ""'), functi
17171
17633
  function Loc(ctx, state2) {
17172
17634
  return (0, import_lib2.$EVENT)(ctx, state2, "Loc", Loc$0);
17173
17635
  }
17174
- var Abstract$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L142, 'Abstract "abstract"'), NonIdContinue, (0, import_lib2.$E)((0, import_lib2.$EXPECT)($L18, 'Abstract " "')))), function($skip, $loc, $0, $1) {
17636
+ var Abstract$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L144, 'Abstract "abstract"'), NonIdContinue, (0, import_lib2.$E)((0, import_lib2.$EXPECT)($L18, 'Abstract " "')))), function($skip, $loc, $0, $1) {
17175
17637
  return { $loc, token: $1, ts: true };
17176
17638
  });
17177
17639
  function Abstract(ctx, state2) {
@@ -17183,67 +17645,67 @@ var Ampersand$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L117, 'Ampersan
17183
17645
  function Ampersand(ctx, state2) {
17184
17646
  return (0, import_lib2.$EVENT)(ctx, state2, "Ampersand", Ampersand$0);
17185
17647
  }
17186
- var As$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L143, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17648
+ var As$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L145, 'As "as"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17187
17649
  return { $loc, token: $1 };
17188
17650
  });
17189
17651
  function As(ctx, state2) {
17190
17652
  return (0, import_lib2.$EVENT)(ctx, state2, "As", As$0);
17191
17653
  }
17192
- var At$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L144, 'At "@"'), function($skip, $loc, $0, $1) {
17654
+ var At$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L146, 'At "@"'), function($skip, $loc, $0, $1) {
17193
17655
  return { $loc, token: $1 };
17194
17656
  });
17195
17657
  function At(ctx, state2) {
17196
17658
  return (0, import_lib2.$EVENT)(ctx, state2, "At", At$0);
17197
17659
  }
17198
- var AtAt$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L145, 'AtAt "@@"'), function($skip, $loc, $0, $1) {
17660
+ var AtAt$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L147, 'AtAt "@@"'), function($skip, $loc, $0, $1) {
17199
17661
  return { $loc, token: "@" };
17200
17662
  });
17201
17663
  function AtAt(ctx, state2) {
17202
17664
  return (0, import_lib2.$EVENT)(ctx, state2, "AtAt", AtAt$0);
17203
17665
  }
17204
- var Async$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L146, 'Async "async"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17666
+ var Async$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L148, 'Async "async"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17205
17667
  return { $loc, token: $1, type: "Async" };
17206
17668
  });
17207
17669
  function Async(ctx, state2) {
17208
17670
  return (0, import_lib2.$EVENT)(ctx, state2, "Async", Async$0);
17209
17671
  }
17210
- var Await$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L147, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17672
+ var Await$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L149, 'Await "await"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17211
17673
  return { $loc, token: $1, type: "Await" };
17212
17674
  });
17213
17675
  function Await(ctx, state2) {
17214
17676
  return (0, import_lib2.$EVENT)(ctx, state2, "Await", Await$0);
17215
17677
  }
17216
- var Backtick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L148, 'Backtick "`"'), function($skip, $loc, $0, $1) {
17678
+ var Backtick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L150, 'Backtick "`"'), function($skip, $loc, $0, $1) {
17217
17679
  return { $loc, token: $1 };
17218
17680
  });
17219
17681
  function Backtick(ctx, state2) {
17220
17682
  return (0, import_lib2.$EVENT)(ctx, state2, "Backtick", Backtick$0);
17221
17683
  }
17222
- var By$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L149, 'By "by"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17684
+ var By$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L151, 'By "by"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17223
17685
  return { $loc, token: $1 };
17224
17686
  });
17225
17687
  function By(ctx, state2) {
17226
17688
  return (0, import_lib2.$EVENT)(ctx, state2, "By", By$0);
17227
17689
  }
17228
- var Caret$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L22, 'Caret "^"'), function($skip, $loc, $0, $1) {
17690
+ var Caret$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L22, 'Caret "^"'), (0, import_lib2.$N)((0, import_lib2.$EXPECT)($L22, 'Caret "^"'))), function($skip, $loc, $0, $1, $2) {
17229
17691
  return { $loc, token: $1 };
17230
17692
  });
17231
17693
  function Caret(ctx, state2) {
17232
17694
  return (0, import_lib2.$EVENT)(ctx, state2, "Caret", Caret$0);
17233
17695
  }
17234
- var Case$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L150, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17696
+ var Case$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L152, 'Case "case"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17235
17697
  return { $loc, token: $1 };
17236
17698
  });
17237
17699
  function Case(ctx, state2) {
17238
17700
  return (0, import_lib2.$EVENT)(ctx, state2, "Case", Case$0);
17239
17701
  }
17240
- var Catch$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L151, 'Catch "catch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17702
+ var Catch$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L153, 'Catch "catch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17241
17703
  return { $loc, token: $1 };
17242
17704
  });
17243
17705
  function Catch(ctx, state2) {
17244
17706
  return (0, import_lib2.$EVENT)(ctx, state2, "Catch", Catch$0);
17245
17707
  }
17246
- var Class$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L152, 'Class "class"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17708
+ var Class$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L154, 'Class "class"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17247
17709
  return { $loc, token: $1 };
17248
17710
  });
17249
17711
  function Class(ctx, state2) {
@@ -17267,13 +17729,13 @@ var CloseBracket$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L46, 'CloseB
17267
17729
  function CloseBracket(ctx, state2) {
17268
17730
  return (0, import_lib2.$EVENT)(ctx, state2, "CloseBracket", CloseBracket$0);
17269
17731
  }
17270
- var CloseParen$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L141, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
17732
+ var CloseParen$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L143, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
17271
17733
  return { $loc, token: $1 };
17272
17734
  });
17273
17735
  function CloseParen(ctx, state2) {
17274
17736
  return (0, import_lib2.$EVENT)(ctx, state2, "CloseParen", CloseParen$0);
17275
17737
  }
17276
- var CoffeeSubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L153, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
17738
+ var CoffeeSubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L155, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
17277
17739
  return { $loc, token: "${" };
17278
17740
  });
17279
17741
  function CoffeeSubstitutionStart(ctx, state2) {
@@ -17291,37 +17753,37 @@ var Comma$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L17, 'Comma ","'),
17291
17753
  function Comma(ctx, state2) {
17292
17754
  return (0, import_lib2.$EVENT)(ctx, state2, "Comma", Comma$0);
17293
17755
  }
17294
- var Comptime$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L154, 'Comptime "comptime"'), NonIdContinue, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($L16, 'Comptime ":"'))), function($skip, $loc, $0, $1, $2, $3) {
17756
+ var Comptime$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L156, 'Comptime "comptime"'), NonIdContinue, (0, import_lib2.$N)((0, import_lib2.$EXPECT)($L16, 'Comptime ":"'))), function($skip, $loc, $0, $1, $2, $3) {
17295
17757
  return { $loc, token: $1 };
17296
17758
  });
17297
17759
  function Comptime(ctx, state2) {
17298
17760
  return (0, import_lib2.$EVENT)(ctx, state2, "Comptime", Comptime$0);
17299
17761
  }
17300
- var ConstructorShorthand$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L144, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
17762
+ var ConstructorShorthand$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L146, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
17301
17763
  return { $loc, token: "constructor" };
17302
17764
  });
17303
17765
  function ConstructorShorthand(ctx, state2) {
17304
17766
  return (0, import_lib2.$EVENT)(ctx, state2, "ConstructorShorthand", ConstructorShorthand$0);
17305
17767
  }
17306
- var Declare$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L155, 'Declare "declare"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17768
+ var Declare$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L157, 'Declare "declare"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17307
17769
  return { $loc, token: $1 };
17308
17770
  });
17309
17771
  function Declare(ctx, state2) {
17310
17772
  return (0, import_lib2.$EVENT)(ctx, state2, "Declare", Declare$0);
17311
17773
  }
17312
- var Default$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L156, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17774
+ var Default$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L158, 'Default "default"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17313
17775
  return { $loc, token: $1 };
17314
17776
  });
17315
17777
  function Default(ctx, state2) {
17316
17778
  return (0, import_lib2.$EVENT)(ctx, state2, "Default", Default$0);
17317
17779
  }
17318
- var Delete$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L157, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17780
+ var Delete$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L159, 'Delete "delete"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17319
17781
  return { $loc, token: $1 };
17320
17782
  });
17321
17783
  function Delete(ctx, state2) {
17322
17784
  return (0, import_lib2.$EVENT)(ctx, state2, "Delete", Delete$0);
17323
17785
  }
17324
- var Do$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L158, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17786
+ var Do$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L160, 'Do "do"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17325
17787
  return { $loc, token: $1 };
17326
17788
  });
17327
17789
  function Do(ctx, state2) {
@@ -17341,20 +17803,20 @@ var Dot$$ = [Dot$0, Dot$1];
17341
17803
  function Dot(ctx, state2) {
17342
17804
  return (0, import_lib2.$EVENT_C)(ctx, state2, "Dot", Dot$$);
17343
17805
  }
17344
- var DotDot$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L159, 'DotDot ".."'), (0, import_lib2.$N)((0, import_lib2.$EXPECT)($L7, 'DotDot "."'))), function($skip, $loc, $0, $1, $2) {
17806
+ var DotDot$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L161, 'DotDot ".."'), (0, import_lib2.$N)((0, import_lib2.$EXPECT)($L7, 'DotDot "."'))), function($skip, $loc, $0, $1, $2) {
17345
17807
  return { $loc, token: $1 };
17346
17808
  });
17347
- var DotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L160, 'DotDot "\u2025"'), function($skip, $loc, $0, $1) {
17809
+ var DotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DotDot "\u2025"'), function($skip, $loc, $0, $1) {
17348
17810
  return { $loc, token: ".." };
17349
17811
  });
17350
17812
  var DotDot$$ = [DotDot$0, DotDot$1];
17351
17813
  function DotDot(ctx, state2) {
17352
17814
  return (0, import_lib2.$EVENT_C)(ctx, state2, "DotDot", DotDot$$);
17353
17815
  }
17354
- var DotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L161, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
17816
+ var DotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L163, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
17355
17817
  return { $loc, token: $1 };
17356
17818
  });
17357
- var DotDotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DotDotDot "\u2026"'), function($skip, $loc, $0, $1) {
17819
+ var DotDotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L164, 'DotDotDot "\u2026"'), function($skip, $loc, $0, $1) {
17358
17820
  return { $loc, token: "..." };
17359
17821
  });
17360
17822
  var DotDotDot$$ = [DotDotDot$0, DotDotDot$1];
@@ -17367,31 +17829,31 @@ var InsertDotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'Inse
17367
17829
  function InsertDotDotDot(ctx, state2) {
17368
17830
  return (0, import_lib2.$EVENT)(ctx, state2, "InsertDotDotDot", InsertDotDotDot$0);
17369
17831
  }
17370
- var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L163, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
17832
+ var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L165, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
17371
17833
  return { $loc, token: $1 };
17372
17834
  });
17373
17835
  function DoubleColon(ctx, state2) {
17374
17836
  return (0, import_lib2.$EVENT)(ctx, state2, "DoubleColon", DoubleColon$0);
17375
17837
  }
17376
- var DoubleColonAsColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L163, 'DoubleColonAsColon "::"'), function($skip, $loc, $0, $1) {
17838
+ var DoubleColonAsColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L165, 'DoubleColonAsColon "::"'), function($skip, $loc, $0, $1) {
17377
17839
  return { $loc, token: ":" };
17378
17840
  });
17379
17841
  function DoubleColonAsColon(ctx, state2) {
17380
17842
  return (0, import_lib2.$EVENT)(ctx, state2, "DoubleColonAsColon", DoubleColonAsColon$0);
17381
17843
  }
17382
- var DoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L164, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
17844
+ var DoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L166, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
17383
17845
  return { $loc, token: $1 };
17384
17846
  });
17385
17847
  function DoubleQuote(ctx, state2) {
17386
17848
  return (0, import_lib2.$EVENT)(ctx, state2, "DoubleQuote", DoubleQuote$0);
17387
17849
  }
17388
- var Each$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L165, 'Each "each"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17850
+ var Each$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L167, 'Each "each"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17389
17851
  return { $loc, token: $1 };
17390
17852
  });
17391
17853
  function Each(ctx, state2) {
17392
17854
  return (0, import_lib2.$EVENT)(ctx, state2, "Each", Each$0);
17393
17855
  }
17394
- var Else$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L166, 'Else "else"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17856
+ var Else$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L168, 'Else "else"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17395
17857
  return { $loc, token: $1 };
17396
17858
  });
17397
17859
  function Else(ctx, state2) {
@@ -17403,61 +17865,61 @@ var Equals$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L3, 'Equals "="'),
17403
17865
  function Equals(ctx, state2) {
17404
17866
  return (0, import_lib2.$EVENT)(ctx, state2, "Equals", Equals$0);
17405
17867
  }
17406
- var ExclamationPoint$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L167, 'ExclamationPoint "!"'), function($skip, $loc, $0, $1) {
17868
+ var ExclamationPoint$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L169, 'ExclamationPoint "!"'), function($skip, $loc, $0, $1) {
17407
17869
  return { $loc, token: $1 };
17408
17870
  });
17409
17871
  function ExclamationPoint(ctx, state2) {
17410
17872
  return (0, import_lib2.$EVENT)(ctx, state2, "ExclamationPoint", ExclamationPoint$0);
17411
17873
  }
17412
- var Export$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L168, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17874
+ var Export$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L170, 'Export "export"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17413
17875
  return { $loc, token: $1 };
17414
17876
  });
17415
17877
  function Export(ctx, state2) {
17416
17878
  return (0, import_lib2.$EVENT)(ctx, state2, "Export", Export$0);
17417
17879
  }
17418
- var Extends$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L169, 'Extends "extends"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17880
+ var Extends$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L171, 'Extends "extends"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17419
17881
  return { $loc, token: $1 };
17420
17882
  });
17421
17883
  function Extends(ctx, state2) {
17422
17884
  return (0, import_lib2.$EVENT)(ctx, state2, "Extends", Extends$0);
17423
17885
  }
17424
- var Finally$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L170, 'Finally "finally"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17886
+ var Finally$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L172, 'Finally "finally"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17425
17887
  return { $loc, token: $1 };
17426
17888
  });
17427
17889
  function Finally(ctx, state2) {
17428
17890
  return (0, import_lib2.$EVENT)(ctx, state2, "Finally", Finally$0);
17429
17891
  }
17430
- var For$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L171, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17892
+ var For$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L173, 'For "for"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17431
17893
  return { $loc, token: $1 };
17432
17894
  });
17433
17895
  function For(ctx, state2) {
17434
17896
  return (0, import_lib2.$EVENT)(ctx, state2, "For", For$0);
17435
17897
  }
17436
- var From$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L172, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17898
+ var From$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L174, 'From "from"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17437
17899
  return { $loc, token: $1 };
17438
17900
  });
17439
17901
  function From(ctx, state2) {
17440
17902
  return (0, import_lib2.$EVENT)(ctx, state2, "From", From$0);
17441
17903
  }
17442
- var Function$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L173, 'Function "function"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17904
+ var Function$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L175, 'Function "function"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17443
17905
  return { $loc, token: $1 };
17444
17906
  });
17445
17907
  function Function2(ctx, state2) {
17446
17908
  return (0, import_lib2.$EVENT)(ctx, state2, "Function", Function$0);
17447
17909
  }
17448
- var GetOrSet$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L174, 'GetOrSet "get"'), (0, import_lib2.$EXPECT)($L175, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17910
+ var GetOrSet$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L176, 'GetOrSet "get"'), (0, import_lib2.$EXPECT)($L177, 'GetOrSet "set"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17449
17911
  return { $loc, token: $1, type: "GetOrSet" };
17450
17912
  });
17451
17913
  function GetOrSet(ctx, state2) {
17452
17914
  return (0, import_lib2.$EVENT)(ctx, state2, "GetOrSet", GetOrSet$0);
17453
17915
  }
17454
- var Hash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L176, 'Hash "#"'), function($skip, $loc, $0, $1) {
17916
+ var Hash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L178, 'Hash "#"'), function($skip, $loc, $0, $1) {
17455
17917
  return { $loc, token: $1 };
17456
17918
  });
17457
17919
  function Hash(ctx, state2) {
17458
17920
  return (0, import_lib2.$EVENT)(ctx, state2, "Hash", Hash$0);
17459
17921
  }
17460
- var If$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L177, 'If "if"'), NonIdContinue, (0, import_lib2.$E)((0, import_lib2.$EXPECT)($L18, 'If " "')))), function($skip, $loc, $0, $1) {
17922
+ var If$0 = (0, import_lib2.$TV)((0, import_lib2.$TEXT)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L179, 'If "if"'), NonIdContinue, (0, import_lib2.$E)((0, import_lib2.$EXPECT)($L18, 'If " "')))), function($skip, $loc, $0, $1) {
17461
17923
  return { $loc, token: $1 };
17462
17924
  });
17463
17925
  function If(ctx, state2) {
@@ -17469,67 +17931,67 @@ var Import$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)
17469
17931
  function Import(ctx, state2) {
17470
17932
  return (0, import_lib2.$EVENT)(ctx, state2, "Import", Import$0);
17471
17933
  }
17472
- var In$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L178, 'In "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17934
+ var In$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L180, 'In "in"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17473
17935
  return { $loc, token: $1 };
17474
17936
  });
17475
17937
  function In(ctx, state2) {
17476
17938
  return (0, import_lib2.$EVENT)(ctx, state2, "In", In$0);
17477
17939
  }
17478
- var Infer$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L179, 'Infer "infer"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17940
+ var Infer$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L181, 'Infer "infer"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17479
17941
  return { $loc, token: $1 };
17480
17942
  });
17481
17943
  function Infer(ctx, state2) {
17482
17944
  return (0, import_lib2.$EVENT)(ctx, state2, "Infer", Infer$0);
17483
17945
  }
17484
- var LetOrConst$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L180, 'LetOrConst "let"'), (0, import_lib2.$EXPECT)($L181, 'LetOrConst "const"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17946
+ var LetOrConst$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L182, 'LetOrConst "let"'), (0, import_lib2.$EXPECT)($L183, 'LetOrConst "const"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17485
17947
  return { $loc, token: $1 };
17486
17948
  });
17487
17949
  function LetOrConst(ctx, state2) {
17488
17950
  return (0, import_lib2.$EVENT)(ctx, state2, "LetOrConst", LetOrConst$0);
17489
17951
  }
17490
- var Const$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L181, 'Const "const"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17952
+ var Const$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L183, 'Const "const"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17491
17953
  return { $loc, token: $1 };
17492
17954
  });
17493
17955
  function Const(ctx, state2) {
17494
17956
  return (0, import_lib2.$EVENT)(ctx, state2, "Const", Const$0);
17495
17957
  }
17496
- var Is$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L182, 'Is "is"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17958
+ var Is$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L184, 'Is "is"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17497
17959
  return { $loc, token: $1 };
17498
17960
  });
17499
17961
  function Is(ctx, state2) {
17500
17962
  return (0, import_lib2.$EVENT)(ctx, state2, "Is", Is$0);
17501
17963
  }
17502
- var LetOrConstOrVar$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L180, 'LetOrConstOrVar "let"'), (0, import_lib2.$EXPECT)($L181, 'LetOrConstOrVar "const"'), (0, import_lib2.$EXPECT)($L183, 'LetOrConstOrVar "var"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17964
+ var LetOrConstOrVar$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L182, 'LetOrConstOrVar "let"'), (0, import_lib2.$EXPECT)($L183, 'LetOrConstOrVar "const"'), (0, import_lib2.$EXPECT)($L185, 'LetOrConstOrVar "var"')), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17503
17965
  return { $loc, token: $1 };
17504
17966
  });
17505
17967
  function LetOrConstOrVar(ctx, state2) {
17506
17968
  return (0, import_lib2.$EVENT)(ctx, state2, "LetOrConstOrVar", LetOrConstOrVar$0);
17507
17969
  }
17508
- var Like$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L184, 'Like "like"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17970
+ var Like$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L186, 'Like "like"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17509
17971
  return { $loc, token: $1 };
17510
17972
  });
17511
17973
  function Like(ctx, state2) {
17512
17974
  return (0, import_lib2.$EVENT)(ctx, state2, "Like", Like$0);
17513
17975
  }
17514
- var Loop$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L185, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17976
+ var Loop$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L187, 'Loop "loop"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17515
17977
  return { $loc, token: "while" };
17516
17978
  });
17517
17979
  function Loop(ctx, state2) {
17518
17980
  return (0, import_lib2.$EVENT)(ctx, state2, "Loop", Loop$0);
17519
17981
  }
17520
- var New$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L186, 'New "new"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17982
+ var New$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L188, 'New "new"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17521
17983
  return { $loc, token: $1 };
17522
17984
  });
17523
17985
  function New(ctx, state2) {
17524
17986
  return (0, import_lib2.$EVENT)(ctx, state2, "New", New$0);
17525
17987
  }
17526
- var Not$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L187, 'Not "not"'), NonIdContinue, (0, import_lib2.$N)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$EXPECT)($L16, 'Not ":"')))), function($skip, $loc, $0, $1, $2, $3) {
17988
+ var Not$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L189, 'Not "not"'), NonIdContinue, (0, import_lib2.$N)((0, import_lib2.$S)((0, import_lib2.$E)(_), (0, import_lib2.$EXPECT)($L16, 'Not ":"')))), function($skip, $loc, $0, $1, $2, $3) {
17527
17989
  return { $loc, token: "!" };
17528
17990
  });
17529
17991
  function Not(ctx, state2) {
17530
17992
  return (0, import_lib2.$EVENT)(ctx, state2, "Not", Not$0);
17531
17993
  }
17532
- var Of$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L188, 'Of "of"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17994
+ var Of$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L190, 'Of "of"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17533
17995
  return { $loc, token: $1 };
17534
17996
  });
17535
17997
  function Of(ctx, state2) {
@@ -17547,7 +18009,7 @@ var OpenBrace$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L1, 'OpenBrace
17547
18009
  function OpenBrace(ctx, state2) {
17548
18010
  return (0, import_lib2.$EVENT)(ctx, state2, "OpenBrace", OpenBrace$0);
17549
18011
  }
17550
- var OpenBracket$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L189, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
18012
+ var OpenBracket$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L191, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
17551
18013
  return { $loc, token: $1 };
17552
18014
  });
17553
18015
  function OpenBracket(ctx, state2) {
@@ -17559,49 +18021,49 @@ var OpenParen$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L4, 'OpenParen
17559
18021
  function OpenParen(ctx, state2) {
17560
18022
  return (0, import_lib2.$EVENT)(ctx, state2, "OpenParen", OpenParen$0);
17561
18023
  }
17562
- var Operator$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L190, 'Operator "operator"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18024
+ var Operator$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L192, 'Operator "operator"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17563
18025
  return { $loc, token: $1 };
17564
18026
  });
17565
18027
  function Operator(ctx, state2) {
17566
18028
  return (0, import_lib2.$EVENT)(ctx, state2, "Operator", Operator$0);
17567
18029
  }
17568
- var Override$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L191, 'Override "override"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18030
+ var Override$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L193, 'Override "override"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17569
18031
  return { $loc, token: $1, ts: true };
17570
18032
  });
17571
18033
  function Override(ctx, state2) {
17572
18034
  return (0, import_lib2.$EVENT)(ctx, state2, "Override", Override$0);
17573
18035
  }
17574
- var Own$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L192, 'Own "own"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18036
+ var Own$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L194, 'Own "own"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17575
18037
  return { $loc, token: $1 };
17576
18038
  });
17577
18039
  function Own(ctx, state2) {
17578
18040
  return (0, import_lib2.$EVENT)(ctx, state2, "Own", Own$0);
17579
18041
  }
17580
- var Public$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L193, 'Public "public"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18042
+ var Public$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L195, 'Public "public"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17581
18043
  return { $loc, token: $1 };
17582
18044
  });
17583
18045
  function Public(ctx, state2) {
17584
18046
  return (0, import_lib2.$EVENT)(ctx, state2, "Public", Public$0);
17585
18047
  }
17586
- var Private$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L194, 'Private "private"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18048
+ var Private$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L196, 'Private "private"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17587
18049
  return { $loc, token: $1 };
17588
18050
  });
17589
18051
  function Private(ctx, state2) {
17590
18052
  return (0, import_lib2.$EVENT)(ctx, state2, "Private", Private$0);
17591
18053
  }
17592
- var Protected$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L195, 'Protected "protected"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18054
+ var Protected$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L197, 'Protected "protected"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17593
18055
  return { $loc, token: $1 };
17594
18056
  });
17595
18057
  function Protected(ctx, state2) {
17596
18058
  return (0, import_lib2.$EVENT)(ctx, state2, "Protected", Protected$0);
17597
18059
  }
17598
- var Pipe$0 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L196, 'Pipe "||>"'), (0, import_lib2.$EXPECT)($L197, 'Pipe "|\u25B7"')), function($skip, $loc, $0, $1) {
18060
+ var Pipe$0 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L198, 'Pipe "||>"'), (0, import_lib2.$EXPECT)($L199, 'Pipe "|\u25B7"')), function($skip, $loc, $0, $1) {
17599
18061
  return { $loc, token: "||>" };
17600
18062
  });
17601
- var Pipe$1 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L198, 'Pipe "|>="'), (0, import_lib2.$EXPECT)($L199, 'Pipe "\u25B7="')), function($skip, $loc, $0, $1) {
18063
+ var Pipe$1 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L200, 'Pipe "|>="'), (0, import_lib2.$EXPECT)($L201, 'Pipe "\u25B7="')), function($skip, $loc, $0, $1) {
17602
18064
  return { $loc, token: "|>=" };
17603
18065
  });
17604
- var Pipe$2 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L200, 'Pipe "|>"'), (0, import_lib2.$EXPECT)($L201, 'Pipe "\u25B7"')), function($skip, $loc, $0, $1) {
18066
+ var Pipe$2 = (0, import_lib2.$TV)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L202, 'Pipe "|>"'), (0, import_lib2.$EXPECT)($L203, 'Pipe "\u25B7"')), function($skip, $loc, $0, $1) {
17605
18067
  return { $loc, token: "|>" };
17606
18068
  });
17607
18069
  var Pipe$$ = [Pipe$0, Pipe$1, Pipe$2];
@@ -17614,19 +18076,19 @@ var QuestionMark$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L6, 'Questio
17614
18076
  function QuestionMark(ctx, state2) {
17615
18077
  return (0, import_lib2.$EVENT)(ctx, state2, "QuestionMark", QuestionMark$0);
17616
18078
  }
17617
- var Readonly$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L202, 'Readonly "readonly"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18079
+ var Readonly$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L204, 'Readonly "readonly"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17618
18080
  return { $loc, token: $1, ts: true };
17619
18081
  });
17620
18082
  function Readonly(ctx, state2) {
17621
18083
  return (0, import_lib2.$EVENT)(ctx, state2, "Readonly", Readonly$0);
17622
18084
  }
17623
- var Return$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L203, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18085
+ var Return$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L205, 'Return "return"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17624
18086
  return { $loc, token: $1 };
17625
18087
  });
17626
18088
  function Return(ctx, state2) {
17627
18089
  return (0, import_lib2.$EVENT)(ctx, state2, "Return", Return$0);
17628
18090
  }
17629
- var Satisfies$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L204, 'Satisfies "satisfies"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18091
+ var Satisfies$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L206, 'Satisfies "satisfies"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17630
18092
  return { $loc, token: $1 };
17631
18093
  });
17632
18094
  function Satisfies(ctx, state2) {
@@ -17638,7 +18100,7 @@ var Semicolon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L119, 'Semicolo
17638
18100
  function Semicolon(ctx, state2) {
17639
18101
  return (0, import_lib2.$EVENT)(ctx, state2, "Semicolon", Semicolon$0);
17640
18102
  }
17641
- var SingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L205, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
18103
+ var SingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L207, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
17642
18104
  return { $loc, token: $1 };
17643
18105
  });
17644
18106
  function SingleQuote(ctx, state2) {
@@ -17650,149 +18112,149 @@ var Star$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L75, 'Star "*"'), fu
17650
18112
  function Star(ctx, state2) {
17651
18113
  return (0, import_lib2.$EVENT)(ctx, state2, "Star", Star$0);
17652
18114
  }
17653
- var Static$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L206, 'Static "static"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18115
+ var Static$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L208, 'Static "static"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17654
18116
  return { $loc, token: $1 };
17655
18117
  });
17656
- var Static$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L144, 'Static "@"'), (0, import_lib2.$N)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L4, 'Static "("'), (0, import_lib2.$EXPECT)($L144, 'Static "@"')))), function($skip, $loc, $0, $1, $2) {
18118
+ var Static$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L146, 'Static "@"'), (0, import_lib2.$N)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L4, 'Static "("'), (0, import_lib2.$EXPECT)($L146, 'Static "@"')))), function($skip, $loc, $0, $1, $2) {
17657
18119
  return { $loc, token: "static " };
17658
18120
  });
17659
18121
  var Static$$ = [Static$0, Static$1];
17660
18122
  function Static(ctx, state2) {
17661
18123
  return (0, import_lib2.$EVENT_C)(ctx, state2, "Static", Static$$);
17662
18124
  }
17663
- var SubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L207, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
18125
+ var SubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L209, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
17664
18126
  return { $loc, token: $1 };
17665
18127
  });
17666
18128
  function SubstitutionStart(ctx, state2) {
17667
18129
  return (0, import_lib2.$EVENT)(ctx, state2, "SubstitutionStart", SubstitutionStart$0);
17668
18130
  }
17669
- var Super$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L208, 'Super "super"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18131
+ var Super$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L210, 'Super "super"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17670
18132
  return { $loc, token: $1 };
17671
18133
  });
17672
18134
  function Super(ctx, state2) {
17673
18135
  return (0, import_lib2.$EVENT)(ctx, state2, "Super", Super$0);
17674
18136
  }
17675
- var Switch$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L209, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18137
+ var Switch$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L211, 'Switch "switch"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17676
18138
  return { $loc, token: $1 };
17677
18139
  });
17678
18140
  function Switch(ctx, state2) {
17679
18141
  return (0, import_lib2.$EVENT)(ctx, state2, "Switch", Switch$0);
17680
18142
  }
17681
- var Target$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L210, 'Target "target"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18143
+ var Target$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L212, 'Target "target"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17682
18144
  return { $loc, token: $1 };
17683
18145
  });
17684
18146
  function Target(ctx, state2) {
17685
18147
  return (0, import_lib2.$EVENT)(ctx, state2, "Target", Target$0);
17686
18148
  }
17687
- var Then$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(__, (0, import_lib2.$EXPECT)($L211, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
18149
+ var Then$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(__, (0, import_lib2.$EXPECT)($L213, 'Then "then"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3) {
17688
18150
  return { $loc, token: "" };
17689
18151
  });
17690
18152
  function Then(ctx, state2) {
17691
18153
  return (0, import_lib2.$EVENT)(ctx, state2, "Then", Then$0);
17692
18154
  }
17693
- var This$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L212, 'This "this"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18155
+ var This$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L214, 'This "this"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17694
18156
  return { $loc, token: $1 };
17695
18157
  });
17696
18158
  function This(ctx, state2) {
17697
18159
  return (0, import_lib2.$EVENT)(ctx, state2, "This", This$0);
17698
18160
  }
17699
- var Throw$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L213, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18161
+ var Throw$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L215, 'Throw "throw"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17700
18162
  return { $loc, token: $1 };
17701
18163
  });
17702
18164
  function Throw(ctx, state2) {
17703
18165
  return (0, import_lib2.$EVENT)(ctx, state2, "Throw", Throw$0);
17704
18166
  }
17705
- var TripleDoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L214, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
18167
+ var TripleDoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L216, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
17706
18168
  return { $loc, token: "`" };
17707
18169
  });
17708
18170
  function TripleDoubleQuote(ctx, state2) {
17709
18171
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleDoubleQuote", TripleDoubleQuote$0);
17710
18172
  }
17711
- var TripleSingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L215, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
18173
+ var TripleSingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L217, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
17712
18174
  return { $loc, token: "`" };
17713
18175
  });
17714
18176
  function TripleSingleQuote(ctx, state2) {
17715
18177
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleSingleQuote", TripleSingleQuote$0);
17716
18178
  }
17717
- var TripleSlash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L216, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
18179
+ var TripleSlash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L218, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
17718
18180
  return { $loc, token: "/" };
17719
18181
  });
17720
18182
  function TripleSlash(ctx, state2) {
17721
18183
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleSlash", TripleSlash$0);
17722
18184
  }
17723
- var TripleTick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L217, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
18185
+ var TripleTick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L219, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
17724
18186
  return { $loc, token: "`" };
17725
18187
  });
17726
18188
  function TripleTick(ctx, state2) {
17727
18189
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleTick", TripleTick$0);
17728
18190
  }
17729
- var Try$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L218, 'Try "try"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18191
+ var Try$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L220, 'Try "try"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17730
18192
  return { $loc, token: $1 };
17731
18193
  });
17732
18194
  function Try(ctx, state2) {
17733
18195
  return (0, import_lib2.$EVENT)(ctx, state2, "Try", Try$0);
17734
18196
  }
17735
- var Typeof$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L219, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18197
+ var Typeof$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L221, 'Typeof "typeof"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17736
18198
  return { $loc, token: $1 };
17737
18199
  });
17738
18200
  function Typeof(ctx, state2) {
17739
18201
  return (0, import_lib2.$EVENT)(ctx, state2, "Typeof", Typeof$0);
17740
18202
  }
17741
- var Undefined$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L220, 'Undefined "undefined"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18203
+ var Undefined$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L222, 'Undefined "undefined"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17742
18204
  return { $loc, token: $1 };
17743
18205
  });
17744
18206
  function Undefined(ctx, state2) {
17745
18207
  return (0, import_lib2.$EVENT)(ctx, state2, "Undefined", Undefined$0);
17746
18208
  }
17747
- var Unless$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L221, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18209
+ var Unless$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L223, 'Unless "unless"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17748
18210
  return { $loc, token: $1, negated: true };
17749
18211
  });
17750
18212
  function Unless(ctx, state2) {
17751
18213
  return (0, import_lib2.$EVENT)(ctx, state2, "Unless", Unless$0);
17752
18214
  }
17753
- var Until$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L222, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18215
+ var Until$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L224, 'Until "until"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17754
18216
  return { $loc, token: $1, negated: true };
17755
18217
  });
17756
18218
  function Until(ctx, state2) {
17757
18219
  return (0, import_lib2.$EVENT)(ctx, state2, "Until", Until$0);
17758
18220
  }
17759
- var Using$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L223, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18221
+ var Using$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L225, 'Using "using"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17760
18222
  return { $loc, token: $1 };
17761
18223
  });
17762
18224
  function Using(ctx, state2) {
17763
18225
  return (0, import_lib2.$EVENT)(ctx, state2, "Using", Using$0);
17764
18226
  }
17765
- var Var$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L183, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18227
+ var Var$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L185, 'Var "var"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17766
18228
  return { $loc, token: $1 };
17767
18229
  });
17768
18230
  function Var(ctx, state2) {
17769
18231
  return (0, import_lib2.$EVENT)(ctx, state2, "Var", Var$0);
17770
18232
  }
17771
- var Void$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L224, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18233
+ var Void$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L226, 'Void "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17772
18234
  return { $loc, token: $1 };
17773
18235
  });
17774
18236
  function Void(ctx, state2) {
17775
18237
  return (0, import_lib2.$EVENT)(ctx, state2, "Void", Void$0);
17776
18238
  }
17777
- var When$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L225, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18239
+ var When$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L227, 'When "when"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17778
18240
  return { $loc, token: "case" };
17779
18241
  });
17780
18242
  function When(ctx, state2) {
17781
18243
  return (0, import_lib2.$EVENT)(ctx, state2, "When", When$0);
17782
18244
  }
17783
- var While$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L226, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18245
+ var While$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L228, 'While "while"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17784
18246
  return { $loc, token: $1 };
17785
18247
  });
17786
18248
  function While(ctx, state2) {
17787
18249
  return (0, import_lib2.$EVENT)(ctx, state2, "While", While$0);
17788
18250
  }
17789
- var With$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L132, 'With "with"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18251
+ var With$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L134, 'With "with"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17790
18252
  return { $loc, token: $1 };
17791
18253
  });
17792
18254
  function With(ctx, state2) {
17793
18255
  return (0, import_lib2.$EVENT)(ctx, state2, "With", With$0);
17794
18256
  }
17795
- var Yield$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L227, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18257
+ var Yield$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L229, 'Yield "yield"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
17796
18258
  return { $loc, token: $1, type: "Yield" };
17797
18259
  });
17798
18260
  function Yield(ctx, state2) {
@@ -17869,7 +18331,7 @@ var JSXElement$$ = [JSXElement$0, JSXElement$1, JSXElement$2];
17869
18331
  function JSXElement(ctx, state2) {
17870
18332
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXElement", JSXElement$$);
17871
18333
  }
17872
- var JSXSelfClosingElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L19, 'JSXSelfClosingElement "<"'), JSXElementName, (0, import_lib2.$E)(TypeArguments), (0, import_lib2.$E)(JSXAttributes), (0, import_lib2.$E)(Whitespace), (0, import_lib2.$EXPECT)($L228, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
18334
+ var JSXSelfClosingElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L19, 'JSXSelfClosingElement "<"'), JSXElementName, (0, import_lib2.$E)(TypeArguments), (0, import_lib2.$E)(JSXAttributes), (0, import_lib2.$E)(Whitespace), (0, import_lib2.$EXPECT)($L230, 'JSXSelfClosingElement "/>"')), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
17873
18335
  return { type: "JSXElement", children: $0, tag: $2 };
17874
18336
  });
17875
18337
  function JSXSelfClosingElement(ctx, state2) {
@@ -17902,7 +18364,7 @@ var JSXOptionalClosingElement$$ = [JSXOptionalClosingElement$0, JSXOptionalClosi
17902
18364
  function JSXOptionalClosingElement(ctx, state2) {
17903
18365
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXOptionalClosingElement", JSXOptionalClosingElement$$);
17904
18366
  }
17905
- var JSXClosingElement$0 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L229, 'JSXClosingElement "</"'), (0, import_lib2.$E)(Whitespace), JSXElementName, (0, import_lib2.$E)(Whitespace), (0, import_lib2.$EXPECT)($L45, 'JSXClosingElement ">"'));
18367
+ var JSXClosingElement$0 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L231, 'JSXClosingElement "</"'), (0, import_lib2.$E)(Whitespace), JSXElementName, (0, import_lib2.$E)(Whitespace), (0, import_lib2.$EXPECT)($L45, 'JSXClosingElement ">"'));
17906
18368
  function JSXClosingElement(ctx, state2) {
17907
18369
  return (0, import_lib2.$EVENT)(ctx, state2, "JSXClosingElement", JSXClosingElement$0);
17908
18370
  }
@@ -17922,7 +18384,7 @@ var JSXFragment$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$N)
17922
18384
  ];
17923
18385
  return { type: "JSXFragment", children: parts, jsxChildren: children.jsxChildren };
17924
18386
  });
17925
- var JSXFragment$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(CoffeeJSXEnabled, (0, import_lib2.$EXPECT)($L230, 'JSXFragment "<>"'), (0, import_lib2.$E)(JSXChildren), (0, import_lib2.$E)(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
18387
+ var JSXFragment$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(CoffeeJSXEnabled, (0, import_lib2.$EXPECT)($L232, 'JSXFragment "<>"'), (0, import_lib2.$E)(JSXChildren), (0, import_lib2.$E)(Whitespace), JSXClosingFragment), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
17926
18388
  var children = $3;
17927
18389
  $0 = $0.slice(1);
17928
18390
  return {
@@ -17935,7 +18397,7 @@ var JSXFragment$$ = [JSXFragment$0, JSXFragment$1];
17935
18397
  function JSXFragment(ctx, state2) {
17936
18398
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXFragment", JSXFragment$$);
17937
18399
  }
17938
- var PushJSXOpeningFragment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L230, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
18400
+ var PushJSXOpeningFragment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L232, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
17939
18401
  state.JSXTagStack.push("");
17940
18402
  return $1;
17941
18403
  });
@@ -17951,11 +18413,11 @@ var JSXOptionalClosingFragment$$ = [JSXOptionalClosingFragment$0, JSXOptionalClo
17951
18413
  function JSXOptionalClosingFragment(ctx, state2) {
17952
18414
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXOptionalClosingFragment", JSXOptionalClosingFragment$$);
17953
18415
  }
17954
- var JSXClosingFragment$0 = (0, import_lib2.$EXPECT)($L231, 'JSXClosingFragment "</>"');
18416
+ var JSXClosingFragment$0 = (0, import_lib2.$EXPECT)($L233, 'JSXClosingFragment "</>"');
17955
18417
  function JSXClosingFragment(ctx, state2) {
17956
18418
  return (0, import_lib2.$EVENT)(ctx, state2, "JSXClosingFragment", JSXClosingFragment$0);
17957
18419
  }
17958
- var JSXElementName$0 = (0, import_lib2.$TV)((0, import_lib2.$Y)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L176, 'JSXElementName "#"'), Dot), JSXShorthandString)), function($skip, $loc, $0, $1) {
18420
+ var JSXElementName$0 = (0, import_lib2.$TV)((0, import_lib2.$Y)((0, import_lib2.$S)((0, import_lib2.$C)((0, import_lib2.$EXPECT)($L178, 'JSXElementName "#"'), Dot), JSXShorthandString)), function($skip, $loc, $0, $1) {
17959
18421
  return config.defaultElement;
17960
18422
  });
17961
18423
  var JSXElementName$1 = (0, import_lib2.$TEXT)((0, import_lib2.$S)(JSXIdentifierName, (0, import_lib2.$C)((0, import_lib2.$S)(Colon, JSXIdentifierName), (0, import_lib2.$Q)((0, import_lib2.$S)(Dot, JSXIdentifierName)))));
@@ -18132,7 +18594,7 @@ var JSXAttribute$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(Identifier, (0, im
18132
18594
  }
18133
18595
  return $skip;
18134
18596
  });
18135
- var JSXAttribute$5 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L176, 'JSXAttribute "#"'), JSXShorthandString), function($skip, $loc, $0, $1, $2) {
18597
+ var JSXAttribute$5 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L178, 'JSXAttribute "#"'), JSXShorthandString), function($skip, $loc, $0, $1, $2) {
18136
18598
  return [" ", "id=", $2];
18137
18599
  });
18138
18600
  var JSXAttribute$6 = (0, import_lib2.$TS)((0, import_lib2.$S)(Dot, JSXShorthandString), function($skip, $loc, $0, $1, $2) {
@@ -18468,7 +18930,7 @@ var JSXChildGeneral$$ = [JSXChildGeneral$0, JSXChildGeneral$1, JSXChildGeneral$2
18468
18930
  function JSXChildGeneral(ctx, state2) {
18469
18931
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXChildGeneral", JSXChildGeneral$$);
18470
18932
  }
18471
- var JSXComment$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L232, 'JSXComment "<!--"'), JSXCommentContent, (0, import_lib2.$EXPECT)($L233, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
18933
+ var JSXComment$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L234, 'JSXComment "<!--"'), JSXCommentContent, (0, import_lib2.$EXPECT)($L235, 'JSXComment "-->"')), function($skip, $loc, $0, $1, $2, $3) {
18472
18934
  return ["{/*", $2, "*/}"];
18473
18935
  });
18474
18936
  function JSXComment(ctx, state2) {
@@ -18752,37 +19214,37 @@ var InterfaceExtendsTarget$0 = ImplementsTarget;
18752
19214
  function InterfaceExtendsTarget(ctx, state2) {
18753
19215
  return (0, import_lib2.$EVENT)(ctx, state2, "InterfaceExtendsTarget", InterfaceExtendsTarget$0);
18754
19216
  }
18755
- var TypeKeyword$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L234, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19217
+ var TypeKeyword$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L236, 'TypeKeyword "type"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18756
19218
  return { $loc, token: $1 };
18757
19219
  });
18758
19220
  function TypeKeyword(ctx, state2) {
18759
19221
  return (0, import_lib2.$EVENT)(ctx, state2, "TypeKeyword", TypeKeyword$0);
18760
19222
  }
18761
- var Enum$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L235, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19223
+ var Enum$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L237, 'Enum "enum"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18762
19224
  return { $loc, token: $1 };
18763
19225
  });
18764
19226
  function Enum(ctx, state2) {
18765
19227
  return (0, import_lib2.$EVENT)(ctx, state2, "Enum", Enum$0);
18766
19228
  }
18767
- var Interface$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L236, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19229
+ var Interface$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L238, 'Interface "interface"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18768
19230
  return { $loc, token: $1 };
18769
19231
  });
18770
19232
  function Interface(ctx, state2) {
18771
19233
  return (0, import_lib2.$EVENT)(ctx, state2, "Interface", Interface$0);
18772
19234
  }
18773
- var Global$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L237, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19235
+ var Global$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L239, 'Global "global"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18774
19236
  return { $loc, token: $1 };
18775
19237
  });
18776
19238
  function Global(ctx, state2) {
18777
19239
  return (0, import_lib2.$EVENT)(ctx, state2, "Global", Global$0);
18778
19240
  }
18779
- var Module$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L238, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19241
+ var Module$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L240, 'Module "module"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18780
19242
  return { $loc, token: $1 };
18781
19243
  });
18782
19244
  function Module(ctx, state2) {
18783
19245
  return (0, import_lib2.$EVENT)(ctx, state2, "Module", Module$0);
18784
19246
  }
18785
- var Namespace$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L239, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19247
+ var Namespace$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L241, 'Namespace "namespace"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
18786
19248
  return { $loc, token: $1 };
18787
19249
  });
18788
19250
  function Namespace(ctx, state2) {
@@ -19091,7 +19553,7 @@ var ReturnTypeSuffix$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib
19091
19553
  function ReturnTypeSuffix(ctx, state2) {
19092
19554
  return (0, import_lib2.$EVENT)(ctx, state2, "ReturnTypeSuffix", ReturnTypeSuffix$0);
19093
19555
  }
19094
- var ReturnType$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$S)(__, (0, import_lib2.$EXPECT)($L240, 'ReturnType "asserts"'), NonIdContinue)), ForbidIndentedApplication, (0, import_lib2.$E)(TypePredicate), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4) {
19556
+ var ReturnType$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)((0, import_lib2.$S)(__, (0, import_lib2.$EXPECT)($L242, 'ReturnType "asserts"'), NonIdContinue)), ForbidIndentedApplication, (0, import_lib2.$E)(TypePredicate), RestoreIndentedApplication), function($skip, $loc, $0, $1, $2, $3, $4) {
19095
19557
  var asserts = $1;
19096
19558
  var t = $3;
19097
19559
  if (!t) return $skip;
@@ -19184,8 +19646,8 @@ var TypeUnarySuffix$$ = [TypeUnarySuffix$0, TypeUnarySuffix$1, TypeUnarySuffix$2
19184
19646
  function TypeUnarySuffix(ctx, state2) {
19185
19647
  return (0, import_lib2.$EVENT_C)(ctx, state2, "TypeUnarySuffix", TypeUnarySuffix$$);
19186
19648
  }
19187
- var TypeUnaryOp$0 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L241, 'TypeUnaryOp "keyof"'), NonIdContinue);
19188
- var TypeUnaryOp$1 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L202, 'TypeUnaryOp "readonly"'), NonIdContinue);
19649
+ var TypeUnaryOp$0 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L243, 'TypeUnaryOp "keyof"'), NonIdContinue);
19650
+ var TypeUnaryOp$1 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L204, 'TypeUnaryOp "readonly"'), NonIdContinue);
19189
19651
  var TypeUnaryOp$$ = [TypeUnaryOp$0, TypeUnaryOp$1];
19190
19652
  function TypeUnaryOp(ctx, state2) {
19191
19653
  return (0, import_lib2.$EVENT_C)(ctx, state2, "TypeUnaryOp", TypeUnaryOp$$);
@@ -19215,7 +19677,7 @@ var TypeIndexedAccess$$ = [TypeIndexedAccess$0, TypeIndexedAccess$1, TypeIndexed
19215
19677
  function TypeIndexedAccess(ctx, state2) {
19216
19678
  return (0, import_lib2.$EVENT_C)(ctx, state2, "TypeIndexedAccess", TypeIndexedAccess$$);
19217
19679
  }
19218
- var UnknownAlias$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L242, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
19680
+ var UnknownAlias$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L244, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
19219
19681
  return { $loc, token: "unknown" };
19220
19682
  });
19221
19683
  function UnknownAlias(ctx, state2) {
@@ -19592,13 +20054,13 @@ var TypeLiteral$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EX
19592
20054
  if (sign[0] === "+") return num;
19593
20055
  return $0;
19594
20056
  });
19595
- var TypeLiteral$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L224, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
20057
+ var TypeLiteral$3 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L226, 'TypeLiteral "void"'), NonIdContinue), function($skip, $loc, $0, $1, $2) {
19596
20058
  return { type: "VoidType", $loc, token: $1 };
19597
20059
  });
19598
- var TypeLiteral$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L243, 'TypeLiteral "unique"'), _, (0, import_lib2.$EXPECT)($L244, 'TypeLiteral "symbol"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4) {
20060
+ var TypeLiteral$4 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L245, 'TypeLiteral "unique"'), _, (0, import_lib2.$EXPECT)($L246, 'TypeLiteral "symbol"'), NonIdContinue), function($skip, $loc, $0, $1, $2, $3, $4) {
19599
20061
  return { type: "UniqueSymbolType", children: $0 };
19600
20062
  });
19601
- var TypeLiteral$5 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L245, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
20063
+ var TypeLiteral$5 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L247, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
19602
20064
  return { $loc, token: "[]" };
19603
20065
  });
19604
20066
  var TypeLiteral$$ = [TypeLiteral$0, TypeLiteral$1, TypeLiteral$2, TypeLiteral$3, TypeLiteral$4, TypeLiteral$5];
@@ -19617,7 +20079,7 @@ var InlineInterfacePropertyDelimiter$0 = (0, import_lib2.$C)((0, import_lib2.$S)
19617
20079
  var InlineInterfacePropertyDelimiter$1 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$Y)((0, import_lib2.$S)(SameLineOrIndentedFurther, InlineBasicInterfaceProperty)), InsertComma), function(value) {
19618
20080
  return value[1];
19619
20081
  });
19620
- var InlineInterfacePropertyDelimiter$2 = (0, import_lib2.$Y)((0, import_lib2.$S)(__, (0, import_lib2.$C)((0, import_lib2.$EXPECT)($L16, 'InlineInterfacePropertyDelimiter ":"'), (0, import_lib2.$EXPECT)($L141, 'InlineInterfacePropertyDelimiter ")"'), (0, import_lib2.$EXPECT)($L46, 'InlineInterfacePropertyDelimiter "]"'), (0, import_lib2.$EXPECT)($L37, 'InlineInterfacePropertyDelimiter "}"'))));
20082
+ var InlineInterfacePropertyDelimiter$2 = (0, import_lib2.$Y)((0, import_lib2.$S)(__, (0, import_lib2.$C)((0, import_lib2.$EXPECT)($L16, 'InlineInterfacePropertyDelimiter ":"'), (0, import_lib2.$EXPECT)($L143, 'InlineInterfacePropertyDelimiter ")"'), (0, import_lib2.$EXPECT)($L46, 'InlineInterfacePropertyDelimiter "]"'), (0, import_lib2.$EXPECT)($L37, 'InlineInterfacePropertyDelimiter "}"'))));
19621
20083
  var InlineInterfacePropertyDelimiter$3 = (0, import_lib2.$Y)(EOS);
19622
20084
  var InlineInterfacePropertyDelimiter$$ = [InlineInterfacePropertyDelimiter$0, InlineInterfacePropertyDelimiter$1, InlineInterfacePropertyDelimiter$2, InlineInterfacePropertyDelimiter$3];
19623
20085
  function InlineInterfacePropertyDelimiter(ctx, state2) {
@@ -19857,7 +20319,7 @@ var CivetPrologue$$ = [CivetPrologue$0, CivetPrologue$1];
19857
20319
  function CivetPrologue(ctx, state2) {
19858
20320
  return (0, import_lib2.$EVENT_C)(ctx, state2, "CivetPrologue", CivetPrologue$$);
19859
20321
  }
19860
- var CivetPrologueContent$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L246, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib2.$Q)(CivetOption), (0, import_lib2.$EXPECT)($R98, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
20322
+ var CivetPrologueContent$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L248, 'CivetPrologueContent "civet"'), NonIdContinue, (0, import_lib2.$Q)(CivetOption), (0, import_lib2.$EXPECT)($R98, "CivetPrologueContent /[\\s]*/")), function($skip, $loc, $0, $1, $2, $3, $4) {
19861
20323
  var options = $3;
19862
20324
  return {
19863
20325
  type: "CivetPrologue",
@@ -20566,7 +21028,7 @@ __export(sourcemap_civet_exports, {
20566
21028
  locationTable: () => locationTable,
20567
21029
  lookupLineColumn: () => lookupLineColumn
20568
21030
  });
20569
- var locationTable = function(input) {
21031
+ function locationTable(input) {
20570
21032
  const linesRe = /([^\r\n]*)(\r\n|\r|\n|$)/y;
20571
21033
  const lines = [];
20572
21034
  let line = 0;
@@ -20581,96 +21043,108 @@ var locationTable = function(input) {
20581
21043
  }
20582
21044
  }
20583
21045
  return lines;
20584
- };
20585
- var lookupLineColumn = function(table, pos) {
21046
+ }
21047
+ function lookupLineColumn(table, pos) {
20586
21048
  let l = 0;
20587
21049
  let prevEnd = 0;
20588
21050
  while (table[l] <= pos) {
20589
21051
  prevEnd = table[l++];
20590
21052
  }
20591
21053
  return [l, pos - prevEnd];
20592
- };
20593
- var SourceMap = function(sourceString) {
20594
- const srcTable = locationTable(sourceString);
20595
- const sm = {
20596
- lines: [[]],
20597
- line: 0,
20598
- colOffset: 0,
20599
- // relative to previous entry
20600
- srcLine: 0,
20601
- srcColumn: 0,
20602
- srcOffset: 0,
20603
- srcTable
20604
- };
20605
- const EOL2 = /\r?\n|\r/;
20606
- return {
20607
- data: sm,
20608
- source: function() {
20609
- return sourceString;
20610
- },
20611
- renderMappings: function() {
20612
- let lastSourceLine = 0;
20613
- let lastSourceColumn = 0;
20614
- return sm.lines.map((line) => {
20615
- return line.map((entry) => {
20616
- if (entry.length === 4) {
20617
- let [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
20618
- const lineDelta = srcLine - lastSourceLine;
20619
- colDelta = srcCol - lastSourceColumn;
20620
- lastSourceLine = srcLine;
20621
- lastSourceColumn = srcCol;
20622
- return `${encodeVlq(entry[0])}${encodeVlq(sourceFileIndex)}${encodeVlq(lineDelta)}${encodeVlq(colDelta)}`;
20623
- } else {
20624
- return encodeVlq(entry[0]);
21054
+ }
21055
+ var EOL2 = /\r?\n|\r/;
21056
+ var SourceMap = class {
21057
+ lines;
21058
+ line;
21059
+ colOffset;
21060
+ // relative to previous entry
21061
+ srcLine;
21062
+ srcColumn;
21063
+ srcOffset;
21064
+ srcTable;
21065
+ source;
21066
+ constructor(source1) {
21067
+ this.source = source1;
21068
+ this.lines = [[]];
21069
+ this.line = 0;
21070
+ this.colOffset = 0;
21071
+ this.srcLine = 0;
21072
+ this.srcColumn = 0;
21073
+ this.srcOffset = 0;
21074
+ this.srcTable = locationTable(this.source);
21075
+ }
21076
+ renderMappings() {
21077
+ let lastSourceLine = 0;
21078
+ let lastSourceColumn = 0;
21079
+ return (() => {
21080
+ const results = [];
21081
+ for (let ref1 = this.lines, i1 = 0, len3 = ref1.length; i1 < len3; i1++) {
21082
+ const line = ref1[i1];
21083
+ results.push((() => {
21084
+ const results1 = [];
21085
+ for (let i2 = 0, len1 = line.length; i2 < len1; i2++) {
21086
+ const entry = line[i2];
21087
+ if (entry.length === 4) {
21088
+ let [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
21089
+ const lineDelta = srcLine - lastSourceLine;
21090
+ colDelta = srcCol - lastSourceColumn;
21091
+ lastSourceLine = srcLine;
21092
+ lastSourceColumn = srcCol;
21093
+ results1.push(`${encodeVlq(entry[0])}${encodeVlq(sourceFileIndex)}${encodeVlq(lineDelta)}${encodeVlq(colDelta)}`);
21094
+ } else {
21095
+ results1.push(encodeVlq(entry[0]));
21096
+ }
20625
21097
  }
20626
- }).join(",");
20627
- }).join(";");
20628
- },
20629
- json: function(srcFileName, outFileName) {
20630
- return {
20631
- version: 3,
20632
- file: outFileName,
20633
- sources: [srcFileName],
20634
- mappings: this.renderMappings(),
20635
- names: [],
20636
- sourcesContent: [sourceString],
20637
- toString: function() {
20638
- return JSON.stringify(this);
20639
- }
20640
- };
20641
- },
20642
- updateSourceMap: function(outputStr, inputPos, colOffset = 0) {
20643
- const outLines = outputStr.split(EOL2);
20644
- let srcLine, srcCol;
21098
+ return results1;
21099
+ })().join(","));
21100
+ }
21101
+ return results;
21102
+ })().join(";");
21103
+ }
21104
+ json(srcFileName, outFileName) {
21105
+ return {
21106
+ version: 3,
21107
+ file: outFileName,
21108
+ sources: [srcFileName],
21109
+ mappings: this.renderMappings(),
21110
+ names: [],
21111
+ sourcesContent: [this.source],
21112
+ toString: function() {
21113
+ return JSON.stringify(this);
21114
+ }
21115
+ };
21116
+ }
21117
+ updateSourceMap(outputStr, inputPos, colOffset = 0) {
21118
+ const outLines = outputStr.split(EOL2);
21119
+ let srcLine, srcCol;
21120
+ if (inputPos != null) {
21121
+ [srcLine, srcCol] = lookupLineColumn(this.srcTable, inputPos);
21122
+ srcCol += colOffset;
21123
+ this.srcLine = srcLine;
21124
+ this.srcColumn = srcCol;
21125
+ this.srcOffset = inputPos + outputStr.length;
21126
+ }
21127
+ for (let i3 = 0, len22 = outLines.length; i3 < len22; i3++) {
21128
+ const i = i3;
21129
+ const line = outLines[i3];
21130
+ if (i > 0) {
21131
+ this.line++;
21132
+ this.srcLine++;
21133
+ this.colOffset = 0;
21134
+ this.lines[this.line] = [];
21135
+ this.srcColumn = srcCol = colOffset;
21136
+ }
21137
+ const l = this.colOffset;
21138
+ this.colOffset = line.length;
21139
+ this.srcColumn += line.length;
20645
21140
  if (inputPos != null) {
20646
- [srcLine, srcCol] = lookupLineColumn(srcTable, inputPos);
20647
- srcCol += colOffset;
20648
- sm.srcLine = srcLine;
20649
- sm.srcColumn = srcCol;
20650
- sm.srcOffset = inputPos + outputStr.length;
20651
- }
20652
- for (let i1 = 0, len3 = outLines.length; i1 < len3; i1++) {
20653
- const i = i1;
20654
- const line = outLines[i1];
20655
- if (i > 0) {
20656
- sm.line++;
20657
- sm.srcLine++;
20658
- sm.colOffset = 0;
20659
- sm.lines[sm.line] = [];
20660
- sm.srcColumn = srcCol = colOffset;
20661
- }
20662
- const l = sm.colOffset;
20663
- sm.colOffset = line.length;
20664
- sm.srcColumn += line.length;
20665
- if (inputPos != null) {
20666
- sm.lines[sm.line].push([l, 0, srcLine + i, srcCol]);
20667
- } else if (l != 0) {
20668
- sm.lines[sm.line].push([l]);
20669
- }
21141
+ this.lines[this.line].push([l, 0, srcLine + i, srcCol]);
21142
+ } else if (l != 0) {
21143
+ this.lines[this.line].push([l]);
20670
21144
  }
20671
- return;
20672
21145
  }
20673
- };
21146
+ return;
21147
+ }
20674
21148
  };
20675
21149
  var smRegexp = /\n\/\/# sourceMappingURL=data:application\/json;charset=utf-8;base64,([+a-zA-Z0-9\/]*=?=?)$/;
20676
21150
  var remap = function(codeWithSourceMap, upstreamMap, sourcePath, targetPath) {
@@ -20681,8 +21155,8 @@ var remap = function(codeWithSourceMap, upstreamMap, sourcePath, targetPath) {
20681
21155
  });
20682
21156
  if (sourceMapText) {
20683
21157
  const parsed = parseWithLines(sourceMapText);
20684
- const composedLines = composeLines(upstreamMap.data.lines, parsed.lines);
20685
- upstreamMap.data.lines = composedLines;
21158
+ const composedLines = composeLines(upstreamMap.lines, parsed.lines);
21159
+ upstreamMap.lines = composedLines;
20686
21160
  }
20687
21161
  const remappedSourceMapJSON = upstreamMap.json(sourcePath, targetPath);
20688
21162
  const newSourceMap = `${"sourceMapping"}URL=data:application/json;charset=utf-8;base64,${base64Encode(JSON.stringify(remappedSourceMapJSON))}`;
@@ -20744,10 +21218,10 @@ var VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
20744
21218
  var VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
20745
21219
  var encodeVlq = function(value) {
20746
21220
  let answer = "";
20747
- let ref1;
20748
- if (value < 0) ref1 = 1;
20749
- else ref1 = 0;
20750
- const signBit = ref1;
21221
+ let ref2;
21222
+ if (value < 0) ref2 = 1;
21223
+ else ref2 = 0;
21224
+ const signBit = ref2;
20751
21225
  let valueToEncode = (Math.abs(value) << 1) + signBit;
20752
21226
  while (valueToEncode || !answer) {
20753
21227
  let nextChunk = valueToEncode & VLQ_VALUE_MASK;
@@ -20919,8 +21393,8 @@ var WorkerPool = class {
20919
21393
  async run(op, ...args) {
20920
21394
  const id = this.jobId++;
20921
21395
  return await new Promise(async (resolve2, reject) => {
20922
- this.callbacks.set(id, { resolve: resolve2, reject });
20923
21396
  const job = { id, op, args };
21397
+ this.callbacks.set(id, { job, resolve: resolve2, reject });
20924
21398
  if (this.idle.length) {
20925
21399
  const worker = this.idle.shift();
20926
21400
  worker.ref();
@@ -20947,8 +21421,32 @@ var WorkerPool = class {
20947
21421
  const callback = this.callbacks.get(response.id);
20948
21422
  this.callbacks.delete(response.id);
20949
21423
  if (response.error) {
20950
- callback.reject(response.error);
21424
+ const message = `${response.error.name}: ${response.error.message}`;
21425
+ let ref;
21426
+ if (response.error.type in globalThis) {
21427
+ ref = new globalThis[response.error.type](message);
21428
+ } else {
21429
+ ref = new Error(message);
21430
+ }
21431
+ ;
21432
+ const error = ref;
21433
+ try {
21434
+ error.name = response.error.name;
21435
+ } catch (e) {
21436
+ }
21437
+ callback.reject(error);
20951
21438
  } else {
21439
+ let ref1;
21440
+ if (ref1 = response.result?.sourceMap) {
21441
+ const sourceMap = ref1;
21442
+ response.result.sourceMap = new SourceMap(sourceMap.source);
21443
+ Object.assign(response.result.sourceMap, sourceMap);
21444
+ }
21445
+ let ref2;
21446
+ if (ref2 = callback.job.args[1]?.errors) {
21447
+ const errors = ref2;
21448
+ errors.splice(0, 1 / 0, ...response.errors);
21449
+ }
20952
21450
  callback.resolve(response.result);
20953
21451
  }
20954
21452
  if (this.spawned > this.threads) {
@@ -21132,7 +21630,7 @@ ${counts}`;
21132
21630
  return;
21133
21631
  }
21134
21632
  if (options.sourceMap || options.inlineMap) {
21135
- options.sourceMap = SourceMap2(src);
21633
+ options.sourceMap = new SourceMap2(src);
21136
21634
  const code = generate_civet_default(ast2, options);
21137
21635
  checkErrors();
21138
21636
  if (options.inlineMap) {
@@ -21147,7 +21645,7 @@ ${counts}`;
21147
21645
  const result = generate_civet_default(ast2, options);
21148
21646
  if (options.errors?.length) {
21149
21647
  delete options.errors;
21150
- options.sourceMap = SourceMap2(src);
21648
+ options.sourceMap = new SourceMap2(src);
21151
21649
  generate_civet_default(ast2, options);
21152
21650
  checkErrors();
21153
21651
  }