@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.js CHANGED
@@ -57,7 +57,7 @@ var require_machine = __commonJS({
57
57
  $EVENT: () => $EVENT2,
58
58
  $EVENT_C: () => $EVENT_C2,
59
59
  $EXPECT: () => $EXPECT2,
60
- $L: () => $L247,
60
+ $L: () => $L249,
61
61
  $N: () => $N2,
62
62
  $P: () => $P2,
63
63
  $Q: () => $Q2,
@@ -82,7 +82,7 @@ var require_machine = __commonJS({
82
82
  return result;
83
83
  };
84
84
  }
85
- function $L247(str) {
85
+ function $L249(str) {
86
86
  return function(_ctx, state2) {
87
87
  const { input, pos } = state2, { length } = str, end = pos + length;
88
88
  if (input.substring(pos, end) === str) {
@@ -1650,6 +1650,15 @@ function gatherRecursiveAll(node, predicate) {
1650
1650
  }
1651
1651
 
1652
1652
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\parser\ref.civet.jsx
1653
+ var range = (start, end) => {
1654
+ const length = end - start;
1655
+ if (length <= 0) return [];
1656
+ const arr = Array(length);
1657
+ for (let i = 0; i < length; ++i) {
1658
+ arr[i] = i + start;
1659
+ }
1660
+ return arr;
1661
+ };
1653
1662
  function makeRef(base = "ref", id = base) {
1654
1663
  return {
1655
1664
  type: "Ref",
@@ -1662,7 +1671,7 @@ function needsRef(expression, base = "ref") {
1662
1671
  return;
1663
1672
  }
1664
1673
  if (Array.isArray(expression)) {
1665
- const nonempty = ((s) => Array.from({ length: expression.length - s }, (_2, i) => s + i))(0).filter((i) => !isWhitespaceOrEmpty(expression[i]));
1674
+ const nonempty = range(0, expression.length).filter((i) => !isWhitespaceOrEmpty(expression[i]));
1666
1675
  if (nonempty.length === 1) {
1667
1676
  let ref1;
1668
1677
  if (ref1 = needsRef(expression[nonempty[0]], base)) {
@@ -1678,8 +1687,9 @@ function needsRef(expression, base = "ref") {
1678
1687
  case "Ref":
1679
1688
  case "Identifier":
1680
1689
  case "Literal":
1681
- case "Placeholder":
1690
+ case "Placeholder": {
1682
1691
  return;
1692
+ }
1683
1693
  }
1684
1694
  return makeRef(base);
1685
1695
  }
@@ -1709,10 +1719,34 @@ function maybeRefAssignment(exp, base = "ref") {
1709
1719
  return { ref, ...makeRefAssignment(ref, exp) };
1710
1720
  }
1711
1721
  }
1722
+ function populateRefs(statements) {
1723
+ const refNodes = gatherRecursive(statements, ($) => $.type === "Ref");
1724
+ if (!refNodes.length) {
1725
+ return;
1726
+ }
1727
+ const ids = gatherRecursive(statements, ($1) => $1.type === "Identifier");
1728
+ const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
1729
+ for (let i1 = 0, len3 = refNodes.length; i1 < len3; i1++) {
1730
+ const ref = refNodes[i1];
1731
+ if (!(ref.type === "Ref")) {
1732
+ continue;
1733
+ }
1734
+ const { base } = ref;
1735
+ ref.type = "Identifier";
1736
+ let n = 0;
1737
+ let name = base;
1738
+ while (names.has(name)) {
1739
+ n++;
1740
+ name = `${base}${n}`;
1741
+ }
1742
+ names.add(name);
1743
+ ref.children = ref.names = [name];
1744
+ }
1745
+ }
1712
1746
 
1713
1747
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\parser\binding.civet.jsx
1714
1748
  function adjustAtBindings(statements, asThis = false) {
1715
- for (let ref1 = gatherRecursiveAll(statements, ($) => $.type === "AtBindingProperty"), i1 = 0, len3 = ref1.length; i1 < len3; i1++) {
1749
+ for (let ref1 = gatherRecursiveAll(statements, ($1) => $1.type === "AtBindingProperty"), i1 = 0, len3 = ref1.length; i1 < len3; i1++) {
1716
1750
  const binding = ref1[i1];
1717
1751
  const { ref } = binding;
1718
1752
  if (asThis) {
@@ -1730,7 +1764,7 @@ function adjustAtBindings(statements, asThis = false) {
1730
1764
  }
1731
1765
  }
1732
1766
  function adjustBindingElements(elements) {
1733
- const names = elements.flatMap(($1) => $1.names || []);
1767
+ const names = elements.flatMap(($2) => $2.names || []);
1734
1768
  const { length } = elements;
1735
1769
  let blockPrefix, restIndex = -1, restCount = 0;
1736
1770
  for (let i2 = 0, len1 = elements.length; i2 < len1; i2++) {
@@ -1788,16 +1822,40 @@ function adjustBindingElements(elements) {
1788
1822
  length
1789
1823
  };
1790
1824
  }
1825
+ function gatherSubbindings(node, subbindings = []) {
1826
+ for (let ref2 = gatherRecursiveAll(node, ($) => $.subbinding != null), i3 = 0, len22 = ref2.length; i3 < len22; i3++) {
1827
+ const p = ref2[i3];
1828
+ const { subbinding } = p;
1829
+ subbindings.push(", ", subbinding);
1830
+ gatherSubbindings(subbinding, subbindings);
1831
+ }
1832
+ return subbindings;
1833
+ }
1834
+ function simplifyBindingProperties(node) {
1835
+ const results = [];
1836
+ for (let ref3 = gatherRecursiveAll(node, ($3) => $3.type === "BindingProperty"), i4 = 0, len3 = ref3.length; i4 < len3; i4++) {
1837
+ const p = ref3[i4];
1838
+ const { name, value } = p;
1839
+ if (value?.type === "NamedBindingPattern" && value.binding === name) {
1840
+ const [ws] = p.children;
1841
+ results.push(p.children = [ws, name, p.delim]);
1842
+ } else {
1843
+ results.push(void 0);
1844
+ }
1845
+ }
1846
+ ;
1847
+ return results;
1848
+ }
1791
1849
  function gatherBindingCode(statements, opts) {
1792
1850
  const thisAssignments = [];
1793
1851
  const splices = [];
1794
1852
  function insertRestSplices(s, p, thisAssignments2) {
1795
1853
  let m;
1796
- for (let ref2 = gatherRecursiveAll(
1854
+ for (let ref4 = gatherRecursiveAll(
1797
1855
  s,
1798
1856
  (n) => n.blockPrefix || opts?.injectParamProps && n.accessModifier || n.type === "AtBinding" || opts?.assignPins && (m = n.type, m === "PinPattern" || m === "PinProperty")
1799
- ), i3 = 0, len22 = ref2.length; i3 < len22; i3++) {
1800
- let n = ref2[i3];
1857
+ ), i5 = 0, len4 = ref4.length; i5 < len4; i5++) {
1858
+ let n = ref4[i5];
1801
1859
  if (n.type === "AtBinding") {
1802
1860
  const { ref } = n;
1803
1861
  const { id } = ref;
@@ -1806,7 +1864,7 @@ function gatherBindingCode(statements, opts) {
1806
1864
  }
1807
1865
  if (opts?.assignPins) {
1808
1866
  if (n.type === "PinProperty") {
1809
- n.children = n.children.flatMap(($2) => $2 === n.name ? [n.name, ": ", n.value] : $2);
1867
+ n.children = n.children.flatMap(($4) => $4 === n.name ? [n.name, ": ", n.value] : $4);
1810
1868
  updateParentPointers(n);
1811
1869
  n = n.value;
1812
1870
  }
@@ -1828,8 +1886,8 @@ function gatherBindingCode(statements, opts) {
1828
1886
  }
1829
1887
  }
1830
1888
  if (opts?.injectParamProps && n.type === "Parameter" && n.accessModifier) {
1831
- for (let ref3 = n.names, i4 = 0, len3 = ref3.length; i4 < len3; i4++) {
1832
- const id = ref3[i4];
1889
+ for (let ref5 = n.names, i6 = 0, len5 = ref5.length; i6 < len5; i6++) {
1890
+ const id = ref5[i6];
1833
1891
  thisAssignments2.push({
1834
1892
  type: "AssignmentExpression",
1835
1893
  children: [`this.${id} = `, id],
@@ -1847,8 +1905,8 @@ function gatherBindingCode(statements, opts) {
1847
1905
  return [splices, thisAssignments];
1848
1906
  }
1849
1907
  function arrayElementHasTrailingComma(elementNode) {
1850
- let ref4;
1851
- const lastChild = (ref4 = elementNode.children)[ref4.length - 1];
1908
+ let ref6;
1909
+ const lastChild = (ref6 = elementNode.children)[ref6.length - 1];
1852
1910
  return lastChild && lastChild[lastChild.length - 1]?.token === ",";
1853
1911
  }
1854
1912
  function gatherBindingPatternTypeSuffix(pattern) {
@@ -1859,9 +1917,9 @@ function gatherBindingPatternTypeSuffix(pattern) {
1859
1917
  switch (pattern.type) {
1860
1918
  case "ArrayBindingPattern": {
1861
1919
  {
1862
- const results = [];
1863
- for (let ref5 = pattern.elements, i5 = 0, len4 = ref5.length; i5 < len4; i5++) {
1864
- const elem = ref5[i5];
1920
+ const results1 = [];
1921
+ for (let ref7 = pattern.elements, i7 = 0, len6 = ref7.length; i7 < len6; i7++) {
1922
+ const elem = ref7[i7];
1865
1923
  let { typeSuffix } = elem;
1866
1924
  typeSuffix ??= elem.binding?.typeSuffix;
1867
1925
  if (typeSuffix) {
@@ -1878,10 +1936,10 @@ function gatherBindingPatternTypeSuffix(pattern) {
1878
1936
  } else {
1879
1937
  typeElement[0] ??= "unknown";
1880
1938
  }
1881
- results.push(typeElement);
1939
+ results1.push(typeElement);
1882
1940
  }
1883
1941
  ;
1884
- const types = results;
1942
+ const types = results1;
1885
1943
  if (count) {
1886
1944
  const t = [": [", types, "]"];
1887
1945
  pattern.typeSuffix = {
@@ -1898,9 +1956,9 @@ function gatherBindingPatternTypeSuffix(pattern) {
1898
1956
  case "ObjectBindingPattern": {
1899
1957
  {
1900
1958
  let restType;
1901
- const results1 = [];
1902
- for (let ref6 = pattern.properties, i6 = 0, len5 = ref6.length; i6 < len5; i6++) {
1903
- const prop = ref6[i6];
1959
+ const results2 = [];
1960
+ for (let ref8 = pattern.properties, i8 = 0, len7 = ref8.length; i8 < len7; i8++) {
1961
+ const prop = ref8[i8];
1904
1962
  let { typeSuffix } = prop;
1905
1963
  typeSuffix ??= prop.value?.typeSuffix;
1906
1964
  if (typeSuffix) {
@@ -1914,12 +1972,12 @@ function gatherBindingPatternTypeSuffix(pattern) {
1914
1972
  switch (prop.type) {
1915
1973
  case "BindingProperty": {
1916
1974
  const ws = prop.children.slice(0, prop.children.indexOf(prop.name));
1917
- results1.push([...ws, prop.name, typeSuffix, prop.delim]);
1975
+ results2.push([...ws, prop.name, typeSuffix, prop.delim]);
1918
1976
  break;
1919
1977
  }
1920
1978
  case "AtBindingProperty": {
1921
1979
  const ws = prop.children.slice(0, prop.children.indexOf(prop.binding));
1922
- results1.push([...ws, prop.ref.id, typeSuffix, prop.delim]);
1980
+ results2.push([...ws, prop.ref.id.replace(/^#/, ""), typeSuffix, prop.delim]);
1923
1981
  break;
1924
1982
  }
1925
1983
  case "BindingRestProperty": {
@@ -1929,7 +1987,7 @@ function gatherBindingPatternTypeSuffix(pattern) {
1929
1987
  }
1930
1988
  }
1931
1989
  ;
1932
- const types = results1;
1990
+ const types = results2;
1933
1991
  if (count) {
1934
1992
  const t = ["{", types, "}"];
1935
1993
  if (restType != null) {
@@ -2010,16 +2068,18 @@ var declareHelper = {
2010
2068
  "\n"
2011
2069
  ]]);
2012
2070
  },
2013
- rslice(rsliceRef) {
2014
- const RSliceable = makeRef("RSliceable");
2071
+ RSliceable(RSliceableRef) {
2015
2072
  state.prelude.push([
2016
2073
  "",
2017
- ts(["type ", RSliceable, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"])
2074
+ ts(["type ", RSliceableRef, "<R> = string | {length: number; slice(start: number, end: number): {reverse(): R}}\n"])
2018
2075
  ]);
2076
+ },
2077
+ rslice(rsliceRef) {
2078
+ const RSliceableRef = getHelperRef("RSliceable");
2019
2079
  state.prelude.push(["", [
2020
2080
  preludeVar,
2021
2081
  rsliceRef,
2022
- ts([": <R, T extends string | ", RSliceable, "<R>>(a: T, start?: number, end?: number) => T extends string ? string : T extends ", RSliceable, "<infer R> ? R : never"]),
2082
+ ts([": <R, T extends string | ", RSliceableRef, "<R>>(a: T, start?: number, end?: number) => T extends string ? string : T extends ", RSliceableRef, "<infer R> ? R : never"]),
2023
2083
  " = ((a, start = -1, end = -1) => {\n",
2024
2084
  " const l = a.length\n",
2025
2085
  " if (start < 0) start += l\n",
@@ -2038,6 +2098,72 @@ var declareHelper = {
2038
2098
  "})"
2039
2099
  ], ";\n"]);
2040
2100
  },
2101
+ range(rangeRef) {
2102
+ state.prelude.push(["", [
2103
+ preludeVar,
2104
+ rangeRef,
2105
+ ts([": (start: number, end: number) => number[]"]),
2106
+ " ",
2107
+ `= (start, end) => {
2108
+ const length = end - start;
2109
+ if (length <= 0) return [];
2110
+ const arr = Array(length);
2111
+ for (let i = 0; i < length; ++i) {
2112
+ arr[i] = i + start;
2113
+ }
2114
+ return arr;
2115
+ }`
2116
+ ], ";\n"]);
2117
+ },
2118
+ revRange(revRangeRef) {
2119
+ state.prelude.push(["", [
2120
+ preludeVar,
2121
+ revRangeRef,
2122
+ ts([": (start: number, end: number) => number[]"]),
2123
+ " ",
2124
+ `= (start, end) => {
2125
+ const length = start - end;
2126
+ if (length <= 0) return [];
2127
+ const arr = Array(length);
2128
+ for (let i = 0; i < length; ++i) {
2129
+ arr[i] = start - i;
2130
+ }
2131
+ return arr;
2132
+ }`
2133
+ ], ";\n"]);
2134
+ },
2135
+ stringRange(stringRangeRef) {
2136
+ state.prelude.push(["", [
2137
+ preludeVar,
2138
+ stringRangeRef,
2139
+ ts([": (start: number, length: number) => string[]"]),
2140
+ " ",
2141
+ `= (start, length) => {
2142
+ if (length <= 0) return [];
2143
+ const arr = Array(length);
2144
+ for (let i = 0; i < length; ++i) {
2145
+ arr[i] = String.fromCharCode(start + i);
2146
+ }
2147
+ return arr;
2148
+ }`
2149
+ ], ";\n"]);
2150
+ },
2151
+ revStringRange(revStringRangeRef) {
2152
+ state.prelude.push(["", [
2153
+ preludeVar,
2154
+ revStringRangeRef,
2155
+ ts([": (start: number, length: number) => string[]"]),
2156
+ " ",
2157
+ `= (start, length) => {
2158
+ if (length <= 0) return [];
2159
+ const arr = Array(length);
2160
+ for (let i = 0; i < length; ++i) {
2161
+ arr[i] = String.fromCharCode(start - i);
2162
+ }
2163
+ return arr;
2164
+ }`
2165
+ ], ";\n"]);
2166
+ },
2041
2167
  div(divRef) {
2042
2168
  state.prelude.push(["", [
2043
2169
  // [indent, statement]
@@ -2180,9 +2306,28 @@ function peekHelperRef(base) {
2180
2306
  return state.helperRefs[base];
2181
2307
  }
2182
2308
  function extractPreludeFor(node) {
2183
- let helpers = new Set(Object.values(state.helperRefs));
2184
- helpers = new Set(gatherRecursive(node, helpers.has.bind(helpers)));
2185
- return state.prelude.filter((s) => gatherRecursive(s, helpers.has.bind(helpers)).length);
2309
+ if (!state.prelude.length) {
2310
+ return state.prelude;
2311
+ }
2312
+ const allHelpers = new Set(Object.values(state.helperRefs));
2313
+ const isHelper = allHelpers.has.bind(allHelpers);
2314
+ const usedHelpers = new Set(gatherRecursive(node, isHelper));
2315
+ while (true) {
2316
+ let prelude = state.prelude.filter((s) => {
2317
+ return gatherRecursive(s, usedHelpers.has.bind(usedHelpers)).length;
2318
+ });
2319
+ let changed = false;
2320
+ for (let ref1 = gatherRecursive(prelude, isHelper), i = 0, len3 = ref1.length; i < len3; i++) {
2321
+ const helper = ref1[i];
2322
+ if (!usedHelpers.has(helper)) {
2323
+ usedHelpers.add(helper);
2324
+ changed = true;
2325
+ }
2326
+ }
2327
+ if (!changed) {
2328
+ return prelude;
2329
+ }
2330
+ }
2186
2331
  }
2187
2332
 
2188
2333
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\generate.civet.jsx
@@ -2194,7 +2339,8 @@ function stringify(node) {
2194
2339
  }
2195
2340
  }
2196
2341
  function gen(root, options) {
2197
- const updateSourceMap = options?.sourceMap?.updateSourceMap;
2342
+ let ref;
2343
+ const updateSourceMap = (ref = options?.sourceMap)?.updateSourceMap.bind(ref);
2198
2344
  return recurse(root);
2199
2345
  function recurse(node) {
2200
2346
  if (!(node != null)) {
@@ -2219,15 +2365,15 @@ function gen(root, options) {
2219
2365
  let line = "?";
2220
2366
  let column = "?";
2221
2367
  let offset;
2222
- let ref;
2223
- if (ref = options.sourceMap) {
2224
- const sourceMap = ref;
2368
+ let ref1;
2369
+ if (ref1 = options.sourceMap) {
2370
+ const sourceMap = ref1;
2225
2371
  if (node.$loc != null) {
2226
2372
  sourceMap.updateSourceMap("", node.$loc.pos);
2227
2373
  }
2228
- line = sourceMap.data.srcLine + 1;
2229
- column = sourceMap.data.srcColumn + 1;
2230
- offset = sourceMap.data.srcOffset;
2374
+ line = sourceMap.srcLine + 1;
2375
+ column = sourceMap.srcColumn + 1;
2376
+ offset = sourceMap.srcOffset;
2231
2377
  }
2232
2378
  options.errors ??= [];
2233
2379
  options.errors.push(new import_lib2.ParseError(
@@ -3278,9 +3424,30 @@ function wrapIterationReturningResults(statement, collect) {
3278
3424
  if (statement.resultsRef != null) {
3279
3425
  return;
3280
3426
  }
3281
- const resultsRef = statement.resultsRef = makeRef("results");
3427
+ if (statement.resultsParent) {
3428
+ const { ancestor: ancestor2 } = findAncestor(
3429
+ statement,
3430
+ ($5) => $5.type === "ForStatement" || $5.type === "IterationStatement",
3431
+ isFunction
3432
+ );
3433
+ if (!ancestor2) {
3434
+ statement.children.unshift({
3435
+ type: "Error",
3436
+ message: "Could not find ancestor of spread iteration"
3437
+ });
3438
+ return;
3439
+ }
3440
+ const resultsRef2 = statement.resultsRef = ancestor2.resultsRef;
3441
+ iterationDefaultBody(statement);
3442
+ const { block } = statement;
3443
+ if (!block.empty) {
3444
+ assignResults(block, (node) => [resultsRef2, ".push(", node, ")"]);
3445
+ }
3446
+ return;
3447
+ }
3448
+ const resultsRef = statement.resultsRef ??= makeRef("results");
3282
3449
  const declaration = iterationDeclaration(statement);
3283
- const { ancestor, child } = findAncestor(statement, ($5) => $5.type === "BlockStatement");
3450
+ const { ancestor, child } = findAncestor(statement, ($6) => $6.type === "BlockStatement");
3284
3451
  assert.notNull(ancestor, `Could not find block containing ${statement.type}`);
3285
3452
  const index = findChildIndex(ancestor.expressions, child);
3286
3453
  assert.notEqual(index, -1, `Could not find ${statement.type} in containing block`);
@@ -3324,6 +3491,9 @@ function iterationDeclaration(statement) {
3324
3491
  case "every": {
3325
3492
  return "true";
3326
3493
  }
3494
+ case "first": {
3495
+ return "undefined";
3496
+ }
3327
3497
  case "min": {
3328
3498
  return "Infinity";
3329
3499
  }
@@ -3336,6 +3506,9 @@ function iterationDeclaration(statement) {
3336
3506
  case "join": {
3337
3507
  return '""';
3338
3508
  }
3509
+ case "concat": {
3510
+ return "[]";
3511
+ }
3339
3512
  default: {
3340
3513
  return "0";
3341
3514
  }
@@ -3380,10 +3553,16 @@ function iterationDeclaration(statement) {
3380
3553
  case "count": {
3381
3554
  return ["if (", node, ") ++", resultsRef];
3382
3555
  }
3556
+ case "first": {
3557
+ return [resultsRef, " = ", node, "; break"];
3558
+ }
3383
3559
  case "sum":
3384
3560
  case "join": {
3385
3561
  return [resultsRef, " += ", node];
3386
3562
  }
3563
+ case "concat": {
3564
+ return [getHelperRef("concatAssign"), "(", resultsRef, ", ", node, ")"];
3565
+ }
3387
3566
  case "product": {
3388
3567
  return [resultsRef, " *= ", node];
3389
3568
  }
@@ -3437,31 +3616,34 @@ function iterationDefaultBody(statement) {
3437
3616
  }
3438
3617
  }
3439
3618
  }
3440
- if (statement.type === "ForStatement" && statement.declaration?.type === "ForDeclaration") {
3441
- if (reduction) {
3442
- const bindings = patternBindings(statement.declaration.binding.pattern);
3443
- if (bindings.length) {
3444
- fillBlock(["", bindings[0]]);
3445
- for (const binding of bindings.slice(1)) {
3446
- binding.children.unshift({
3447
- type: "Error",
3448
- subtype: "Warning",
3449
- message: "Ignored binding in reduction loop with implicit body"
3450
- });
3619
+ if (statement.type === "ForStatement") {
3620
+ const declaration = statement.eachDeclaration ?? statement.declaration;
3621
+ if (declaration?.type === "ForDeclaration") {
3622
+ if (reduction) {
3623
+ const bindings = patternBindings(declaration.binding.pattern);
3624
+ if (bindings.length) {
3625
+ fillBlock(["", bindings[0]]);
3626
+ for (const binding of bindings.slice(1)) {
3627
+ binding.children.unshift({
3628
+ type: "Error",
3629
+ subtype: "Warning",
3630
+ message: "Ignored binding in reduction loop with implicit body"
3631
+ });
3632
+ }
3633
+ } else {
3634
+ fillBlock([
3635
+ "",
3636
+ {
3637
+ type: "Error",
3638
+ message: "Empty binding pattern in reduction loop with implicit body"
3639
+ }
3640
+ ]);
3451
3641
  }
3452
3642
  } else {
3453
- fillBlock([
3454
- "",
3455
- {
3456
- type: "Error",
3457
- message: "Empty binding pattern in reduction loop with implicit body"
3458
- }
3459
- ]);
3643
+ fillBlock(["", patternAsValue(declaration.binding.pattern)]);
3460
3644
  }
3461
- } else {
3462
- fillBlock(["", patternAsValue(statement.declaration.binding.pattern)]);
3645
+ block.empty = false;
3463
3646
  }
3464
- block.empty = false;
3465
3647
  }
3466
3648
  return false;
3467
3649
  }
@@ -3522,7 +3704,7 @@ function processParams(f) {
3522
3704
  }
3523
3705
  }
3524
3706
  }
3525
- parameters.names = before.flatMap(($6) => $6.names);
3707
+ parameters.names = before.flatMap(($7) => $7.names);
3526
3708
  parameters.parameters.splice(0, 1 / 0, ...[]);
3527
3709
  if (tt) {
3528
3710
  parameters.parameters.push(tt);
@@ -3533,14 +3715,15 @@ function processParams(f) {
3533
3715
  parameters.names.push(...rest.names || []);
3534
3716
  rest.children.pop();
3535
3717
  if (after.length) {
3536
- if (rest.binding.type === "ArrayBindingPattern" || rest.binding.type === "ObjectBindingPattern") {
3718
+ let m4;
3719
+ if (m4 = rest.binding.type, m4 === "ArrayBindingPattern" || m4 === "ObjectBindingPattern" || m4 === "NamedBindingPattern") {
3537
3720
  parameters.parameters.push({
3538
3721
  type: "Error",
3539
3722
  message: "Non-end rest parameter cannot be binding pattern"
3540
3723
  });
3541
3724
  }
3542
3725
  after = trimFirstSpace(after);
3543
- const names = after.flatMap(($7) => $7.names);
3726
+ const names = after.flatMap(($8) => $8.names);
3544
3727
  const elements = after.map((p) => {
3545
3728
  if (p.type === "Error") {
3546
3729
  return p;
@@ -3629,9 +3812,9 @@ function processParams(f) {
3629
3812
  colon,
3630
3813
  t,
3631
3814
  children: [
3632
- ...oldSuffix.children.filter(($8) => (
3815
+ ...oldSuffix.children.filter(($9) => (
3633
3816
  // spaces and colon
3634
- $8 !== oldSuffix.optional && $8 !== oldSuffix.t
3817
+ $9 !== oldSuffix.optional && $9 !== oldSuffix.t
3635
3818
  )),
3636
3819
  !oldSuffix.colon ? colon : void 0,
3637
3820
  t
@@ -3665,25 +3848,28 @@ function processParams(f) {
3665
3848
  injectParamProps: isConstructor,
3666
3849
  assignPins: true
3667
3850
  });
3851
+ const subbindings = gatherSubbindings(parameters.parameters);
3852
+ simplifyBindingProperties(parameters.parameters);
3853
+ simplifyBindingProperties(subbindings);
3668
3854
  if (isConstructor) {
3669
- const { ancestor } = findAncestor(f, ($9) => $9.type === "ClassExpression");
3855
+ const { ancestor } = findAncestor(f, ($10) => $10.type === "ClassExpression");
3670
3856
  if (ancestor != null) {
3671
- 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));
3857
+ 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));
3672
3858
  const classExpressions = ancestor.body.expressions;
3673
3859
  let index2 = findChildIndex(classExpressions, f);
3674
3860
  assert.notEqual(index2, -1, "Could not find constructor in class");
3675
- let m4;
3676
- while (m4 = classExpressions[index2 - 1]?.[1], typeof m4 === "object" && m4 != null && "type" in m4 && m4.type === "MethodDefinition" && "name" in m4 && m4.name === "constructor") {
3861
+ let m5;
3862
+ while (m5 = classExpressions[index2 - 1]?.[1], typeof m5 === "object" && m5 != null && "type" in m5 && m5.type === "MethodDefinition" && "name" in m5 && m5.name === "constructor") {
3677
3863
  index2--;
3678
3864
  }
3679
3865
  const fStatement = classExpressions[index2];
3680
- for (let ref18 = gatherRecursive(parameters, ($13) => $13.type === "Parameter"), i9 = 0, len8 = ref18.length; i9 < len8; i9++) {
3866
+ for (let ref18 = gatherRecursive(parameters, ($14) => $14.type === "Parameter"), i9 = 0, len8 = ref18.length; i9 < len8; i9++) {
3681
3867
  const parameter = ref18[i9];
3682
3868
  const { accessModifier } = parameter;
3683
3869
  if (!(accessModifier || parameter.typeSuffix)) {
3684
3870
  continue;
3685
3871
  }
3686
- for (let ref19 = gatherRecursive(parameter, ($14) => $14.type === "AtBinding"), i10 = 0, len9 = ref19.length; i10 < len9; i10++) {
3872
+ for (let ref19 = gatherRecursive(parameter, ($15) => $15.type === "AtBinding"), i10 = 0, len9 = ref19.length; i10 < len9; i10++) {
3687
3873
  const binding = ref19[i10];
3688
3874
  const typeSuffix = binding.parent?.typeSuffix;
3689
3875
  if (!(accessModifier || typeSuffix)) {
@@ -3713,6 +3899,15 @@ function processParams(f) {
3713
3899
  children: [";"]
3714
3900
  };
3715
3901
  let prefix = [];
3902
+ if (subbindings.length) {
3903
+ prefix.push(makeNode({
3904
+ type: "Declaration",
3905
+ children: ["const ", subbindings.slice(1)],
3906
+ names: subbindings.flatMap(($16) => $16.names ?? []),
3907
+ bindings: [],
3908
+ decl: "const"
3909
+ }));
3910
+ }
3716
3911
  for (let ref20 = splices, i11 = 0, len10 = ref20.length; i11 < len10; i11++) {
3717
3912
  const binding = ref20[i11];
3718
3913
  assert.equal(binding.type, "PostRestBindingElements", "splice should be of type Binding");
@@ -3766,7 +3961,7 @@ function processSignature(f) {
3766
3961
  f.async.push("async ");
3767
3962
  signature.modifier.async = true;
3768
3963
  } else {
3769
- for (let ref21 = gatherRecursiveWithinFunction(block, ($15) => $15.type === "Await"), i12 = 0, len11 = ref21.length; i12 < len11; i12++) {
3964
+ for (let ref21 = gatherRecursiveWithinFunction(block, ($17) => $17.type === "Await"), i12 = 0, len11 = ref21.length; i12 < len11; i12++) {
3770
3965
  const a = ref21[i12];
3771
3966
  const i = findChildIndex(a.parent, a);
3772
3967
  a.parent.children.splice(i + 1, 0, {
@@ -3781,9 +3976,9 @@ function processSignature(f) {
3781
3976
  f.generator.push("*");
3782
3977
  signature.modifier.generator = true;
3783
3978
  } else {
3784
- for (let ref22 = gatherRecursiveWithinFunction(block, ($16) => $16.type === "YieldExpression"), i13 = 0, len12 = ref22.length; i13 < len12; i13++) {
3979
+ for (let ref22 = gatherRecursiveWithinFunction(block, ($18) => $18.type === "YieldExpression"), i13 = 0, len12 = ref22.length; i13 < len12; i13++) {
3785
3980
  const y = ref22[i13];
3786
- const i = y.children.findIndex(($17) => $17.type === "Yield");
3981
+ const i = y.children.findIndex(($19) => $19.type === "Yield");
3787
3982
  y.children.splice(i + 1, 0, {
3788
3983
  type: "Error",
3789
3984
  message: `yield invalid in ${f.type === "ArrowFunction" ? "=> arrow function" : signature.modifier.get ? "getter" : signature.modifier.set ? "setter" : signature.name}`
@@ -3796,7 +3991,7 @@ function processSignature(f) {
3796
3991
  }
3797
3992
  }
3798
3993
  function processFunctions(statements, config2) {
3799
- for (let ref23 = gatherRecursiveAll(statements, ($18) => $18.type === "FunctionExpression" || $18.type === "ArrowFunction" || $18.type === "MethodDefinition"), i14 = 0, len13 = ref23.length; i14 < len13; i14++) {
3994
+ for (let ref23 = gatherRecursiveAll(statements, ($20) => $20.type === "FunctionExpression" || $20.type === "ArrowFunction" || $20.type === "MethodDefinition"), i14 = 0, len13 = ref23.length; i14 < len13; i14++) {
3800
3995
  const f = ref23[i14];
3801
3996
  if (f.type === "FunctionExpression" || f.type === "MethodDefinition") {
3802
3997
  implicitFunctionBlock(f);
@@ -3808,7 +4003,7 @@ function processFunctions(statements, config2) {
3808
4003
  }
3809
4004
  function expressionizeIteration(exp) {
3810
4005
  let { async, generator, block, children, statement } = exp;
3811
- const i = children.indexOf(statement);
4006
+ let i = children.indexOf(statement);
3812
4007
  if (i < 0) {
3813
4008
  throw new Error("Could not find iteration statement in iteration expression");
3814
4009
  }
@@ -3819,12 +4014,6 @@ function expressionizeIteration(exp) {
3819
4014
  }
3820
4015
  let statements;
3821
4016
  if (generator) {
3822
- if (statement.reduction) {
3823
- children.unshift({
3824
- type: "Error",
3825
- message: `Cannot use reduction (${statement.reduction.subtype}) with generators`
3826
- });
3827
- }
3828
4017
  iterationDefaultBody(statement);
3829
4018
  assignResults(block, (node) => {
3830
4019
  return {
@@ -3872,7 +4061,7 @@ function expressionizeIteration(exp) {
3872
4061
  }
3873
4062
  }
3874
4063
  function processIterationExpressions(statements) {
3875
- for (let ref25 = gatherRecursiveAll(statements, ($19) => $19.type === "IterationExpression"), i15 = 0, len14 = ref25.length; i15 < len14; i15++) {
4064
+ for (let ref25 = gatherRecursiveAll(statements, ($21) => $21.type === "IterationExpression"), i15 = 0, len14 = ref25.length; i15 < len14; i15++) {
3876
4065
  const s = ref25[i15];
3877
4066
  expressionizeIteration(s);
3878
4067
  }
@@ -3922,12 +4111,12 @@ function processCoffeeDo(ws, expression) {
3922
4111
  const newParameters = {
3923
4112
  ...parameters,
3924
4113
  parameters: newParameterList,
3925
- children: parameters.children.map(($20) => $20 === parameterList ? newParameterList : $20)
4114
+ children: parameters.children.map(($22) => $22 === parameterList ? newParameterList : $22)
3926
4115
  };
3927
4116
  expression = {
3928
4117
  ...expression,
3929
4118
  parameters: newParameters,
3930
- children: expression.children.map(($21) => $21 === parameters ? newParameters : $21)
4119
+ children: expression.children.map(($23) => $23 === parameters ? newParameters : $23)
3931
4120
  };
3932
4121
  }
3933
4122
  return {
@@ -3949,7 +4138,7 @@ function makeAmpersandFunction(rhs) {
3949
4138
  ref = makeRef("$");
3950
4139
  inplacePrepend(ref, body);
3951
4140
  }
3952
- if (startsWithPredicate(body, ($22) => $22.type === "ObjectExpression")) {
4141
+ if (startsWithPredicate(body, ($24) => $24.type === "ObjectExpression")) {
3953
4142
  body = makeLeftHandSideExpression(body);
3954
4143
  }
3955
4144
  const parameterList = [
@@ -4745,17 +4934,15 @@ function getPatternConditions(pattern, ref, conditions = []) {
4745
4934
  break;
4746
4935
  }
4747
4936
  case "ConditionFragment": {
4748
- let { children } = pattern;
4749
- if (children.length) {
4750
- let [first, ...rest] = children;
4937
+ let { rhs } = pattern;
4938
+ if (rhs.length) {
4939
+ let [first, ...rest] = rhs;
4751
4940
  let [ws, ...op] = first;
4752
4941
  ws = [" "].concat(ws);
4753
4942
  first = [ws, ...op];
4754
- children = [first, ...rest];
4943
+ rhs = [first, ...rest];
4755
4944
  }
4756
- conditions.push(
4757
- processBinaryOpExpression([ref, children])
4758
- );
4945
+ conditions.push(processBinaryOpExpression([ref, rhs]));
4759
4946
  break;
4760
4947
  }
4761
4948
  case "RegularExpressionLiteral": {
@@ -4773,6 +4960,10 @@ function getPatternConditions(pattern, ref, conditions = []) {
4773
4960
  ]);
4774
4961
  break;
4775
4962
  }
4963
+ case "NamedBindingPattern": {
4964
+ getPatternConditions(pattern.pattern, ref, conditions);
4965
+ break;
4966
+ }
4776
4967
  case "Literal": {
4777
4968
  conditions.push([
4778
4969
  ref,
@@ -4802,27 +4993,51 @@ function getPatternBlockPrefix(pattern, ref, decl = "const ", typeSuffix) {
4802
4993
  }
4803
4994
  case "Literal":
4804
4995
  case "RegularExpressionLiteral":
4805
- case "PinPattern":
4806
- case "ConditionFragment": {
4996
+ case "PinPattern": {
4807
4997
  return;
4808
4998
  }
4999
+ case "ConditionFragment": {
5000
+ if (!pattern.binding) {
5001
+ return;
5002
+ }
5003
+ ;
5004
+ break;
5005
+ }
4809
5006
  }
4810
5007
  let [splices, thisAssignments] = gatherBindingCode(pattern);
4811
5008
  const patternBindings2 = nonMatcherBindings(pattern);
4812
- splices = splices.map((s) => [", ", nonMatcherBindings(s)]);
5009
+ const subbindings = gatherSubbindings(patternBindings2);
5010
+ simplifyBindingProperties(patternBindings2);
5011
+ simplifyBindingProperties(subbindings);
5012
+ splices = splices.flatMap((s) => [", ", nonMatcherBindings(s)]);
4813
5013
  thisAssignments = thisAssignments.map(($7) => ["", $7, ";"]);
4814
- const duplicateDeclarations = aggregateDuplicateBindings([patternBindings2, splices]);
4815
- return [
4816
- ["", {
5014
+ const duplicateDeclarations = aggregateDuplicateBindings([patternBindings2, splices, subbindings]);
5015
+ const blockPrefix = [];
5016
+ if (ref || subbindings.length || splices.length) {
5017
+ const children = [decl];
5018
+ if (ref) {
5019
+ children.push(patternBindings2, typeSuffix, " = ", ref);
5020
+ }
5021
+ children.push(...subbindings);
5022
+ children.push(...splices);
5023
+ if (!ref) {
5024
+ children.splice(1, 1);
5025
+ }
5026
+ blockPrefix.push(["", {
4817
5027
  type: "Declaration",
4818
- children: [decl, patternBindings2, typeSuffix, " = ", ref, ...splices],
5028
+ children,
5029
+ decl,
4819
5030
  names: [],
4820
5031
  bindings: []
4821
5032
  // avoid implicit return of any bindings
4822
- }, ";"],
4823
- ...thisAssignments,
4824
- ...duplicateDeclarations.map(($8) => ["", $8, ";"])
4825
- ];
5033
+ }, ";"]);
5034
+ }
5035
+ blockPrefix.push(...thisAssignments);
5036
+ blockPrefix.push(...duplicateDeclarations.map(($8) => ["", $8, ";"]));
5037
+ if (!blockPrefix.length) {
5038
+ return;
5039
+ }
5040
+ return blockPrefix;
4826
5041
  }
4827
5042
  function elideMatchersFromArrayBindings(elements) {
4828
5043
  const results = [];
@@ -4863,45 +5078,75 @@ function elideMatchersFromArrayBindings(elements) {
4863
5078
  return results;
4864
5079
  }
4865
5080
  function elideMatchersFromPropertyBindings(properties) {
4866
- return properties.map((p) => {
5081
+ const results1 = [];
5082
+ for (let i6 = 0, len5 = properties.length; i6 < len5; i6++) {
5083
+ const p = properties[i6];
4867
5084
  switch (p.type) {
4868
- case "BindingProperty": {
5085
+ case "BindingProperty":
5086
+ case "PinProperty": {
4869
5087
  const { children, name, value } = p;
4870
5088
  const [ws] = children;
4871
5089
  const shouldElide = name.type === "NumericLiteral" && !value?.name || name.type === "ComputedPropertyName" && value?.subtype === "NumericLiteral";
4872
5090
  if (shouldElide) {
4873
- return;
4874
- }
4875
- switch (value && value.type) {
4876
- case "ArrayBindingPattern":
4877
- case "ObjectBindingPattern": {
4878
- const bindings = nonMatcherBindings(value);
4879
- return {
4880
- ...p,
4881
- children: [ws, name, bindings && ": ", bindings, p.delim]
4882
- };
5091
+ continue;
5092
+ } else {
5093
+ let contents;
5094
+ let m1;
5095
+ switch (value?.type) {
5096
+ case "ArrayBindingPattern":
5097
+ case "ObjectBindingPattern": {
5098
+ const bindings = nonMatcherBindings(value);
5099
+ contents = {
5100
+ ...p,
5101
+ value: bindings,
5102
+ children: [ws, name, bindings && ": ", bindings, p.delim]
5103
+ };
5104
+ break;
5105
+ }
5106
+ case "Identifier":
5107
+ case void 0: {
5108
+ contents = p;
5109
+ break;
5110
+ }
5111
+ case "NamedBindingPattern": {
5112
+ const bindings = nonMatcherBindings(value.pattern);
5113
+ contents = {
5114
+ ...p,
5115
+ subbinding: (m1 = bindings?.type, m1 === "ArrayBindingPattern" || m1 === "ObjectBindingPattern" || m1 === "Identifier") ? [
5116
+ bindings,
5117
+ " = ",
5118
+ name
5119
+ ] : void 0
5120
+ };
5121
+ if (p.name === value.binding) {
5122
+ contents.children = [ws, name, p.delim];
5123
+ }
5124
+ ;
5125
+ break;
5126
+ }
5127
+ default: {
5128
+ contents = void 0;
5129
+ }
4883
5130
  }
4884
- case "Identifier": {
4885
- return p;
5131
+ if (contents) {
5132
+ results1.push(contents);
5133
+ } else {
5134
+ continue;
4886
5135
  }
4887
- case "Literal":
4888
- case "RegularExpressionLiteral":
4889
- case "StringLiteral":
4890
- default:
4891
- return {
4892
- ...p,
4893
- children: [ws, name, p.delim]
4894
- };
4895
5136
  }
5137
+ ;
5138
+ break;
5139
+ }
5140
+ default: {
5141
+ results1.push(p);
4896
5142
  }
4897
- case "PinProperty":
4898
- case "BindingRestProperty":
4899
- default:
4900
- return p;
4901
5143
  }
4902
- });
5144
+ }
5145
+ ;
5146
+ return results1;
4903
5147
  }
4904
5148
  function nonMatcherBindings(pattern) {
5149
+ let m2;
4905
5150
  switch (pattern.type) {
4906
5151
  case "ArrayBindingPattern":
4907
5152
  case "PostRestBindingElements": {
@@ -4920,6 +5165,16 @@ function nonMatcherBindings(pattern) {
4920
5165
  children: pattern.children.map(($10) => $10 === pattern.properties ? properties : $10)
4921
5166
  });
4922
5167
  }
5168
+ case "NamedBindingPattern": {
5169
+ const bindings = nonMatcherBindings(pattern.pattern);
5170
+ return makeNode({
5171
+ ...pattern,
5172
+ subbinding: (m2 = bindings?.type, m2 === "ArrayBindingPattern" || m2 === "ObjectBindingPattern" || m2 === "Identifier") ? [bindings, " = ", pattern.binding] : void 0
5173
+ });
5174
+ }
5175
+ case "ConditionFragment": {
5176
+ return pattern.binding;
5177
+ }
4923
5178
  default: {
4924
5179
  return pattern;
4925
5180
  }
@@ -4935,11 +5190,11 @@ function aggregateDuplicateBindings(bindings) {
4935
5190
  );
4936
5191
  const declarations = [];
4937
5192
  const propsGroupedByName = /* @__PURE__ */ new Map();
4938
- for (let i6 = 0, len5 = props.length; i6 < len5; i6++) {
4939
- const p = props[i6];
5193
+ for (let i7 = 0, len6 = props.length; i7 < len6; i7++) {
5194
+ const p = props[i7];
4940
5195
  const { name, value } = p;
4941
- let m1;
4942
- if (m1 = value?.type, m1 === "ArrayBindingPattern" || m1 === "ObjectBindingPattern") {
5196
+ let m3;
5197
+ if (m3 = value?.type, m3 === "ArrayBindingPattern" || m3 === "ObjectBindingPattern") {
4943
5198
  continue;
4944
5199
  }
4945
5200
  const key = value?.name || name?.name || name;
@@ -4961,8 +5216,8 @@ function aggregateDuplicateBindings(bindings) {
4961
5216
  pos: 0,
4962
5217
  input: key
4963
5218
  })) {
4964
- for (let i7 = 0, len6 = shared.length; i7 < len6; i7++) {
4965
- const p = shared[i7];
5219
+ for (let i8 = 0, len7 = shared.length; i8 < len7; i8++) {
5220
+ const p = shared[i8];
4966
5221
  aliasBinding(p, makeRef(`_${key}`, key));
4967
5222
  }
4968
5223
  return;
@@ -5054,8 +5309,18 @@ function processDeclarations(statements) {
5054
5309
  if (!(bindings != null)) {
5055
5310
  continue;
5056
5311
  }
5057
- for (let i2 = 0, len22 = bindings.length; i2 < len22; i2++) {
5058
- const binding = bindings[i2];
5312
+ for (let i2 = bindings.length + -1; i2 >= 0; --i2) {
5313
+ const i = i2;
5314
+ const binding = bindings[i];
5315
+ const subbindings = gatherSubbindings(binding);
5316
+ if (subbindings.length) {
5317
+ simplifyBindingProperties(binding);
5318
+ simplifyBindingProperties(subbindings);
5319
+ spliceChild(declaration, binding, 1, binding, subbindings);
5320
+ }
5321
+ }
5322
+ for (let i3 = 0, len22 = bindings.length; i3 < len22; i3++) {
5323
+ const binding = bindings[i3];
5059
5324
  let { typeSuffix, initializer } = binding;
5060
5325
  if (typeSuffix && typeSuffix.optional) {
5061
5326
  if (initializer && !typeSuffix.t) {
@@ -5093,6 +5358,25 @@ function processDeclarations(statements) {
5093
5358
  }
5094
5359
  }
5095
5360
  }
5361
+ for (let ref2 = gatherRecursiveAll(statements, ($1) => $1.type === "ForStatement"), i4 = 0, len3 = ref2.length; i4 < len3; i4++) {
5362
+ const statement = ref2[i4];
5363
+ const { declaration } = statement;
5364
+ if (!(declaration?.type === "ForDeclaration")) {
5365
+ continue;
5366
+ }
5367
+ const { binding } = declaration;
5368
+ const blockPrefix = getPatternBlockPrefix(
5369
+ binding.pattern,
5370
+ void 0,
5371
+ append(declaration.decl, " "),
5372
+ binding.typeSuffix
5373
+ );
5374
+ simplifyBindingProperties(binding);
5375
+ if (blockPrefix != null) {
5376
+ statement.block.expressions.unshift(...blockPrefix);
5377
+ braceBlock(statement.block);
5378
+ }
5379
+ }
5096
5380
  }
5097
5381
  function prependStatementExpressionBlock(initializer, statement) {
5098
5382
  let { expression: exp } = initializer;
@@ -5101,7 +5385,7 @@ function prependStatementExpressionBlock(initializer, statement) {
5101
5385
  ws = exp[0];
5102
5386
  exp = exp[1];
5103
5387
  }
5104
- if (!(exp?.type === "StatementExpression")) {
5388
+ 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")) {
5105
5389
  return;
5106
5390
  }
5107
5391
  const pre = [];
@@ -5236,8 +5520,7 @@ function processDeclarationConditionStatement(s) {
5236
5520
  }
5237
5521
  let { expression } = condition;
5238
5522
  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]) {
5239
- const { type: type1, children: [[], { type: type2, expression: expression2 }] } = expression;
5240
- const type = [type1, type2];
5523
+ const { children: [[], { expression: expression2 }] } = expression;
5241
5524
  expression = expression2;
5242
5525
  }
5243
5526
  processDeclarationCondition(expression, condition.expression, s);
@@ -5262,8 +5545,8 @@ function processDeclarationConditionStatement(s) {
5262
5545
  ({ children } = condition.expression.children[1]);
5263
5546
  }
5264
5547
  children.unshift("(");
5265
- for (let i3 = 0, len3 = conditions.length; i3 < len3; i3++) {
5266
- const c = conditions[i3];
5548
+ for (let i5 = 0, len4 = conditions.length; i5 < len4; i5++) {
5549
+ const c = conditions[i5];
5267
5550
  children.push(" && ", c);
5268
5551
  }
5269
5552
  children.push(")");
@@ -5285,11 +5568,11 @@ function processDeclarationConditionStatement(s) {
5285
5568
  ancestor.expressions.splice(index + 1, 0, ...blockPrefix);
5286
5569
  updateParentPointers(ancestor);
5287
5570
  braceBlock(ancestor);
5288
- let ref2;
5571
+ let ref3;
5289
5572
  switch (s.type) {
5290
5573
  case "IfStatement": {
5291
- if (ref2 = s.else?.block) {
5292
- const elseBlock = ref2;
5574
+ if (ref3 = s.else?.block) {
5575
+ const elseBlock = ref3;
5293
5576
  if (elseBlock.bare && !elseBlock.semicolon) {
5294
5577
  elseBlock.children.push(elseBlock.semicolon = ";");
5295
5578
  }
@@ -5313,13 +5596,13 @@ function processDeclarationConditionStatement(s) {
5313
5596
  if (s.negated) {
5314
5597
  if (e != null) {
5315
5598
  const block = blockWithPrefix(blockPrefix, e.block);
5316
- e.children = e.children.map(($1) => $1 === e.block ? block : $1);
5599
+ e.children = e.children.map(($2) => $2 === e.block ? block : $2);
5317
5600
  e.block = block;
5318
5601
  updateParentPointers(e);
5319
5602
  }
5320
5603
  } else {
5321
5604
  const block = blockWithPrefix(blockPrefix, s.then);
5322
- s.children = s.children.map(($2) => $2 === s.then ? block : $2);
5605
+ s.children = s.children.map(($3) => $3 === s.then ? block : $3);
5323
5606
  s.then = block;
5324
5607
  updateParentPointers(s);
5325
5608
  }
@@ -5332,7 +5615,7 @@ function processDeclarationConditionStatement(s) {
5332
5615
  }
5333
5616
  const { children, block } = s;
5334
5617
  const newBlock = blockWithPrefix(blockPrefix, block);
5335
- s.children = children.map(($3) => $3 === block ? newBlock : $3);
5618
+ s.children = children.map(($4) => $4 === block ? newBlock : $4);
5336
5619
  updateParentPointers(s);
5337
5620
  break;
5338
5621
  }
@@ -5360,7 +5643,7 @@ function processDeclarationConditionStatement(s) {
5360
5643
  const block = makeEmptyBlock();
5361
5644
  replaceBlockExpression(s.parent, s, block);
5362
5645
  block.expressions.push(["", s]);
5363
- s.children.splice(s.children.findIndex(($4) => $4.token === "switch"), 0, blockPrefix);
5646
+ s.children.splice(s.children.findIndex(($5) => $5.token === "switch"), 0, blockPrefix);
5364
5647
  s.parent = block;
5365
5648
  } else {
5366
5649
  const block = blockWithPrefix([["", [{
@@ -5380,12 +5663,12 @@ function processDeclarationConditionStatement(s) {
5380
5663
  function dynamizeFromClause(from) {
5381
5664
  from = from.slice(1);
5382
5665
  from = trimFirstSpace(from);
5383
- let ref3;
5384
- if (ref3 = from[from.length - 1]?.assertion) {
5385
- const assert2 = ref3;
5386
- let ref4;
5387
- ref4 = from[from.length - 1];
5388
- ref4.children = ref4.children.filter((a2) => a2 !== assert2);
5666
+ let ref4;
5667
+ if (ref4 = from[from.length - 1]?.assertion) {
5668
+ const assert2 = ref4;
5669
+ let ref5;
5670
+ ref5 = from[from.length - 1];
5671
+ ref5.children = ref5.children.filter((a2) => a2 !== assert2);
5389
5672
  from.push(", {", assert2.keyword, ":", assert2.object, "}");
5390
5673
  }
5391
5674
  return ["(", ...from, ")"];
@@ -5394,20 +5677,20 @@ function dynamizeImportDeclaration(decl) {
5394
5677
  const { imports } = decl;
5395
5678
  let { star, binding, specifiers } = imports;
5396
5679
  const justDefault = binding && !specifiers && !star;
5397
- let ref5;
5680
+ let ref6;
5398
5681
  {
5399
5682
  if (binding) {
5400
5683
  if (specifiers) {
5401
- ref5 = makeRef();
5684
+ ref6 = makeRef();
5402
5685
  } else {
5403
- ref5 = binding;
5686
+ ref6 = binding;
5404
5687
  }
5405
5688
  } else {
5406
- ref5 = convertNamedImportsToObject(imports, true);
5689
+ ref6 = convertNamedImportsToObject(imports, true);
5407
5690
  }
5408
5691
  }
5409
5692
  ;
5410
- const pattern = ref5;
5693
+ const pattern = ref6;
5411
5694
  const c = "const";
5412
5695
  const expression = [
5413
5696
  justDefault ? "(" : void 0,
@@ -5672,7 +5955,7 @@ function processUnaryNestedExpression(pre, args, post) {
5672
5955
  children: args.children.map(
5673
5956
  (arg) => {
5674
5957
  if (typeof arg === "object" && arg != null && "type" in arg && arg.type === "ArrayElement" && "expression" in arg && "children" in arg) {
5675
- const { type, expression: exp, children } = arg;
5958
+ const { expression: exp, children } = arg;
5676
5959
  let expression = processUnaryExpression([last], trimFirstSpace(exp));
5677
5960
  expression = prepend(getTrimmingSpace(exp), expression);
5678
5961
  return {
@@ -5918,12 +6201,12 @@ function processPipelineExpressions(statements) {
5918
6201
  }
5919
6202
 
5920
6203
  // unplugin-civet:C:\Users\edemaine\Projects\Civet\source\parser\for.civet.jsx
5921
- function processRangeExpression(start, ws1, range, end) {
5922
- ws1 = [ws1, range.children[0]];
5923
- const ws2 = range.children[1];
5924
- const comma = { $loc: range.$loc, token: "," };
6204
+ function processRangeExpression(start, ws1, range2, end) {
6205
+ ws1 = [ws1, range2.children[0]];
6206
+ const ws2 = range2.children[1];
6207
+ const comma = { $loc: range2.$loc, token: "," };
5925
6208
  let ref;
5926
- switch (range.increasing) {
6209
+ switch (range2.increasing) {
5927
6210
  case true: {
5928
6211
  ref = ($) => $;
5929
6212
  break;
@@ -5938,15 +6221,7 @@ function processRangeExpression(start, ws1, range, end) {
5938
6221
  }
5939
6222
  ;
5940
6223
  const abs = ref;
5941
- const lengthAdjust = 1 - Number(!range.left.inclusive) - Number(!range.right.inclusive);
5942
- let ref1;
5943
- if (lengthAdjust > 0) ref1 = ` + ${lengthAdjust}`;
5944
- else if (lengthAdjust < 0) ref1 = ` - ${-lengthAdjust}`;
5945
- else {
5946
- ref1 = void 0;
5947
- }
5948
- ;
5949
- const lengthAdjustExpression = ref1;
6224
+ const lengthAdjust = 1 - Number(!range2.left.inclusive) - Number(!range2.right.inclusive);
5950
6225
  let children;
5951
6226
  if (typeof start === "object" && start != null && "type" in start && start.type === "Literal" && (typeof end === "object" && end != null && "type" in end && end.type === "Literal")) {
5952
6227
  let startValue = literalValue(start);
@@ -5959,7 +6234,7 @@ function processRangeExpression(start, ws1, range, end) {
5959
6234
  let endCode = endValue.charCodeAt(0);
5960
6235
  const step = startCode <= endCode ? 1 : -1;
5961
6236
  const length = abs(endCode - startCode) + lengthAdjust;
5962
- if (!range.left.inclusive) {
6237
+ if (!range2.left.inclusive) {
5963
6238
  startCode += step;
5964
6239
  }
5965
6240
  if (length <= 26) {
@@ -5972,20 +6247,21 @@ function processRangeExpression(start, ws1, range, end) {
5972
6247
  ];
5973
6248
  } else {
5974
6249
  children = [
5975
- `Array.from({length: ${length.toString()}}, `,
5976
- "(_, i) => String.fromCharCode(",
6250
+ getHelperRef(startCode <= endCode ? "stringRange" : "revStringRange"),
6251
+ "(",
5977
6252
  startCode.toString(),
5978
- step > 0 ? " + " : " - ",
5979
- "i))"
6253
+ ", ",
6254
+ length.toString(),
6255
+ ")"
5980
6256
  ];
5981
6257
  }
5982
- if (range.error != null) {
5983
- children.unshift(range.error);
6258
+ if (range2.error != null) {
6259
+ children.unshift(range2.error);
5984
6260
  }
5985
6261
  } else if (typeof startValue === "number" && typeof endValue === "number") {
5986
6262
  const step = startValue <= endValue ? 1 : -1;
5987
6263
  const length = abs(endValue - startValue) + lengthAdjust;
5988
- if (!range.left.inclusive) {
6264
+ if (!range2.left.inclusive) {
5989
6265
  startValue += step;
5990
6266
  }
5991
6267
  if (length <= 20) {
@@ -5994,33 +6270,36 @@ function processRangeExpression(start, ws1, range, end) {
5994
6270
  Array.from({ length }, (_2, i) => startValue + i * step).join(", "),
5995
6271
  "]"
5996
6272
  ];
5997
- if (range.error != null) {
5998
- children.unshift(range.error);
6273
+ if (range2.error != null) {
6274
+ children.unshift(range2.error);
5999
6275
  }
6000
6276
  }
6001
6277
  }
6002
6278
  }
6003
6279
  if (!(children != null)) {
6004
- if (range.increasing != null) {
6005
- const sign = range.increasing ? "+" : "-";
6280
+ if (range2.increasing != null) {
6281
+ const sign = range2.increasing ? "+" : "-";
6006
6282
  end = makeLeftHandSideExpression(end);
6007
6283
  children = [
6008
- "((s) => Array.from({length: ",
6009
- range.increasing ? [ws2, end, " - s"] : ["s - ", ws2, end],
6010
- lengthAdjustExpression,
6011
- "}, (_, i) => s ",
6012
- sign,
6013
- " i))",
6284
+ getHelperRef(range2.increasing ? "range" : "revRange"),
6014
6285
  "(",
6015
- range.left.inclusive ? start : [makeLeftHandSideExpression(start), ` ${sign} 1`],
6286
+ range2.left.inclusive ? start : [makeLeftHandSideExpression(start), ` ${sign} 1`],
6287
+ ",",
6288
+ range2.right.inclusive ? [makeLeftHandSideExpression(end), ` ${sign} 1`] : end,
6016
6289
  ...ws1,
6017
6290
  ")"
6018
6291
  ];
6019
6292
  } else {
6020
6293
  children = [
6021
- "((s, e) => {let step = e > s ? 1 : -1; return Array.from({length: Math.abs(e - s)",
6022
- lengthAdjustExpression,
6023
- "}, (_, i) => s + i * step)})",
6294
+ "((s, e) => s > e ? ",
6295
+ getHelperRef("revRange"),
6296
+ "(s, e",
6297
+ range2.right.inclusive ? " - 1" : void 0,
6298
+ ") : ",
6299
+ getHelperRef("range"),
6300
+ "(s, e",
6301
+ range2.right.inclusive ? " + 1" : void 0,
6302
+ "))",
6024
6303
  "(",
6025
6304
  start,
6026
6305
  ...ws1,
@@ -6036,14 +6315,14 @@ function processRangeExpression(start, ws1, range, end) {
6036
6315
  children,
6037
6316
  start,
6038
6317
  end,
6039
- error: range.error,
6040
- left: range.left,
6041
- right: range.right,
6042
- increasing: range.increasing
6318
+ error: range2.error,
6319
+ left: range2.left,
6320
+ right: range2.right,
6321
+ increasing: range2.increasing
6043
6322
  };
6044
6323
  }
6045
- function forRange(open, forDeclaration, range, stepExp, close) {
6046
- let { start, end, left, right, increasing } = range;
6324
+ function forRange(open, forDeclaration, range2, stepExp, close) {
6325
+ let { start, end, left, right, increasing } = range2;
6047
6326
  const counterRef = makeRef("i");
6048
6327
  const infinite = typeof end === "object" && end != null && "type" in end && end.type === "Identifier" && "name" in end && end.name === "Infinity";
6049
6328
  let stepRef, asc;
@@ -6061,25 +6340,25 @@ function forRange(open, forDeclaration, range, stepExp, close) {
6061
6340
  asc = false;
6062
6341
  }
6063
6342
  }
6064
- let ref2;
6343
+ let ref1;
6065
6344
  if (stepExp?.type === "Literal") {
6066
6345
  try {
6067
- ref2 = literalValue(stepExp);
6346
+ ref1 = literalValue(stepExp);
6068
6347
  } catch (e) {
6069
- ref2 = void 0;
6348
+ ref1 = void 0;
6070
6349
  }
6071
6350
  } else {
6072
- ref2 = void 0;
6351
+ ref1 = void 0;
6073
6352
  }
6074
6353
  ;
6075
- const stepValue = ref2;
6354
+ const stepValue = ref1;
6076
6355
  if (typeof stepValue === "number") {
6077
6356
  asc = stepValue > 0;
6078
6357
  }
6079
- let ref3;
6080
- if (stepRef) ref3 = start;
6081
- else ref3 = maybeRef(start, "start");
6082
- let startRef = ref3;
6358
+ let ref2;
6359
+ if (stepRef) ref2 = start;
6360
+ else ref2 = maybeRef(start, "start");
6361
+ let startRef = ref2;
6083
6362
  let endRef = maybeRef(end, "end");
6084
6363
  const startRefDec = startRef !== start ? [startRef, " = ", start, ", "] : [];
6085
6364
  const endRefDec = endRef !== end ? [endRef, " = ", end, ", "] : [];
@@ -6091,8 +6370,8 @@ function forRange(open, forDeclaration, range, stepExp, close) {
6091
6370
  }
6092
6371
  if (start?.type === "Literal" && "Literal" === end?.type) {
6093
6372
  asc = literalValue(start) <= literalValue(end);
6094
- let ref4;
6095
- if ("StringLiteral" === (ref4 = start.subtype) && ref4 === end.subtype) {
6373
+ let ref3;
6374
+ if ("StringLiteral" === (ref3 = start.subtype) && ref3 === end.subtype) {
6096
6375
  const startChar = literalValue(start).charCodeAt(0).toString();
6097
6376
  startRef = {
6098
6377
  type: "Literal",
@@ -6142,14 +6421,14 @@ function forRange(open, forDeclaration, range, stepExp, close) {
6142
6421
  // This declaration doesn't always appear in the output,
6143
6422
  // but it's still helpful for determining the primary loop variable
6144
6423
  declaration: forDeclaration,
6145
- children: [range.error, open, declaration, "; ", ...condition, "; ", ...increment, close],
6424
+ children: [range2.error, open, declaration, "; ", ...condition, "; ", ...increment, close],
6146
6425
  blockPrefix
6147
6426
  };
6148
6427
  }
6149
6428
  function processForInOf($0) {
6150
6429
  let [awaits, eachOwn, open, declaration, declaration2, ws, inOf, exp, step, close] = $0;
6151
- for (let ref5 = [declaration, declaration2?.[declaration2.length - 1]], i1 = 0, len3 = ref5.length; i1 < len3; i1++) {
6152
- const decl = ref5[i1];
6430
+ for (let ref4 = [declaration, declaration2?.[declaration2.length - 1]], i1 = 0, len3 = ref4.length; i1 < len3; i1++) {
6431
+ const decl = ref4[i1];
6153
6432
  if (!(decl != null)) {
6154
6433
  continue;
6155
6434
  }
@@ -6198,14 +6477,16 @@ function processForInOf($0) {
6198
6477
  names: assignmentNames,
6199
6478
  implicitLift: true
6200
6479
  }, ";"]);
6480
+ const eachDeclaration = declaration;
6201
6481
  declaration = {
6202
6482
  type: "Declaration",
6203
6483
  children: ["let ", ...expRefDec, counterRef, " = 0, ", lenRef, " = ", trimFirstSpace(expRef2), ".length"],
6484
+ decl: "let",
6204
6485
  names: []
6205
6486
  };
6206
6487
  const condition = [counterRef, " < ", lenRef, "; "];
6207
6488
  const children = [open, declaration, "; ", condition, counterRef, increment, close];
6208
- return { declaration, children, blockPrefix };
6489
+ return { declaration, eachDeclaration, children, blockPrefix };
6209
6490
  } else {
6210
6491
  eachOwnError = {
6211
6492
  type: "Error",
@@ -6224,6 +6505,9 @@ function processForInOf($0) {
6224
6505
  }
6225
6506
  const { binding } = declaration;
6226
6507
  let pattern = binding?.pattern;
6508
+ if (pattern?.type === "NamedBindingPattern") {
6509
+ pattern = pattern.binding;
6510
+ }
6227
6511
  if (binding?.typeSuffix || inOf.token === "in" && declaration2 && pattern.type !== "Identifier") {
6228
6512
  const itemRef = makeRef(inOf.token === "in" ? "key" : "item");
6229
6513
  blockPrefix.push(["", {
@@ -6262,12 +6546,14 @@ function processForInOf($0) {
6262
6546
  hoistDec = {
6263
6547
  type: "Declaration",
6264
6548
  children: ["let ", counterRef, " = 0"],
6549
+ decl: "let",
6265
6550
  names: []
6266
6551
  };
6267
6552
  blockPrefix.push(["", {
6268
6553
  type: "Declaration",
6269
6554
  children: [trimFirstSpace(ws2), decl2, " = ", counterRef, "++"],
6270
- names: decl2.names
6555
+ names: decl2.names,
6556
+ decl: decl2.decl
6271
6557
  }, ";"]);
6272
6558
  break;
6273
6559
  }
@@ -6277,7 +6563,8 @@ function processForInOf($0) {
6277
6563
  hoistDec = {
6278
6564
  type: "Declaration",
6279
6565
  children: ["let ", expRef2],
6280
- names: []
6566
+ names: [],
6567
+ decl: "let"
6281
6568
  };
6282
6569
  exp = {
6283
6570
  type: "AssignmentExpression",
@@ -6289,20 +6576,58 @@ function processForInOf($0) {
6289
6576
  blockPrefix.push(["", ["if (!", hasPropRef, "(", trimFirstSpace(expRef2), ", ", trimFirstSpace(pattern), ")) continue"], ";"]);
6290
6577
  }
6291
6578
  if (decl2) {
6292
- blockPrefix.push(["", {
6293
- type: "Declaration",
6579
+ const trimmedPattern = trimFirstSpace(pattern);
6580
+ const expression = makeNode({
6581
+ type: "MemberExpression",
6294
6582
  children: [
6295
- trimFirstSpace(ws2),
6296
- decl2,
6297
- " = ",
6298
6583
  trimFirstSpace(expRef2),
6299
- "[",
6300
- trimFirstSpace(pattern),
6301
- "]"
6302
- ],
6303
- decl: decl2,
6304
- names: decl2.names
6305
- }, ";"]);
6584
+ makeNode({
6585
+ type: "Index",
6586
+ expression: trimmedPattern,
6587
+ children: ["[", trimmedPattern, "]"]
6588
+ })
6589
+ ]
6590
+ });
6591
+ blockPrefix.push([
6592
+ "",
6593
+ (() => {
6594
+ if (decl2.type === "ForDeclaration") {
6595
+ const { binding: binding2, children } = decl2;
6596
+ binding2.children.push(binding2.initializer = makeNode({
6597
+ type: "Initializer",
6598
+ expression,
6599
+ children: [" = ", expression]
6600
+ }));
6601
+ return makeNode({
6602
+ type: "Declaration",
6603
+ children: [
6604
+ trimFirstSpace(ws2),
6605
+ ...children
6606
+ ],
6607
+ bindings: [decl2.binding],
6608
+ decl: decl2.decl,
6609
+ names: decl2.names
6610
+ });
6611
+ } else {
6612
+ return makeNode({
6613
+ type: "AssignmentExpression",
6614
+ children: [
6615
+ trimFirstSpace(ws2),
6616
+ decl2,
6617
+ " = ",
6618
+ trimFirstSpace(expRef2),
6619
+ "[",
6620
+ trimFirstSpace(pattern),
6621
+ "]"
6622
+ ],
6623
+ names: decl2.names,
6624
+ lhs: decl2,
6625
+ assigned: decl2
6626
+ });
6627
+ }
6628
+ })(),
6629
+ ";"
6630
+ ]);
6306
6631
  }
6307
6632
  ;
6308
6633
  break;
@@ -6832,7 +7157,7 @@ function processTryBlock($0) {
6832
7157
  const clauses = cs.map((clause) => {
6833
7158
  let ref1;
6834
7159
  if ((ref1 = clause.binding?.parameter) && typeof ref1 === "object" && "type" in ref1 && ref1.type === "CatchPattern" && "patterns" in ref1) {
6835
- const { type, patterns } = ref1;
7160
+ const { patterns } = ref1;
6836
7161
  return {
6837
7162
  type: "PatternClause",
6838
7163
  patterns,
@@ -7436,7 +7761,14 @@ function makeGetterMethod(name, ws, value, returnType, block, kind = { token: "g
7436
7761
  function processBindingPatternLHS(lhs, tail) {
7437
7762
  adjustAtBindings(lhs, true);
7438
7763
  const [splices, thisAssignments] = gatherBindingCode(lhs);
7439
- tail.push(...splices.map((s) => [", ", s]), ...thisAssignments.map((a) => [", ", a]));
7764
+ const subbindings = gatherSubbindings(lhs);
7765
+ simplifyBindingProperties(lhs);
7766
+ simplifyBindingProperties(subbindings);
7767
+ tail.push(
7768
+ ...splices.map((s) => [", ", s]),
7769
+ ...thisAssignments.map((a) => [", ", a]),
7770
+ ...subbindings
7771
+ );
7440
7772
  }
7441
7773
  function processAssignments(statements) {
7442
7774
  for (let ref7 = gatherRecursiveAll(statements, ($4) => $4.type === "AssignmentExpression" || $4.type === "UpdateExpression"), i5 = 0, len3 = ref7.length; i5 < len3; i5++) {
@@ -7521,7 +7853,7 @@ function processAssignments(statements) {
7521
7853
  let { lhs: $1, expression: $2 } = exp, tail = [], len3 = $1.length;
7522
7854
  let block;
7523
7855
  let ref12;
7524
- if (exp.parent?.type === "BlockStatement" && !(ref12 = $1[$1.length - 1])?.[ref12.length - 1]?.special) {
7856
+ if (blockContainingStatement(exp) && !(ref12 = $1[$1.length - 1])?.[ref12.length - 1]?.special) {
7525
7857
  block = makeBlockFragment();
7526
7858
  let ref13;
7527
7859
  if (ref13 = prependStatementExpressionBlock(
@@ -7605,7 +7937,7 @@ function processAssignments(statements) {
7605
7937
  message: "Slice range cannot be decreasing in assignment"
7606
7938
  });
7607
7939
  break;
7608
- } else if (m3 = lhs.type, m3 === "ObjectBindingPattern" || m3 === "ArrayBindingPattern") {
7940
+ } else if (m3 = lhs.type, m3 === "ObjectBindingPattern" || m3 === "ArrayBindingPattern" || m3 === "NamedBindingPattern") {
7609
7941
  processBindingPatternLHS(lhs, tail);
7610
7942
  gatherRecursiveAll(lhs, ($9) => $9.type === "Ref").forEach(refsToDeclare.add.bind(refsToDeclare));
7611
7943
  }
@@ -7754,7 +8086,7 @@ function processTypes(node) {
7754
8086
  while (suffixIndex >= 0) {
7755
8087
  const suffix = unary.suffix[suffixIndex];
7756
8088
  if (typeof suffix === "object" && suffix != null && "token" in suffix && suffix.token === "?") {
7757
- const { token } = suffix;
8089
+ const {} = suffix;
7758
8090
  let count = 0;
7759
8091
  let m4;
7760
8092
  while (m4 = unary.suffix[suffixIndex], typeof m4 === "object" && m4 != null && "token" in m4 && m4.token === "?") {
@@ -7812,7 +8144,7 @@ function processTypes(node) {
7812
8144
  }
7813
8145
  results2.push(replaceNode(unary, replace, parent));
7814
8146
  } else if (typeof suffix === "object" && suffix != null && "type" in suffix && suffix.type === "NonNullAssertion") {
7815
- const { type } = suffix;
8147
+ const {} = suffix;
7816
8148
  let m6;
7817
8149
  while (m6 = unary.suffix[suffixIndex], typeof m6 === "object" && m6 != null && "type" in m6 && m6.type === "NonNullAssertion") {
7818
8150
  unary.suffix.splice(suffixIndex--, 1);
@@ -8117,15 +8449,8 @@ function processProgram(root) {
8117
8449
  assert.equal(state2.forbidNewlineBinaryOp.length, 1, "forbidNewlineBinaryOp");
8118
8450
  assert.equal(state2.forbidTrailingMemberProperty.length, 1, "forbidTrailingMemberProperty");
8119
8451
  assert.equal(state2.JSXTagStack.length, 1, "JSXTagStack");
8120
- let rootIIFE;
8121
- if (config2.iife || config2.repl) {
8122
- rootIIFE = wrapIIFE(root.expressions, root.topLevelAwait);
8123
- const newExpressions = [["", rootIIFE]];
8124
- root.children = root.children.map(($16) => $16 === root.expressions ? newExpressions : $16);
8125
- root.expressions = newExpressions;
8126
- }
8127
8452
  addParentPointers(root);
8128
- const { expressions: statements } = root;
8453
+ let { expressions: statements } = root;
8129
8454
  processPlaceholders(statements);
8130
8455
  processNegativeIndexAccess(statements);
8131
8456
  processTypes(statements);
@@ -8138,12 +8463,25 @@ function processProgram(root) {
8138
8463
  processIterationExpressions(statements);
8139
8464
  processFinallyClauses(statements);
8140
8465
  processBreaksContinues(statements);
8466
+ root.topLevelAwait = hasAwait(statements);
8467
+ root.topLevelYield = hasYield(statements);
8468
+ let rootIIFE;
8469
+ if (config2.iife || config2.repl) {
8470
+ rootIIFE = wrapIIFE(
8471
+ root.expressions,
8472
+ root.topLevelAwait,
8473
+ root.topLevelYield ? "*" : void 0
8474
+ );
8475
+ statements = [["", rootIIFE]];
8476
+ root.children = root.children.map(($16) => $16 === root.expressions ? statements : $16);
8477
+ root.expressions = statements;
8478
+ }
8141
8479
  hoistRefDecs(statements);
8142
8480
  processFunctions(statements, config2);
8143
8481
  if (config2.coffeeClasses) {
8144
8482
  processCoffeeClasses(statements);
8145
8483
  }
8146
- statements.unshift(...state2.prelude);
8484
+ statements.unshift(...extractPreludeFor(statements));
8147
8485
  if (config2.autoLet) {
8148
8486
  createConstLetDecs(statements, [], "let");
8149
8487
  } else if (config2.autoConst) {
@@ -8204,30 +8542,10 @@ function processRepl(root, rootIIFE) {
8204
8542
  }
8205
8543
  }
8206
8544
  }
8207
- function populateRefs(statements) {
8208
- const refNodes = gatherRecursive(statements, ($21) => $21.type === "Ref");
8209
- if (refNodes.length) {
8210
- const ids = gatherRecursive(statements, (s) => s.type === "Identifier");
8211
- const names = new Set(ids.flatMap(({ names: names2 }) => names2 || []));
8212
- refNodes.forEach((ref) => {
8213
- const { type, base } = ref;
8214
- if (type !== "Ref") return;
8215
- ref.type = "Identifier";
8216
- let n = 0;
8217
- let name = base;
8218
- while (names.has(name)) {
8219
- n++;
8220
- name = `${base}${n}`;
8221
- }
8222
- names.add(name);
8223
- return ref.children = ref.names = [name];
8224
- });
8225
- }
8226
- }
8227
8545
  function processPlaceholders(statements) {
8228
8546
  const placeholderMap = /* @__PURE__ */ new Map();
8229
8547
  const liftedIfs = /* @__PURE__ */ new Set();
8230
- for (let ref25 = gatherRecursiveAll(statements, ($22) => $22.type === "Placeholder"), i17 = 0, len14 = ref25.length; i17 < len14; i17++) {
8548
+ for (let ref25 = gatherRecursiveAll(statements, ($21) => $21.type === "Placeholder"), i17 = 0, len14 = ref25.length; i17 < len14; i17++) {
8231
8549
  const exp = ref25[i17];
8232
8550
  let ancestor;
8233
8551
  if (exp.subtype === ".") {
@@ -8524,6 +8842,8 @@ var grammar = {
8524
8842
  ExpressionizedStatement,
8525
8843
  StatementExpression,
8526
8844
  CommaExpression,
8845
+ CommaExpressionSpread,
8846
+ AssignmentExpressionSpread,
8527
8847
  Arguments,
8528
8848
  ImplicitArguments,
8529
8849
  ExplicitArguments,
@@ -8668,6 +8988,7 @@ var grammar = {
8668
8988
  NWBindingIdentifier,
8669
8989
  AtIdentifierRef,
8670
8990
  PinPattern,
8991
+ NamedBindingPattern,
8671
8992
  BindingPattern,
8672
8993
  ObjectBindingPattern,
8673
8994
  ObjectBindingPatternContent,
@@ -8703,6 +9024,7 @@ var grammar = {
8703
9024
  BareNestedBlock,
8704
9025
  BareBlock,
8705
9026
  ThenClause,
9027
+ ThenBlock,
8706
9028
  BracedThenClause,
8707
9029
  BracedOrEmptyBlock,
8708
9030
  NoCommaBracedOrEmptyBlock,
@@ -8812,6 +9134,7 @@ var grammar = {
8812
9134
  PostfixStatement,
8813
9135
  _PostfixStatement,
8814
9136
  Statement,
9137
+ IterationActualStatement,
8815
9138
  ShouldExpressionize,
8816
9139
  NoCommaStatement,
8817
9140
  EmptyStatement,
@@ -9467,130 +9790,132 @@ var $L119 = (0, import_lib2.$L)(";");
9467
9790
  var $L120 = (0, import_lib2.$L)("some");
9468
9791
  var $L121 = (0, import_lib2.$L)("every");
9469
9792
  var $L122 = (0, import_lib2.$L)("count");
9470
- var $L123 = (0, import_lib2.$L)("sum");
9471
- var $L124 = (0, import_lib2.$L)("product");
9472
- var $L125 = (0, import_lib2.$L)("min");
9473
- var $L126 = (0, import_lib2.$L)("max");
9474
- var $L127 = (0, import_lib2.$L)("join");
9475
- var $L128 = (0, import_lib2.$L)("break");
9476
- var $L129 = (0, import_lib2.$L)("continue");
9477
- var $L130 = (0, import_lib2.$L)("debugger");
9478
- var $L131 = (0, import_lib2.$L)("require");
9479
- var $L132 = (0, import_lib2.$L)("with");
9480
- var $L133 = (0, import_lib2.$L)("assert");
9481
- var $L134 = (0, import_lib2.$L)(":=");
9482
- var $L135 = (0, import_lib2.$L)("\u2254");
9483
- var $L136 = (0, import_lib2.$L)(".=");
9484
- var $L137 = (0, import_lib2.$L)("::=");
9485
- var $L138 = (0, import_lib2.$L)("/*");
9486
- var $L139 = (0, import_lib2.$L)("*/");
9487
- var $L140 = (0, import_lib2.$L)("\\");
9488
- var $L141 = (0, import_lib2.$L)(")");
9489
- var $L142 = (0, import_lib2.$L)("abstract");
9490
- var $L143 = (0, import_lib2.$L)("as");
9491
- var $L144 = (0, import_lib2.$L)("@");
9492
- var $L145 = (0, import_lib2.$L)("@@");
9493
- var $L146 = (0, import_lib2.$L)("async");
9494
- var $L147 = (0, import_lib2.$L)("await");
9495
- var $L148 = (0, import_lib2.$L)("`");
9496
- var $L149 = (0, import_lib2.$L)("by");
9497
- var $L150 = (0, import_lib2.$L)("case");
9498
- var $L151 = (0, import_lib2.$L)("catch");
9499
- var $L152 = (0, import_lib2.$L)("class");
9500
- var $L153 = (0, import_lib2.$L)("#{");
9501
- var $L154 = (0, import_lib2.$L)("comptime");
9502
- var $L155 = (0, import_lib2.$L)("declare");
9503
- var $L156 = (0, import_lib2.$L)("default");
9504
- var $L157 = (0, import_lib2.$L)("delete");
9505
- var $L158 = (0, import_lib2.$L)("do");
9506
- var $L159 = (0, import_lib2.$L)("..");
9507
- var $L160 = (0, import_lib2.$L)("\u2025");
9508
- var $L161 = (0, import_lib2.$L)("...");
9509
- var $L162 = (0, import_lib2.$L)("\u2026");
9510
- var $L163 = (0, import_lib2.$L)("::");
9511
- var $L164 = (0, import_lib2.$L)('"');
9512
- var $L165 = (0, import_lib2.$L)("each");
9513
- var $L166 = (0, import_lib2.$L)("else");
9514
- var $L167 = (0, import_lib2.$L)("!");
9515
- var $L168 = (0, import_lib2.$L)("export");
9516
- var $L169 = (0, import_lib2.$L)("extends");
9517
- var $L170 = (0, import_lib2.$L)("finally");
9518
- var $L171 = (0, import_lib2.$L)("for");
9519
- var $L172 = (0, import_lib2.$L)("from");
9520
- var $L173 = (0, import_lib2.$L)("function");
9521
- var $L174 = (0, import_lib2.$L)("get");
9522
- var $L175 = (0, import_lib2.$L)("set");
9523
- var $L176 = (0, import_lib2.$L)("#");
9524
- var $L177 = (0, import_lib2.$L)("if");
9525
- var $L178 = (0, import_lib2.$L)("in");
9526
- var $L179 = (0, import_lib2.$L)("infer");
9527
- var $L180 = (0, import_lib2.$L)("let");
9528
- var $L181 = (0, import_lib2.$L)("const");
9529
- var $L182 = (0, import_lib2.$L)("is");
9530
- var $L183 = (0, import_lib2.$L)("var");
9531
- var $L184 = (0, import_lib2.$L)("like");
9532
- var $L185 = (0, import_lib2.$L)("loop");
9533
- var $L186 = (0, import_lib2.$L)("new");
9534
- var $L187 = (0, import_lib2.$L)("not");
9535
- var $L188 = (0, import_lib2.$L)("of");
9536
- var $L189 = (0, import_lib2.$L)("[");
9537
- var $L190 = (0, import_lib2.$L)("operator");
9538
- var $L191 = (0, import_lib2.$L)("override");
9539
- var $L192 = (0, import_lib2.$L)("own");
9540
- var $L193 = (0, import_lib2.$L)("public");
9541
- var $L194 = (0, import_lib2.$L)("private");
9542
- var $L195 = (0, import_lib2.$L)("protected");
9543
- var $L196 = (0, import_lib2.$L)("||>");
9544
- var $L197 = (0, import_lib2.$L)("|\u25B7");
9545
- var $L198 = (0, import_lib2.$L)("|>=");
9546
- var $L199 = (0, import_lib2.$L)("\u25B7=");
9547
- var $L200 = (0, import_lib2.$L)("|>");
9548
- var $L201 = (0, import_lib2.$L)("\u25B7");
9549
- var $L202 = (0, import_lib2.$L)("readonly");
9550
- var $L203 = (0, import_lib2.$L)("return");
9551
- var $L204 = (0, import_lib2.$L)("satisfies");
9552
- var $L205 = (0, import_lib2.$L)("'");
9553
- var $L206 = (0, import_lib2.$L)("static");
9554
- var $L207 = (0, import_lib2.$L)("${");
9555
- var $L208 = (0, import_lib2.$L)("super");
9556
- var $L209 = (0, import_lib2.$L)("switch");
9557
- var $L210 = (0, import_lib2.$L)("target");
9558
- var $L211 = (0, import_lib2.$L)("then");
9559
- var $L212 = (0, import_lib2.$L)("this");
9560
- var $L213 = (0, import_lib2.$L)("throw");
9561
- var $L214 = (0, import_lib2.$L)('"""');
9562
- var $L215 = (0, import_lib2.$L)("'''");
9563
- var $L216 = (0, import_lib2.$L)("///");
9564
- var $L217 = (0, import_lib2.$L)("```");
9565
- var $L218 = (0, import_lib2.$L)("try");
9566
- var $L219 = (0, import_lib2.$L)("typeof");
9567
- var $L220 = (0, import_lib2.$L)("undefined");
9568
- var $L221 = (0, import_lib2.$L)("unless");
9569
- var $L222 = (0, import_lib2.$L)("until");
9570
- var $L223 = (0, import_lib2.$L)("using");
9571
- var $L224 = (0, import_lib2.$L)("void");
9572
- var $L225 = (0, import_lib2.$L)("when");
9573
- var $L226 = (0, import_lib2.$L)("while");
9574
- var $L227 = (0, import_lib2.$L)("yield");
9575
- var $L228 = (0, import_lib2.$L)("/>");
9576
- var $L229 = (0, import_lib2.$L)("</");
9577
- var $L230 = (0, import_lib2.$L)("<>");
9578
- var $L231 = (0, import_lib2.$L)("</>");
9579
- var $L232 = (0, import_lib2.$L)("<!--");
9580
- var $L233 = (0, import_lib2.$L)("-->");
9581
- var $L234 = (0, import_lib2.$L)("type");
9582
- var $L235 = (0, import_lib2.$L)("enum");
9583
- var $L236 = (0, import_lib2.$L)("interface");
9584
- var $L237 = (0, import_lib2.$L)("global");
9585
- var $L238 = (0, import_lib2.$L)("module");
9586
- var $L239 = (0, import_lib2.$L)("namespace");
9587
- var $L240 = (0, import_lib2.$L)("asserts");
9588
- var $L241 = (0, import_lib2.$L)("keyof");
9589
- var $L242 = (0, import_lib2.$L)("???");
9590
- var $L243 = (0, import_lib2.$L)("unique");
9591
- var $L244 = (0, import_lib2.$L)("symbol");
9592
- var $L245 = (0, import_lib2.$L)("[]");
9593
- var $L246 = (0, import_lib2.$L)("civet");
9793
+ var $L123 = (0, import_lib2.$L)("first");
9794
+ var $L124 = (0, import_lib2.$L)("sum");
9795
+ var $L125 = (0, import_lib2.$L)("product");
9796
+ var $L126 = (0, import_lib2.$L)("min");
9797
+ var $L127 = (0, import_lib2.$L)("max");
9798
+ var $L128 = (0, import_lib2.$L)("join");
9799
+ var $L129 = (0, import_lib2.$L)("concat");
9800
+ var $L130 = (0, import_lib2.$L)("break");
9801
+ var $L131 = (0, import_lib2.$L)("continue");
9802
+ var $L132 = (0, import_lib2.$L)("debugger");
9803
+ var $L133 = (0, import_lib2.$L)("require");
9804
+ var $L134 = (0, import_lib2.$L)("with");
9805
+ var $L135 = (0, import_lib2.$L)("assert");
9806
+ var $L136 = (0, import_lib2.$L)(":=");
9807
+ var $L137 = (0, import_lib2.$L)("\u2254");
9808
+ var $L138 = (0, import_lib2.$L)(".=");
9809
+ var $L139 = (0, import_lib2.$L)("::=");
9810
+ var $L140 = (0, import_lib2.$L)("/*");
9811
+ var $L141 = (0, import_lib2.$L)("*/");
9812
+ var $L142 = (0, import_lib2.$L)("\\");
9813
+ var $L143 = (0, import_lib2.$L)(")");
9814
+ var $L144 = (0, import_lib2.$L)("abstract");
9815
+ var $L145 = (0, import_lib2.$L)("as");
9816
+ var $L146 = (0, import_lib2.$L)("@");
9817
+ var $L147 = (0, import_lib2.$L)("@@");
9818
+ var $L148 = (0, import_lib2.$L)("async");
9819
+ var $L149 = (0, import_lib2.$L)("await");
9820
+ var $L150 = (0, import_lib2.$L)("`");
9821
+ var $L151 = (0, import_lib2.$L)("by");
9822
+ var $L152 = (0, import_lib2.$L)("case");
9823
+ var $L153 = (0, import_lib2.$L)("catch");
9824
+ var $L154 = (0, import_lib2.$L)("class");
9825
+ var $L155 = (0, import_lib2.$L)("#{");
9826
+ var $L156 = (0, import_lib2.$L)("comptime");
9827
+ var $L157 = (0, import_lib2.$L)("declare");
9828
+ var $L158 = (0, import_lib2.$L)("default");
9829
+ var $L159 = (0, import_lib2.$L)("delete");
9830
+ var $L160 = (0, import_lib2.$L)("do");
9831
+ var $L161 = (0, import_lib2.$L)("..");
9832
+ var $L162 = (0, import_lib2.$L)("\u2025");
9833
+ var $L163 = (0, import_lib2.$L)("...");
9834
+ var $L164 = (0, import_lib2.$L)("\u2026");
9835
+ var $L165 = (0, import_lib2.$L)("::");
9836
+ var $L166 = (0, import_lib2.$L)('"');
9837
+ var $L167 = (0, import_lib2.$L)("each");
9838
+ var $L168 = (0, import_lib2.$L)("else");
9839
+ var $L169 = (0, import_lib2.$L)("!");
9840
+ var $L170 = (0, import_lib2.$L)("export");
9841
+ var $L171 = (0, import_lib2.$L)("extends");
9842
+ var $L172 = (0, import_lib2.$L)("finally");
9843
+ var $L173 = (0, import_lib2.$L)("for");
9844
+ var $L174 = (0, import_lib2.$L)("from");
9845
+ var $L175 = (0, import_lib2.$L)("function");
9846
+ var $L176 = (0, import_lib2.$L)("get");
9847
+ var $L177 = (0, import_lib2.$L)("set");
9848
+ var $L178 = (0, import_lib2.$L)("#");
9849
+ var $L179 = (0, import_lib2.$L)("if");
9850
+ var $L180 = (0, import_lib2.$L)("in");
9851
+ var $L181 = (0, import_lib2.$L)("infer");
9852
+ var $L182 = (0, import_lib2.$L)("let");
9853
+ var $L183 = (0, import_lib2.$L)("const");
9854
+ var $L184 = (0, import_lib2.$L)("is");
9855
+ var $L185 = (0, import_lib2.$L)("var");
9856
+ var $L186 = (0, import_lib2.$L)("like");
9857
+ var $L187 = (0, import_lib2.$L)("loop");
9858
+ var $L188 = (0, import_lib2.$L)("new");
9859
+ var $L189 = (0, import_lib2.$L)("not");
9860
+ var $L190 = (0, import_lib2.$L)("of");
9861
+ var $L191 = (0, import_lib2.$L)("[");
9862
+ var $L192 = (0, import_lib2.$L)("operator");
9863
+ var $L193 = (0, import_lib2.$L)("override");
9864
+ var $L194 = (0, import_lib2.$L)("own");
9865
+ var $L195 = (0, import_lib2.$L)("public");
9866
+ var $L196 = (0, import_lib2.$L)("private");
9867
+ var $L197 = (0, import_lib2.$L)("protected");
9868
+ var $L198 = (0, import_lib2.$L)("||>");
9869
+ var $L199 = (0, import_lib2.$L)("|\u25B7");
9870
+ var $L200 = (0, import_lib2.$L)("|>=");
9871
+ var $L201 = (0, import_lib2.$L)("\u25B7=");
9872
+ var $L202 = (0, import_lib2.$L)("|>");
9873
+ var $L203 = (0, import_lib2.$L)("\u25B7");
9874
+ var $L204 = (0, import_lib2.$L)("readonly");
9875
+ var $L205 = (0, import_lib2.$L)("return");
9876
+ var $L206 = (0, import_lib2.$L)("satisfies");
9877
+ var $L207 = (0, import_lib2.$L)("'");
9878
+ var $L208 = (0, import_lib2.$L)("static");
9879
+ var $L209 = (0, import_lib2.$L)("${");
9880
+ var $L210 = (0, import_lib2.$L)("super");
9881
+ var $L211 = (0, import_lib2.$L)("switch");
9882
+ var $L212 = (0, import_lib2.$L)("target");
9883
+ var $L213 = (0, import_lib2.$L)("then");
9884
+ var $L214 = (0, import_lib2.$L)("this");
9885
+ var $L215 = (0, import_lib2.$L)("throw");
9886
+ var $L216 = (0, import_lib2.$L)('"""');
9887
+ var $L217 = (0, import_lib2.$L)("'''");
9888
+ var $L218 = (0, import_lib2.$L)("///");
9889
+ var $L219 = (0, import_lib2.$L)("```");
9890
+ var $L220 = (0, import_lib2.$L)("try");
9891
+ var $L221 = (0, import_lib2.$L)("typeof");
9892
+ var $L222 = (0, import_lib2.$L)("undefined");
9893
+ var $L223 = (0, import_lib2.$L)("unless");
9894
+ var $L224 = (0, import_lib2.$L)("until");
9895
+ var $L225 = (0, import_lib2.$L)("using");
9896
+ var $L226 = (0, import_lib2.$L)("void");
9897
+ var $L227 = (0, import_lib2.$L)("when");
9898
+ var $L228 = (0, import_lib2.$L)("while");
9899
+ var $L229 = (0, import_lib2.$L)("yield");
9900
+ var $L230 = (0, import_lib2.$L)("/>");
9901
+ var $L231 = (0, import_lib2.$L)("</");
9902
+ var $L232 = (0, import_lib2.$L)("<>");
9903
+ var $L233 = (0, import_lib2.$L)("</>");
9904
+ var $L234 = (0, import_lib2.$L)("<!--");
9905
+ var $L235 = (0, import_lib2.$L)("-->");
9906
+ var $L236 = (0, import_lib2.$L)("type");
9907
+ var $L237 = (0, import_lib2.$L)("enum");
9908
+ var $L238 = (0, import_lib2.$L)("interface");
9909
+ var $L239 = (0, import_lib2.$L)("global");
9910
+ var $L240 = (0, import_lib2.$L)("module");
9911
+ var $L241 = (0, import_lib2.$L)("namespace");
9912
+ var $L242 = (0, import_lib2.$L)("asserts");
9913
+ var $L243 = (0, import_lib2.$L)("keyof");
9914
+ var $L244 = (0, import_lib2.$L)("???");
9915
+ var $L245 = (0, import_lib2.$L)("unique");
9916
+ var $L246 = (0, import_lib2.$L)("symbol");
9917
+ var $L247 = (0, import_lib2.$L)("[]");
9918
+ var $L248 = (0, import_lib2.$L)("civet");
9594
9919
  var $R0 = (0, import_lib2.$R)(new RegExp("(?=async|debugger|if|unless|comptime|do|for|loop|until|while|switch|throw|try)", "suy"));
9595
9920
  var $R1 = (0, import_lib2.$R)(new RegExp("&(?=\\s)", "suy"));
9596
9921
  var $R2 = (0, import_lib2.$R)(new RegExp("(as|of|by|satisfies|then|when|implements|xor|xnor)(?!\\p{ID_Continue}|[\\u200C\\u200D$])", "suy"));
@@ -9706,8 +10031,7 @@ var Program$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Reset, Init, (0, import
9706
10031
  expressions: statements,
9707
10032
  children: [reset, init, ws1, statements, ws2],
9708
10033
  bare: true,
9709
- root: true,
9710
- topLevelAwait: hasAwait(statements)
10034
+ root: true
9711
10035
  };
9712
10036
  processProgram(program);
9713
10037
  return program;
@@ -9834,6 +10158,71 @@ var CommaExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(AssignmentExpre
9834
10158
  function CommaExpression(ctx, state2) {
9835
10159
  return (0, import_lib2.$EVENT)(ctx, state2, "CommaExpression", CommaExpression$0);
9836
10160
  }
10161
+ 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) {
10162
+ var ws = $1;
10163
+ var ws2 = $3;
10164
+ var iteration = $4;
10165
+ if (iteration.subtype === "do" || iteration.subtype === "comptime") return $skip;
10166
+ if (ws2) {
10167
+ if (ws) {
10168
+ ws = [ws, ws2];
10169
+ } else {
10170
+ ws = ws2;
10171
+ }
10172
+ }
10173
+ iteration = { ...iteration, resultsParent: true };
10174
+ return prepend(ws, iteration);
10175
+ });
10176
+ 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) {
10177
+ if ($2.length == 0) return $1;
10178
+ return $0;
10179
+ });
10180
+ var CommaExpressionSpread$$ = [CommaExpressionSpread$0, CommaExpressionSpread$1];
10181
+ function CommaExpressionSpread(ctx, state2) {
10182
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "CommaExpressionSpread", CommaExpressionSpread$$);
10183
+ }
10184
+ var AssignmentExpressionSpread$0 = (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$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) {
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$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$E)(_), DotDotDot, AssignmentExpression), function($skip, $loc, $0, $1, $2, $3) {
10204
+ var expression = $3;
10205
+ return {
10206
+ type: "SpreadElement",
10207
+ children: $0,
10208
+ expression,
10209
+ names: expression.names
10210
+ };
10211
+ });
10212
+ 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) {
10213
+ var expression = $1;
10214
+ if (!$2) return $1;
10215
+ return {
10216
+ type: "SpreadElement",
10217
+ children: [...$2, $1],
10218
+ expression,
10219
+ names: expression.names
10220
+ };
10221
+ });
10222
+ var AssignmentExpressionSpread$$ = [AssignmentExpressionSpread$0, AssignmentExpressionSpread$1, AssignmentExpressionSpread$2, AssignmentExpressionSpread$3];
10223
+ function AssignmentExpressionSpread(ctx, state2) {
10224
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "AssignmentExpressionSpread", AssignmentExpressionSpread$$);
10225
+ }
9837
10226
  var Arguments$0 = ExplicitArguments;
9838
10227
  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) {
9839
10228
  var args = $2;
@@ -11149,8 +11538,9 @@ var LeftHandSideExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, impo
11149
11538
  expression
11150
11539
  };
11151
11540
  });
11152
- var LeftHandSideExpression$1 = CallExpression;
11153
- var LeftHandSideExpression$$ = [LeftHandSideExpression$0, LeftHandSideExpression$1];
11541
+ var LeftHandSideExpression$1 = NamedBindingPattern;
11542
+ var LeftHandSideExpression$2 = CallExpression;
11543
+ var LeftHandSideExpression$$ = [LeftHandSideExpression$0, LeftHandSideExpression$1, LeftHandSideExpression$2];
11154
11544
  function LeftHandSideExpression(ctx, state2) {
11155
11545
  return (0, import_lib2.$EVENT_C)(ctx, state2, "LeftHandSideExpression", LeftHandSideExpression$$);
11156
11546
  }
@@ -11773,7 +12163,7 @@ var FunctionRestParameter$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, impor
11773
12163
  function FunctionRestParameter(ctx, state2) {
11774
12164
  return (0, import_lib2.$EVENT)(ctx, state2, "FunctionRestParameter", FunctionRestParameter$0);
11775
12165
  }
11776
- 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) {
12166
+ 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) {
11777
12167
  var accessModifier = $2;
11778
12168
  var binding = $4;
11779
12169
  var typeSuffix = $5;
@@ -11886,12 +12276,31 @@ var PinPattern$$ = [PinPattern$0, PinPattern$1, PinPattern$2, PinPattern$3];
11886
12276
  function PinPattern(ctx, state2) {
11887
12277
  return (0, import_lib2.$EVENT_C)(ctx, state2, "PinPattern", PinPattern$$);
11888
12278
  }
12279
+ 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) {
12280
+ var binding = $1;
12281
+ var ws = $3;
12282
+ var pattern = $4;
12283
+ pattern = prepend(ws, pattern);
12284
+ return {
12285
+ type: "NamedBindingPattern",
12286
+ // NOTE: children just has binding, not pattern, for easy destructuring
12287
+ children: [binding],
12288
+ binding,
12289
+ pattern,
12290
+ subbinding: [pattern, " = ", binding],
12291
+ typeSuffix: pattern.typeSuffix
12292
+ };
12293
+ });
12294
+ function NamedBindingPattern(ctx, state2) {
12295
+ return (0, import_lib2.$EVENT)(ctx, state2, "NamedBindingPattern", NamedBindingPattern$0);
12296
+ }
11889
12297
  var BindingPattern$0 = ObjectBindingPattern;
11890
12298
  var BindingPattern$1 = ArrayBindingPattern;
11891
12299
  var BindingPattern$2 = PinPattern;
11892
12300
  var BindingPattern$3 = Literal;
11893
12301
  var BindingPattern$4 = RegularExpressionLiteral;
11894
- var BindingPattern$$ = [BindingPattern$0, BindingPattern$1, BindingPattern$2, BindingPattern$3, BindingPattern$4];
12302
+ var BindingPattern$5 = NamedBindingPattern;
12303
+ var BindingPattern$$ = [BindingPattern$0, BindingPattern$1, BindingPattern$2, BindingPattern$3, BindingPattern$4, BindingPattern$5];
11895
12304
  function BindingPattern(ctx, state2) {
11896
12305
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BindingPattern", BindingPattern$$);
11897
12306
  }
@@ -12015,14 +12424,32 @@ function NestedBindingPropertyList(ctx, state2) {
12015
12424
  return (0, import_lib2.$EVENT)(ctx, state2, "NestedBindingPropertyList", NestedBindingPropertyList$0);
12016
12425
  }
12017
12426
  var BindingProperty$0 = BindingRestProperty;
12018
- 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) {
12427
+ 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) {
12428
+ var ws1 = $1;
12019
12429
  var name = $2;
12020
- var value = $6;
12021
- var typeSuffix = $7;
12022
- var initializer = $8;
12430
+ var bind = $3;
12431
+ var ws2 = $4;
12432
+ var colon = $5;
12433
+ var ws3 = $6;
12434
+ var value = $7;
12435
+ var typeSuffix = $8;
12436
+ var initializer = $9;
12437
+ if (bind) {
12438
+ const binding = name, pattern = value;
12439
+ value = {
12440
+ type: "NamedBindingPattern",
12441
+ // NOTE: children just has binding, not pattern, for easy destructuring
12442
+ children: [binding],
12443
+ binding,
12444
+ pattern,
12445
+ subbinding: [pattern, " = ", binding],
12446
+ typeSuffix: pattern.typeSuffix,
12447
+ names: value.names
12448
+ };
12449
+ }
12023
12450
  return {
12024
12451
  type: "BindingProperty",
12025
- children: [$1, name, $3, $4, $5, value, initializer],
12452
+ children: [ws1, name, ws2, colon, ws3, value, initializer],
12026
12453
  // omit typeSuffix
12027
12454
  name,
12028
12455
  value,
@@ -12031,13 +12458,49 @@ var BindingProperty$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2
12031
12458
  names: value.names
12032
12459
  };
12033
12460
  });
12034
- 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) {
12461
+ 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) {
12035
12462
  var ws = $1;
12036
12463
  var pin = $2;
12037
12464
  var binding = $3;
12038
12465
  var typeSuffix = $4;
12039
12466
  var initializer = $5;
12040
- let children = [ws, binding, initializer];
12467
+ const children = [ws, binding];
12468
+ if (binding.type === "AtBinding") {
12469
+ children.push({
12470
+ type: "Error",
12471
+ message: "Pinned properties do not yet work with @binding"
12472
+ });
12473
+ }
12474
+ if (typeSuffix) {
12475
+ children.push({
12476
+ type: "Error",
12477
+ message: "Pinned properties cannot have type annotations"
12478
+ });
12479
+ }
12480
+ if (initializer) {
12481
+ children.push({
12482
+ type: "Error",
12483
+ message: "Pinned properties cannot have initializers"
12484
+ });
12485
+ }
12486
+ return {
12487
+ type: "PinProperty",
12488
+ children,
12489
+ name: binding,
12490
+ value: {
12491
+ type: "PinPattern",
12492
+ children: [binding],
12493
+ expression: binding
12494
+ }
12495
+ };
12496
+ });
12497
+ 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) {
12498
+ var ws = $1;
12499
+ var binding = $2;
12500
+ var bind = $3;
12501
+ var typeSuffix = $4;
12502
+ var initializer = $5;
12503
+ const children = [ws, binding, initializer];
12041
12504
  if (binding.type === "AtBinding") {
12042
12505
  return {
12043
12506
  type: "AtBindingProperty",
@@ -12049,31 +12512,6 @@ var BindingProperty$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2
12049
12512
  names: []
12050
12513
  };
12051
12514
  }
12052
- if (pin) {
12053
- children = [ws, binding];
12054
- if (typeSuffix) {
12055
- children.push({
12056
- type: "Error",
12057
- message: "Pinned properties cannot have type annotations"
12058
- });
12059
- }
12060
- if (initializer) {
12061
- children.push({
12062
- type: "Error",
12063
- message: "Pinned properties cannot have initializers"
12064
- });
12065
- }
12066
- return {
12067
- type: "PinProperty",
12068
- children,
12069
- name: binding,
12070
- value: {
12071
- type: "PinPattern",
12072
- children: [binding],
12073
- expression: binding
12074
- }
12075
- };
12076
- }
12077
12515
  return {
12078
12516
  type: "BindingProperty",
12079
12517
  children,
@@ -12085,7 +12523,7 @@ var BindingProperty$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2
12085
12523
  identifier: binding
12086
12524
  };
12087
12525
  });
12088
- var BindingProperty$$ = [BindingProperty$0, BindingProperty$1, BindingProperty$2];
12526
+ var BindingProperty$$ = [BindingProperty$0, BindingProperty$1, BindingProperty$2, BindingProperty$3];
12089
12527
  function BindingProperty(ctx, state2) {
12090
12528
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BindingProperty", BindingProperty$$);
12091
12529
  }
@@ -12140,7 +12578,7 @@ function NestedBindingElements(ctx, state2) {
12140
12578
  return (0, import_lib2.$EVENT)(ctx, state2, "NestedBindingElements", NestedBindingElements$0);
12141
12579
  }
12142
12580
  var BindingElement$0 = BindingRestElement;
12143
- 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) {
12581
+ 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) {
12144
12582
  var ws = $1;
12145
12583
  var binding = $2;
12146
12584
  var typeSuffix = $3;
@@ -12165,7 +12603,7 @@ var BindingElement$$ = [BindingElement$0, BindingElement$1, BindingElement$2];
12165
12603
  function BindingElement(ctx, state2) {
12166
12604
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BindingElement", BindingElement$$);
12167
12605
  }
12168
- 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) {
12606
+ 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) {
12169
12607
  var ws = $1;
12170
12608
  var dots = $2;
12171
12609
  var binding = $3;
@@ -12181,7 +12619,7 @@ var BindingRestElement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_l
12181
12619
  rest: true
12182
12620
  };
12183
12621
  });
12184
- 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) {
12622
+ 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) {
12185
12623
  var ws = $1;
12186
12624
  var binding = $2;
12187
12625
  var dots = $3;
@@ -12651,12 +13089,21 @@ var BareBlock$$ = [BareBlock$0, BareBlock$1, BareBlock$2, BareBlock$3, BareBlock
12651
13089
  function BareBlock(ctx, state2) {
12652
13090
  return (0, import_lib2.$EVENT_C)(ctx, state2, "BareBlock", BareBlock$$);
12653
13091
  }
12654
- var ThenClause$0 = (0, import_lib2.$T)((0, import_lib2.$S)(Then, SingleLineStatements), function(value) {
13092
+ var ThenClause$0 = (0, import_lib2.$T)((0, import_lib2.$S)(Then, ThenBlock), function(value) {
12655
13093
  return value[1];
12656
13094
  });
12657
13095
  function ThenClause(ctx, state2) {
12658
13096
  return (0, import_lib2.$EVENT)(ctx, state2, "ThenClause", ThenClause$0);
12659
13097
  }
13098
+ var ThenBlock$0 = (0, import_lib2.$T)((0, import_lib2.$S)(NoBlock, EmptyBlock), function(value) {
13099
+ return value[1];
13100
+ });
13101
+ var ThenBlock$1 = ImplicitNestedBlock;
13102
+ var ThenBlock$2 = SingleLineStatements;
13103
+ var ThenBlock$$ = [ThenBlock$0, ThenBlock$1, ThenBlock$2];
13104
+ function ThenBlock(ctx, state2) {
13105
+ return (0, import_lib2.$EVENT_C)(ctx, state2, "ThenBlock", ThenBlock$$);
13106
+ }
12660
13107
  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) {
12661
13108
  var open = $2;
12662
13109
  var exp = $3;
@@ -13181,9 +13628,9 @@ function RangeEnd(ctx, state2) {
13181
13628
  var RangeExpression$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Expression, __, RangeDots, Expression), function($skip, $loc, $0, $1, $2, $3, $4) {
13182
13629
  var start = $1;
13183
13630
  var ws = $2;
13184
- var range = $3;
13631
+ var range2 = $3;
13185
13632
  var end = $4;
13186
- return processRangeExpression(start, ws, range, end);
13633
+ return processRangeExpression(start, ws, range2, end);
13187
13634
  });
13188
13635
  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) {
13189
13636
  var s = $1;
@@ -14668,11 +15115,7 @@ var Statement$1 = VariableStatement;
14668
15115
  var Statement$2 = (0, import_lib2.$T)((0, import_lib2.$S)(IfStatement, (0, import_lib2.$N)(ShouldExpressionize)), function(value) {
14669
15116
  return value[0];
14670
15117
  });
14671
- var Statement$3 = (0, import_lib2.$TS)((0, import_lib2.$S)(IterationStatement, (0, import_lib2.$N)(ShouldExpressionize)), function($skip, $loc, $0, $1, $2) {
14672
- if ($1.generator) return $skip;
14673
- if ($1.reduction) return $skip;
14674
- return $1;
14675
- });
15118
+ var Statement$3 = IterationActualStatement;
14676
15119
  var Statement$4 = (0, import_lib2.$T)((0, import_lib2.$S)(SwitchStatement, (0, import_lib2.$N)(ShouldExpressionize)), function(value) {
14677
15120
  return value[0];
14678
15121
  });
@@ -14688,6 +15131,14 @@ var Statement$$ = [Statement$0, Statement$1, Statement$2, Statement$3, Statement
14688
15131
  function Statement(ctx, state2) {
14689
15132
  return (0, import_lib2.$EVENT_C)(ctx, state2, "Statement", Statement$$);
14690
15133
  }
15134
+ var IterationActualStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(IterationStatement, (0, import_lib2.$N)(ShouldExpressionize)), function($skip, $loc, $0, $1, $2) {
15135
+ if ($1.generator) return $skip;
15136
+ if ($1.reduction) return $skip;
15137
+ return $1;
15138
+ });
15139
+ function IterationActualStatement(ctx, state2) {
15140
+ return (0, import_lib2.$EVENT)(ctx, state2, "IterationActualStatement", IterationActualStatement$0);
15141
+ }
14691
15142
  var ShouldExpressionize$0 = AllowedTrailingCallExpressions;
14692
15143
  var ShouldExpressionize$1 = (0, import_lib2.$S)(NotDedented, Pipe);
14693
15144
  var ShouldExpressionize$2 = BinaryOpRHS;
@@ -14790,12 +15241,12 @@ var LabelledItem$$ = [LabelledItem$0, LabelledItem$1];
14790
15241
  function LabelledItem(ctx, state2) {
14791
15242
  return (0, import_lib2.$EVENT_C)(ctx, state2, "LabelledItem", LabelledItem$$);
14792
15243
  }
14793
- 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) {
15244
+ 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) {
14794
15245
  var kind = $1;
14795
15246
  var ws = $2;
14796
15247
  var condition = $3;
14797
- var block = $5;
14798
- var e = $6;
15248
+ var block = $4;
15249
+ var e = $5;
14799
15250
  if (kind.negated) {
14800
15251
  kind = { ...kind, token: "if" };
14801
15252
  condition = negateCondition(condition);
@@ -15039,15 +15490,18 @@ function ForStatement(ctx, state2) {
15039
15490
  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) {
15040
15491
  var generator = $2;
15041
15492
  var c = $4;
15042
- const { children, declaration } = c;
15493
+ let { children, reduction } = c;
15494
+ if (generator && reduction) {
15495
+ children = [{
15496
+ type: "Error",
15497
+ message: `Cannot use reduction (${reduction.subtype}) with generators`
15498
+ }, ...children];
15499
+ }
15043
15500
  return {
15501
+ ...c,
15044
15502
  type: "ForStatement",
15045
15503
  children: [$1, ...$3, ...children],
15046
- declaration,
15047
15504
  block: null,
15048
- blockPrefix: c.blockPrefix,
15049
- hoistDec: c.hoistDec,
15050
- reduction: c.reduction,
15051
15505
  generator
15052
15506
  };
15053
15507
  });
@@ -15093,7 +15547,7 @@ var ForStatementControlWithReduction$$ = [ForStatementControlWithReduction$0, Fo
15093
15547
  function ForStatementControlWithReduction(ctx, state2) {
15094
15548
  return (0, import_lib2.$EVENT_C)(ctx, state2, "ForStatementControlWithReduction", ForStatementControlWithReduction$$);
15095
15549
  }
15096
- 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) {
15550
+ 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) {
15097
15551
  var subtype = $1;
15098
15552
  var ws = $3;
15099
15553
  return {
@@ -15314,10 +15768,13 @@ var ForDeclaration$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(LetOrConstOrVar,
15314
15768
  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) {
15315
15769
  var c = $1;
15316
15770
  var binding = $3;
15771
+ if (gatherRecursive(binding, ($) => $.type === "PinPattern").length) {
15772
+ return $skip;
15773
+ }
15317
15774
  return {
15318
15775
  type: "ForDeclaration",
15319
15776
  children: [c, binding],
15320
- decl: c.token,
15777
+ decl: c.token.trimEnd(),
15321
15778
  binding,
15322
15779
  names: binding.names
15323
15780
  };
@@ -15487,12 +15944,17 @@ function PatternExpressionList(ctx, state2) {
15487
15944
  return (0, import_lib2.$EVENT)(ctx, state2, "PatternExpressionList", PatternExpressionList$0);
15488
15945
  }
15489
15946
  var PatternExpression$0 = BindingPattern;
15490
- 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) {
15491
- var pattern = $2;
15492
- if (!pattern) return $skip;
15947
+ 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) {
15948
+ var body = $2;
15949
+ if (!body) return $skip;
15950
+ const [named, rhs] = body;
15951
+ let binding;
15952
+ if (named) [binding] = named;
15493
15953
  return {
15494
15954
  type: "ConditionFragment",
15495
- children: pattern
15955
+ children: [binding, rhs],
15956
+ binding,
15957
+ rhs
15496
15958
  };
15497
15959
  });
15498
15960
  var PatternExpression$$ = [PatternExpression$0, PatternExpression$1];
@@ -15604,31 +16066,31 @@ var FinallyClause$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(Finally, (0, impo
15604
16066
  function FinallyClause(ctx, state2) {
15605
16067
  return (0, import_lib2.$EVENT)(ctx, state2, "FinallyClause", FinallyClause$0);
15606
16068
  }
15607
- var CatchParameter$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(BindingIdentifier, (0, import_lib2.$E)(TypeSuffix)), function($skip, $loc, $0, $1, $2) {
16069
+ var CatchParameter$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)(ObjectBindingPattern, ArrayBindingPattern), TypeSuffix), function($skip, $loc, $0, $1, $2) {
15608
16070
  var binding = $1;
15609
16071
  var typeSuffix = $2;
15610
16072
  return {
15611
16073
  type: "CatchParameter",
15612
16074
  binding,
15613
16075
  typeSuffix,
15614
- children: $0
16076
+ children: [binding, typeSuffix]
16077
+ };
16078
+ });
16079
+ var CatchParameter$1 = (0, import_lib2.$TS)((0, import_lib2.$S)(PatternExpressionList), function($skip, $loc, $0, $1) {
16080
+ return {
16081
+ type: "CatchPattern",
16082
+ children: $0,
16083
+ patterns: $1
15615
16084
  };
15616
16085
  });
15617
- var CatchParameter$1 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$C)(ObjectBindingPattern, ArrayBindingPattern), TypeSuffix), function($skip, $loc, $0, $1, $2) {
16086
+ var CatchParameter$2 = (0, import_lib2.$TS)((0, import_lib2.$S)(BindingIdentifier, (0, import_lib2.$E)(TypeSuffix)), function($skip, $loc, $0, $1, $2) {
15618
16087
  var binding = $1;
15619
16088
  var typeSuffix = $2;
15620
16089
  return {
15621
16090
  type: "CatchParameter",
15622
16091
  binding,
15623
16092
  typeSuffix,
15624
- children: [binding, typeSuffix]
15625
- };
15626
- });
15627
- var CatchParameter$2 = (0, import_lib2.$TS)((0, import_lib2.$S)(PatternExpressionList), function($skip, $loc, $0, $1) {
15628
- return {
15629
- type: "CatchPattern",
15630
- children: $0,
15631
- patterns: $1
16093
+ children: $0
15632
16094
  };
15633
16095
  });
15634
16096
  var CatchParameter$$ = [CatchParameter$0, CatchParameter$1, CatchParameter$2];
@@ -15942,7 +16404,7 @@ var RestoreAll$0 = (0, import_lib2.$S)(RestoreTrailingMemberProperty, RestoreBra
15942
16404
  function RestoreAll(ctx, state2) {
15943
16405
  return (0, import_lib2.$EVENT)(ctx, state2, "RestoreAll", RestoreAll$0);
15944
16406
  }
15945
- var CommaExpressionStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(CommaExpression), function($skip, $loc, $0, $1) {
16407
+ var CommaExpressionStatement$0 = (0, import_lib2.$TS)((0, import_lib2.$S)(CommaExpressionSpread), function($skip, $loc, $0, $1) {
15946
16408
  return makeExpressionStatement($1);
15947
16409
  });
15948
16410
  function CommaExpressionStatement(ctx, state2) {
@@ -16016,19 +16478,19 @@ var ThrowStatement$0 = (0, import_lib2.$T)((0, import_lib2.$S)(Throw, MaybeParen
16016
16478
  function ThrowStatement(ctx, state2) {
16017
16479
  return (0, import_lib2.$EVENT)(ctx, state2, "ThrowStatement", ThrowStatement$0);
16018
16480
  }
16019
- 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) {
16481
+ 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) {
16020
16482
  return { $loc, token: $1 };
16021
16483
  });
16022
16484
  function Break(ctx, state2) {
16023
16485
  return (0, import_lib2.$EVENT)(ctx, state2, "Break", Break$0);
16024
16486
  }
16025
- 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) {
16487
+ 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) {
16026
16488
  return { $loc, token: $1 };
16027
16489
  });
16028
16490
  function Continue(ctx, state2) {
16029
16491
  return (0, import_lib2.$EVENT)(ctx, state2, "Continue", Continue$0);
16030
16492
  }
16031
- 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) {
16493
+ 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) {
16032
16494
  return { $loc, token: $1 };
16033
16495
  });
16034
16496
  function Debugger(ctx, state2) {
@@ -16105,7 +16567,7 @@ var MaybeParenNestedExpression$$ = [MaybeParenNestedExpression$0, MaybeParenNest
16105
16567
  function MaybeParenNestedExpression(ctx, state2) {
16106
16568
  return (0, import_lib2.$EVENT_C)(ctx, state2, "MaybeParenNestedExpression", MaybeParenNestedExpression$$);
16107
16569
  }
16108
- 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) {
16570
+ 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) {
16109
16571
  const imp = [
16110
16572
  { ...$1, ts: true },
16111
16573
  { ...$1, token: "const", js: true }
@@ -16293,7 +16755,7 @@ var ImpliedFrom$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'ImpliedF
16293
16755
  function ImpliedFrom(ctx, state2) {
16294
16756
  return (0, import_lib2.$EVENT)(ctx, state2, "ImpliedFrom", ImpliedFrom$0);
16295
16757
  }
16296
- 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) {
16758
+ 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) {
16297
16759
  var keyword = $2;
16298
16760
  var object = $5;
16299
16761
  return {
@@ -16614,19 +17076,19 @@ var LexicalDeclaration$$ = [LexicalDeclaration$0, LexicalDeclaration$1];
16614
17076
  function LexicalDeclaration(ctx, state2) {
16615
17077
  return (0, import_lib2.$EVENT_C)(ctx, state2, "LexicalDeclaration", LexicalDeclaration$$);
16616
17078
  }
16617
- 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) {
17079
+ 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) {
16618
17080
  return { $loc, token: "=", decl: "const " };
16619
17081
  });
16620
17082
  function ConstAssignment(ctx, state2) {
16621
17083
  return (0, import_lib2.$EVENT)(ctx, state2, "ConstAssignment", ConstAssignment$0);
16622
17084
  }
16623
- var LetAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L136, 'LetAssignment ".="'), function($skip, $loc, $0, $1) {
17085
+ var LetAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L138, 'LetAssignment ".="'), function($skip, $loc, $0, $1) {
16624
17086
  return { $loc, token: "=", decl: "let " };
16625
17087
  });
16626
17088
  function LetAssignment(ctx, state2) {
16627
17089
  return (0, import_lib2.$EVENT)(ctx, state2, "LetAssignment", LetAssignment$0);
16628
17090
  }
16629
- var TypeAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L137, 'TypeAssignment "::="'), function($skip, $loc, $0, $1) {
17091
+ var TypeAssignment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L139, 'TypeAssignment "::="'), function($skip, $loc, $0, $1) {
16630
17092
  return { $loc, token: "=" };
16631
17093
  });
16632
17094
  function TypeAssignment(ctx, state2) {
@@ -17070,7 +17532,7 @@ var MultiLineComment$$ = [MultiLineComment$0, MultiLineComment$1];
17070
17532
  function MultiLineComment(ctx, state2) {
17071
17533
  return (0, import_lib2.$EVENT_C)(ctx, state2, "MultiLineComment", MultiLineComment$$);
17072
17534
  }
17073
- 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) {
17535
+ 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) {
17074
17536
  return { type: "Comment", $loc, token: $1 };
17075
17537
  });
17076
17538
  function JSMultiLineComment(ctx, state2) {
@@ -17116,7 +17578,7 @@ function _(ctx, state2) {
17116
17578
  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) {
17117
17579
  return { $loc, token: $0 };
17118
17580
  });
17119
- var NonNewlineWhitespace$1 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L140, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
17581
+ var NonNewlineWhitespace$1 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L142, 'NonNewlineWhitespace "\\\\\\\\"'), CoffeeLineContinuationEnabled, EOL), function(value) {
17120
17582
  return " ";
17121
17583
  });
17122
17584
  var NonNewlineWhitespace$$ = [NonNewlineWhitespace$0, NonNewlineWhitespace$1];
@@ -17167,7 +17629,7 @@ var StatementDelimiter$$ = [StatementDelimiter$0, StatementDelimiter$1, Statemen
17167
17629
  function StatementDelimiter(ctx, state2) {
17168
17630
  return (0, import_lib2.$EVENT_C)(ctx, state2, "StatementDelimiter", StatementDelimiter$$);
17169
17631
  }
17170
- 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 "]"'))));
17632
+ 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 "]"'))));
17171
17633
  function ClosingDelimiter(ctx, state2) {
17172
17634
  return (0, import_lib2.$EVENT)(ctx, state2, "ClosingDelimiter", ClosingDelimiter$0);
17173
17635
  }
@@ -17190,7 +17652,7 @@ var Loc$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'Loc ""'), functi
17190
17652
  function Loc(ctx, state2) {
17191
17653
  return (0, import_lib2.$EVENT)(ctx, state2, "Loc", Loc$0);
17192
17654
  }
17193
- 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) {
17655
+ 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) {
17194
17656
  return { $loc, token: $1, ts: true };
17195
17657
  });
17196
17658
  function Abstract(ctx, state2) {
@@ -17202,67 +17664,67 @@ var Ampersand$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L117, 'Ampersan
17202
17664
  function Ampersand(ctx, state2) {
17203
17665
  return (0, import_lib2.$EVENT)(ctx, state2, "Ampersand", Ampersand$0);
17204
17666
  }
17205
- 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) {
17667
+ 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) {
17206
17668
  return { $loc, token: $1 };
17207
17669
  });
17208
17670
  function As(ctx, state2) {
17209
17671
  return (0, import_lib2.$EVENT)(ctx, state2, "As", As$0);
17210
17672
  }
17211
- var At$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L144, 'At "@"'), function($skip, $loc, $0, $1) {
17673
+ var At$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L146, 'At "@"'), function($skip, $loc, $0, $1) {
17212
17674
  return { $loc, token: $1 };
17213
17675
  });
17214
17676
  function At(ctx, state2) {
17215
17677
  return (0, import_lib2.$EVENT)(ctx, state2, "At", At$0);
17216
17678
  }
17217
- var AtAt$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L145, 'AtAt "@@"'), function($skip, $loc, $0, $1) {
17679
+ var AtAt$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L147, 'AtAt "@@"'), function($skip, $loc, $0, $1) {
17218
17680
  return { $loc, token: "@" };
17219
17681
  });
17220
17682
  function AtAt(ctx, state2) {
17221
17683
  return (0, import_lib2.$EVENT)(ctx, state2, "AtAt", AtAt$0);
17222
17684
  }
17223
- 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) {
17685
+ 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) {
17224
17686
  return { $loc, token: $1, type: "Async" };
17225
17687
  });
17226
17688
  function Async(ctx, state2) {
17227
17689
  return (0, import_lib2.$EVENT)(ctx, state2, "Async", Async$0);
17228
17690
  }
17229
- 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) {
17691
+ 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) {
17230
17692
  return { $loc, token: $1, type: "Await" };
17231
17693
  });
17232
17694
  function Await(ctx, state2) {
17233
17695
  return (0, import_lib2.$EVENT)(ctx, state2, "Await", Await$0);
17234
17696
  }
17235
- var Backtick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L148, 'Backtick "`"'), function($skip, $loc, $0, $1) {
17697
+ var Backtick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L150, 'Backtick "`"'), function($skip, $loc, $0, $1) {
17236
17698
  return { $loc, token: $1 };
17237
17699
  });
17238
17700
  function Backtick(ctx, state2) {
17239
17701
  return (0, import_lib2.$EVENT)(ctx, state2, "Backtick", Backtick$0);
17240
17702
  }
17241
- 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) {
17703
+ 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) {
17242
17704
  return { $loc, token: $1 };
17243
17705
  });
17244
17706
  function By(ctx, state2) {
17245
17707
  return (0, import_lib2.$EVENT)(ctx, state2, "By", By$0);
17246
17708
  }
17247
- var Caret$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L22, 'Caret "^"'), function($skip, $loc, $0, $1) {
17709
+ 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) {
17248
17710
  return { $loc, token: $1 };
17249
17711
  });
17250
17712
  function Caret(ctx, state2) {
17251
17713
  return (0, import_lib2.$EVENT)(ctx, state2, "Caret", Caret$0);
17252
17714
  }
17253
- 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) {
17715
+ 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) {
17254
17716
  return { $loc, token: $1 };
17255
17717
  });
17256
17718
  function Case(ctx, state2) {
17257
17719
  return (0, import_lib2.$EVENT)(ctx, state2, "Case", Case$0);
17258
17720
  }
17259
- 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) {
17721
+ 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) {
17260
17722
  return { $loc, token: $1 };
17261
17723
  });
17262
17724
  function Catch(ctx, state2) {
17263
17725
  return (0, import_lib2.$EVENT)(ctx, state2, "Catch", Catch$0);
17264
17726
  }
17265
- 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) {
17727
+ 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) {
17266
17728
  return { $loc, token: $1 };
17267
17729
  });
17268
17730
  function Class(ctx, state2) {
@@ -17286,13 +17748,13 @@ var CloseBracket$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L46, 'CloseB
17286
17748
  function CloseBracket(ctx, state2) {
17287
17749
  return (0, import_lib2.$EVENT)(ctx, state2, "CloseBracket", CloseBracket$0);
17288
17750
  }
17289
- var CloseParen$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L141, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
17751
+ var CloseParen$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L143, 'CloseParen ")"'), function($skip, $loc, $0, $1) {
17290
17752
  return { $loc, token: $1 };
17291
17753
  });
17292
17754
  function CloseParen(ctx, state2) {
17293
17755
  return (0, import_lib2.$EVENT)(ctx, state2, "CloseParen", CloseParen$0);
17294
17756
  }
17295
- var CoffeeSubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L153, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
17757
+ var CoffeeSubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L155, 'CoffeeSubstitutionStart "#{"'), function($skip, $loc, $0, $1) {
17296
17758
  return { $loc, token: "${" };
17297
17759
  });
17298
17760
  function CoffeeSubstitutionStart(ctx, state2) {
@@ -17310,37 +17772,37 @@ var Comma$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L17, 'Comma ","'),
17310
17772
  function Comma(ctx, state2) {
17311
17773
  return (0, import_lib2.$EVENT)(ctx, state2, "Comma", Comma$0);
17312
17774
  }
17313
- 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) {
17775
+ 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) {
17314
17776
  return { $loc, token: $1 };
17315
17777
  });
17316
17778
  function Comptime(ctx, state2) {
17317
17779
  return (0, import_lib2.$EVENT)(ctx, state2, "Comptime", Comptime$0);
17318
17780
  }
17319
- var ConstructorShorthand$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L144, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
17781
+ var ConstructorShorthand$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L146, 'ConstructorShorthand "@"'), function($skip, $loc, $0, $1) {
17320
17782
  return { $loc, token: "constructor" };
17321
17783
  });
17322
17784
  function ConstructorShorthand(ctx, state2) {
17323
17785
  return (0, import_lib2.$EVENT)(ctx, state2, "ConstructorShorthand", ConstructorShorthand$0);
17324
17786
  }
17325
- 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) {
17787
+ 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) {
17326
17788
  return { $loc, token: $1 };
17327
17789
  });
17328
17790
  function Declare(ctx, state2) {
17329
17791
  return (0, import_lib2.$EVENT)(ctx, state2, "Declare", Declare$0);
17330
17792
  }
17331
- 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) {
17793
+ 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) {
17332
17794
  return { $loc, token: $1 };
17333
17795
  });
17334
17796
  function Default(ctx, state2) {
17335
17797
  return (0, import_lib2.$EVENT)(ctx, state2, "Default", Default$0);
17336
17798
  }
17337
- 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) {
17799
+ 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) {
17338
17800
  return { $loc, token: $1 };
17339
17801
  });
17340
17802
  function Delete(ctx, state2) {
17341
17803
  return (0, import_lib2.$EVENT)(ctx, state2, "Delete", Delete$0);
17342
17804
  }
17343
- 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) {
17805
+ 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) {
17344
17806
  return { $loc, token: $1 };
17345
17807
  });
17346
17808
  function Do(ctx, state2) {
@@ -17360,20 +17822,20 @@ var Dot$$ = [Dot$0, Dot$1];
17360
17822
  function Dot(ctx, state2) {
17361
17823
  return (0, import_lib2.$EVENT_C)(ctx, state2, "Dot", Dot$$);
17362
17824
  }
17363
- 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) {
17825
+ 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) {
17364
17826
  return { $loc, token: $1 };
17365
17827
  });
17366
- var DotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L160, 'DotDot "\u2025"'), function($skip, $loc, $0, $1) {
17828
+ var DotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DotDot "\u2025"'), function($skip, $loc, $0, $1) {
17367
17829
  return { $loc, token: ".." };
17368
17830
  });
17369
17831
  var DotDot$$ = [DotDot$0, DotDot$1];
17370
17832
  function DotDot(ctx, state2) {
17371
17833
  return (0, import_lib2.$EVENT_C)(ctx, state2, "DotDot", DotDot$$);
17372
17834
  }
17373
- var DotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L161, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
17835
+ var DotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L163, 'DotDotDot "..."'), function($skip, $loc, $0, $1) {
17374
17836
  return { $loc, token: $1 };
17375
17837
  });
17376
- var DotDotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L162, 'DotDotDot "\u2026"'), function($skip, $loc, $0, $1) {
17838
+ var DotDotDot$1 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L164, 'DotDotDot "\u2026"'), function($skip, $loc, $0, $1) {
17377
17839
  return { $loc, token: "..." };
17378
17840
  });
17379
17841
  var DotDotDot$$ = [DotDotDot$0, DotDotDot$1];
@@ -17386,31 +17848,31 @@ var InsertDotDotDot$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L0, 'Inse
17386
17848
  function InsertDotDotDot(ctx, state2) {
17387
17849
  return (0, import_lib2.$EVENT)(ctx, state2, "InsertDotDotDot", InsertDotDotDot$0);
17388
17850
  }
17389
- var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L163, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
17851
+ var DoubleColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L165, 'DoubleColon "::"'), function($skip, $loc, $0, $1) {
17390
17852
  return { $loc, token: $1 };
17391
17853
  });
17392
17854
  function DoubleColon(ctx, state2) {
17393
17855
  return (0, import_lib2.$EVENT)(ctx, state2, "DoubleColon", DoubleColon$0);
17394
17856
  }
17395
- var DoubleColonAsColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L163, 'DoubleColonAsColon "::"'), function($skip, $loc, $0, $1) {
17857
+ var DoubleColonAsColon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L165, 'DoubleColonAsColon "::"'), function($skip, $loc, $0, $1) {
17396
17858
  return { $loc, token: ":" };
17397
17859
  });
17398
17860
  function DoubleColonAsColon(ctx, state2) {
17399
17861
  return (0, import_lib2.$EVENT)(ctx, state2, "DoubleColonAsColon", DoubleColonAsColon$0);
17400
17862
  }
17401
- var DoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L164, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
17863
+ var DoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L166, 'DoubleQuote "\\\\\\""'), function($skip, $loc, $0, $1) {
17402
17864
  return { $loc, token: $1 };
17403
17865
  });
17404
17866
  function DoubleQuote(ctx, state2) {
17405
17867
  return (0, import_lib2.$EVENT)(ctx, state2, "DoubleQuote", DoubleQuote$0);
17406
17868
  }
17407
- 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) {
17869
+ 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) {
17408
17870
  return { $loc, token: $1 };
17409
17871
  });
17410
17872
  function Each(ctx, state2) {
17411
17873
  return (0, import_lib2.$EVENT)(ctx, state2, "Each", Each$0);
17412
17874
  }
17413
- 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) {
17875
+ 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) {
17414
17876
  return { $loc, token: $1 };
17415
17877
  });
17416
17878
  function Else(ctx, state2) {
@@ -17422,61 +17884,61 @@ var Equals$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L3, 'Equals "="'),
17422
17884
  function Equals(ctx, state2) {
17423
17885
  return (0, import_lib2.$EVENT)(ctx, state2, "Equals", Equals$0);
17424
17886
  }
17425
- var ExclamationPoint$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L167, 'ExclamationPoint "!"'), function($skip, $loc, $0, $1) {
17887
+ var ExclamationPoint$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L169, 'ExclamationPoint "!"'), function($skip, $loc, $0, $1) {
17426
17888
  return { $loc, token: $1 };
17427
17889
  });
17428
17890
  function ExclamationPoint(ctx, state2) {
17429
17891
  return (0, import_lib2.$EVENT)(ctx, state2, "ExclamationPoint", ExclamationPoint$0);
17430
17892
  }
17431
- 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) {
17893
+ 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) {
17432
17894
  return { $loc, token: $1 };
17433
17895
  });
17434
17896
  function Export(ctx, state2) {
17435
17897
  return (0, import_lib2.$EVENT)(ctx, state2, "Export", Export$0);
17436
17898
  }
17437
- 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) {
17899
+ 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) {
17438
17900
  return { $loc, token: $1 };
17439
17901
  });
17440
17902
  function Extends(ctx, state2) {
17441
17903
  return (0, import_lib2.$EVENT)(ctx, state2, "Extends", Extends$0);
17442
17904
  }
17443
- 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) {
17905
+ 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) {
17444
17906
  return { $loc, token: $1 };
17445
17907
  });
17446
17908
  function Finally(ctx, state2) {
17447
17909
  return (0, import_lib2.$EVENT)(ctx, state2, "Finally", Finally$0);
17448
17910
  }
17449
- 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) {
17911
+ 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) {
17450
17912
  return { $loc, token: $1 };
17451
17913
  });
17452
17914
  function For(ctx, state2) {
17453
17915
  return (0, import_lib2.$EVENT)(ctx, state2, "For", For$0);
17454
17916
  }
17455
- 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) {
17917
+ 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) {
17456
17918
  return { $loc, token: $1 };
17457
17919
  });
17458
17920
  function From(ctx, state2) {
17459
17921
  return (0, import_lib2.$EVENT)(ctx, state2, "From", From$0);
17460
17922
  }
17461
- 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) {
17923
+ 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) {
17462
17924
  return { $loc, token: $1 };
17463
17925
  });
17464
17926
  function Function2(ctx, state2) {
17465
17927
  return (0, import_lib2.$EVENT)(ctx, state2, "Function", Function$0);
17466
17928
  }
17467
- 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) {
17929
+ 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) {
17468
17930
  return { $loc, token: $1, type: "GetOrSet" };
17469
17931
  });
17470
17932
  function GetOrSet(ctx, state2) {
17471
17933
  return (0, import_lib2.$EVENT)(ctx, state2, "GetOrSet", GetOrSet$0);
17472
17934
  }
17473
- var Hash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L176, 'Hash "#"'), function($skip, $loc, $0, $1) {
17935
+ var Hash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L178, 'Hash "#"'), function($skip, $loc, $0, $1) {
17474
17936
  return { $loc, token: $1 };
17475
17937
  });
17476
17938
  function Hash(ctx, state2) {
17477
17939
  return (0, import_lib2.$EVENT)(ctx, state2, "Hash", Hash$0);
17478
17940
  }
17479
- 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) {
17941
+ 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) {
17480
17942
  return { $loc, token: $1 };
17481
17943
  });
17482
17944
  function If(ctx, state2) {
@@ -17488,67 +17950,67 @@ var Import$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)
17488
17950
  function Import(ctx, state2) {
17489
17951
  return (0, import_lib2.$EVENT)(ctx, state2, "Import", Import$0);
17490
17952
  }
17491
- 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) {
17953
+ 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) {
17492
17954
  return { $loc, token: $1 };
17493
17955
  });
17494
17956
  function In(ctx, state2) {
17495
17957
  return (0, import_lib2.$EVENT)(ctx, state2, "In", In$0);
17496
17958
  }
17497
- 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) {
17959
+ 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) {
17498
17960
  return { $loc, token: $1 };
17499
17961
  });
17500
17962
  function Infer(ctx, state2) {
17501
17963
  return (0, import_lib2.$EVENT)(ctx, state2, "Infer", Infer$0);
17502
17964
  }
17503
- 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) {
17965
+ 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) {
17504
17966
  return { $loc, token: $1 };
17505
17967
  });
17506
17968
  function LetOrConst(ctx, state2) {
17507
17969
  return (0, import_lib2.$EVENT)(ctx, state2, "LetOrConst", LetOrConst$0);
17508
17970
  }
17509
- 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) {
17971
+ 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) {
17510
17972
  return { $loc, token: $1 };
17511
17973
  });
17512
17974
  function Const(ctx, state2) {
17513
17975
  return (0, import_lib2.$EVENT)(ctx, state2, "Const", Const$0);
17514
17976
  }
17515
- 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) {
17977
+ 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) {
17516
17978
  return { $loc, token: $1 };
17517
17979
  });
17518
17980
  function Is(ctx, state2) {
17519
17981
  return (0, import_lib2.$EVENT)(ctx, state2, "Is", Is$0);
17520
17982
  }
17521
- 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) {
17983
+ 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) {
17522
17984
  return { $loc, token: $1 };
17523
17985
  });
17524
17986
  function LetOrConstOrVar(ctx, state2) {
17525
17987
  return (0, import_lib2.$EVENT)(ctx, state2, "LetOrConstOrVar", LetOrConstOrVar$0);
17526
17988
  }
17527
- 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) {
17989
+ 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) {
17528
17990
  return { $loc, token: $1 };
17529
17991
  });
17530
17992
  function Like(ctx, state2) {
17531
17993
  return (0, import_lib2.$EVENT)(ctx, state2, "Like", Like$0);
17532
17994
  }
17533
- 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) {
17995
+ 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) {
17534
17996
  return { $loc, token: "while" };
17535
17997
  });
17536
17998
  function Loop(ctx, state2) {
17537
17999
  return (0, import_lib2.$EVENT)(ctx, state2, "Loop", Loop$0);
17538
18000
  }
17539
- 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) {
18001
+ 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) {
17540
18002
  return { $loc, token: $1 };
17541
18003
  });
17542
18004
  function New(ctx, state2) {
17543
18005
  return (0, import_lib2.$EVENT)(ctx, state2, "New", New$0);
17544
18006
  }
17545
- 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) {
18007
+ 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) {
17546
18008
  return { $loc, token: "!" };
17547
18009
  });
17548
18010
  function Not(ctx, state2) {
17549
18011
  return (0, import_lib2.$EVENT)(ctx, state2, "Not", Not$0);
17550
18012
  }
17551
- 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) {
18013
+ 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) {
17552
18014
  return { $loc, token: $1 };
17553
18015
  });
17554
18016
  function Of(ctx, state2) {
@@ -17566,7 +18028,7 @@ var OpenBrace$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L1, 'OpenBrace
17566
18028
  function OpenBrace(ctx, state2) {
17567
18029
  return (0, import_lib2.$EVENT)(ctx, state2, "OpenBrace", OpenBrace$0);
17568
18030
  }
17569
- var OpenBracket$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L189, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
18031
+ var OpenBracket$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L191, 'OpenBracket "["'), function($skip, $loc, $0, $1) {
17570
18032
  return { $loc, token: $1 };
17571
18033
  });
17572
18034
  function OpenBracket(ctx, state2) {
@@ -17578,49 +18040,49 @@ var OpenParen$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L4, 'OpenParen
17578
18040
  function OpenParen(ctx, state2) {
17579
18041
  return (0, import_lib2.$EVENT)(ctx, state2, "OpenParen", OpenParen$0);
17580
18042
  }
17581
- 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) {
18043
+ 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) {
17582
18044
  return { $loc, token: $1 };
17583
18045
  });
17584
18046
  function Operator(ctx, state2) {
17585
18047
  return (0, import_lib2.$EVENT)(ctx, state2, "Operator", Operator$0);
17586
18048
  }
17587
- 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) {
18049
+ 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) {
17588
18050
  return { $loc, token: $1, ts: true };
17589
18051
  });
17590
18052
  function Override(ctx, state2) {
17591
18053
  return (0, import_lib2.$EVENT)(ctx, state2, "Override", Override$0);
17592
18054
  }
17593
- 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) {
18055
+ 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) {
17594
18056
  return { $loc, token: $1 };
17595
18057
  });
17596
18058
  function Own(ctx, state2) {
17597
18059
  return (0, import_lib2.$EVENT)(ctx, state2, "Own", Own$0);
17598
18060
  }
17599
- 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) {
18061
+ 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) {
17600
18062
  return { $loc, token: $1 };
17601
18063
  });
17602
18064
  function Public(ctx, state2) {
17603
18065
  return (0, import_lib2.$EVENT)(ctx, state2, "Public", Public$0);
17604
18066
  }
17605
- 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) {
18067
+ 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) {
17606
18068
  return { $loc, token: $1 };
17607
18069
  });
17608
18070
  function Private(ctx, state2) {
17609
18071
  return (0, import_lib2.$EVENT)(ctx, state2, "Private", Private$0);
17610
18072
  }
17611
- 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) {
18073
+ 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) {
17612
18074
  return { $loc, token: $1 };
17613
18075
  });
17614
18076
  function Protected(ctx, state2) {
17615
18077
  return (0, import_lib2.$EVENT)(ctx, state2, "Protected", Protected$0);
17616
18078
  }
17617
- 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) {
18079
+ 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) {
17618
18080
  return { $loc, token: "||>" };
17619
18081
  });
17620
- 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) {
18082
+ 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) {
17621
18083
  return { $loc, token: "|>=" };
17622
18084
  });
17623
- 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) {
18085
+ 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) {
17624
18086
  return { $loc, token: "|>" };
17625
18087
  });
17626
18088
  var Pipe$$ = [Pipe$0, Pipe$1, Pipe$2];
@@ -17633,19 +18095,19 @@ var QuestionMark$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L6, 'Questio
17633
18095
  function QuestionMark(ctx, state2) {
17634
18096
  return (0, import_lib2.$EVENT)(ctx, state2, "QuestionMark", QuestionMark$0);
17635
18097
  }
17636
- 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) {
18098
+ 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) {
17637
18099
  return { $loc, token: $1, ts: true };
17638
18100
  });
17639
18101
  function Readonly(ctx, state2) {
17640
18102
  return (0, import_lib2.$EVENT)(ctx, state2, "Readonly", Readonly$0);
17641
18103
  }
17642
- 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) {
18104
+ 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) {
17643
18105
  return { $loc, token: $1 };
17644
18106
  });
17645
18107
  function Return(ctx, state2) {
17646
18108
  return (0, import_lib2.$EVENT)(ctx, state2, "Return", Return$0);
17647
18109
  }
17648
- 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) {
18110
+ 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) {
17649
18111
  return { $loc, token: $1 };
17650
18112
  });
17651
18113
  function Satisfies(ctx, state2) {
@@ -17657,7 +18119,7 @@ var Semicolon$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L119, 'Semicolo
17657
18119
  function Semicolon(ctx, state2) {
17658
18120
  return (0, import_lib2.$EVENT)(ctx, state2, "Semicolon", Semicolon$0);
17659
18121
  }
17660
- var SingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L205, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
18122
+ var SingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L207, `SingleQuote "'"`), function($skip, $loc, $0, $1) {
17661
18123
  return { $loc, token: $1 };
17662
18124
  });
17663
18125
  function SingleQuote(ctx, state2) {
@@ -17669,149 +18131,149 @@ var Star$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L75, 'Star "*"'), fu
17669
18131
  function Star(ctx, state2) {
17670
18132
  return (0, import_lib2.$EVENT)(ctx, state2, "Star", Star$0);
17671
18133
  }
17672
- 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) {
18134
+ 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) {
17673
18135
  return { $loc, token: $1 };
17674
18136
  });
17675
- 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) {
18137
+ 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) {
17676
18138
  return { $loc, token: "static " };
17677
18139
  });
17678
18140
  var Static$$ = [Static$0, Static$1];
17679
18141
  function Static(ctx, state2) {
17680
18142
  return (0, import_lib2.$EVENT_C)(ctx, state2, "Static", Static$$);
17681
18143
  }
17682
- var SubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L207, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
18144
+ var SubstitutionStart$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L209, 'SubstitutionStart "${"'), function($skip, $loc, $0, $1) {
17683
18145
  return { $loc, token: $1 };
17684
18146
  });
17685
18147
  function SubstitutionStart(ctx, state2) {
17686
18148
  return (0, import_lib2.$EVENT)(ctx, state2, "SubstitutionStart", SubstitutionStart$0);
17687
18149
  }
17688
- 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) {
18150
+ 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) {
17689
18151
  return { $loc, token: $1 };
17690
18152
  });
17691
18153
  function Super(ctx, state2) {
17692
18154
  return (0, import_lib2.$EVENT)(ctx, state2, "Super", Super$0);
17693
18155
  }
17694
- 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) {
18156
+ 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) {
17695
18157
  return { $loc, token: $1 };
17696
18158
  });
17697
18159
  function Switch(ctx, state2) {
17698
18160
  return (0, import_lib2.$EVENT)(ctx, state2, "Switch", Switch$0);
17699
18161
  }
17700
- 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) {
18162
+ 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) {
17701
18163
  return { $loc, token: $1 };
17702
18164
  });
17703
18165
  function Target(ctx, state2) {
17704
18166
  return (0, import_lib2.$EVENT)(ctx, state2, "Target", Target$0);
17705
18167
  }
17706
- 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) {
18168
+ 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) {
17707
18169
  return { $loc, token: "" };
17708
18170
  });
17709
18171
  function Then(ctx, state2) {
17710
18172
  return (0, import_lib2.$EVENT)(ctx, state2, "Then", Then$0);
17711
18173
  }
17712
- 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) {
18174
+ 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) {
17713
18175
  return { $loc, token: $1 };
17714
18176
  });
17715
18177
  function This(ctx, state2) {
17716
18178
  return (0, import_lib2.$EVENT)(ctx, state2, "This", This$0);
17717
18179
  }
17718
- 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) {
18180
+ 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) {
17719
18181
  return { $loc, token: $1 };
17720
18182
  });
17721
18183
  function Throw(ctx, state2) {
17722
18184
  return (0, import_lib2.$EVENT)(ctx, state2, "Throw", Throw$0);
17723
18185
  }
17724
- var TripleDoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L214, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
18186
+ var TripleDoubleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L216, 'TripleDoubleQuote "\\\\\\"\\\\\\"\\\\\\""'), function($skip, $loc, $0, $1) {
17725
18187
  return { $loc, token: "`" };
17726
18188
  });
17727
18189
  function TripleDoubleQuote(ctx, state2) {
17728
18190
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleDoubleQuote", TripleDoubleQuote$0);
17729
18191
  }
17730
- var TripleSingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L215, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
18192
+ var TripleSingleQuote$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L217, `TripleSingleQuote "'''"`), function($skip, $loc, $0, $1) {
17731
18193
  return { $loc, token: "`" };
17732
18194
  });
17733
18195
  function TripleSingleQuote(ctx, state2) {
17734
18196
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleSingleQuote", TripleSingleQuote$0);
17735
18197
  }
17736
- var TripleSlash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L216, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
18198
+ var TripleSlash$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L218, 'TripleSlash "///"'), function($skip, $loc, $0, $1) {
17737
18199
  return { $loc, token: "/" };
17738
18200
  });
17739
18201
  function TripleSlash(ctx, state2) {
17740
18202
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleSlash", TripleSlash$0);
17741
18203
  }
17742
- var TripleTick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L217, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
18204
+ var TripleTick$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L219, 'TripleTick "```"'), function($skip, $loc, $0, $1) {
17743
18205
  return { $loc, token: "`" };
17744
18206
  });
17745
18207
  function TripleTick(ctx, state2) {
17746
18208
  return (0, import_lib2.$EVENT)(ctx, state2, "TripleTick", TripleTick$0);
17747
18209
  }
17748
- 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) {
18210
+ 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) {
17749
18211
  return { $loc, token: $1 };
17750
18212
  });
17751
18213
  function Try(ctx, state2) {
17752
18214
  return (0, import_lib2.$EVENT)(ctx, state2, "Try", Try$0);
17753
18215
  }
17754
- 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) {
18216
+ 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) {
17755
18217
  return { $loc, token: $1 };
17756
18218
  });
17757
18219
  function Typeof(ctx, state2) {
17758
18220
  return (0, import_lib2.$EVENT)(ctx, state2, "Typeof", Typeof$0);
17759
18221
  }
17760
- 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) {
18222
+ 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) {
17761
18223
  return { $loc, token: $1 };
17762
18224
  });
17763
18225
  function Undefined(ctx, state2) {
17764
18226
  return (0, import_lib2.$EVENT)(ctx, state2, "Undefined", Undefined$0);
17765
18227
  }
17766
- 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) {
18228
+ 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) {
17767
18229
  return { $loc, token: $1, negated: true };
17768
18230
  });
17769
18231
  function Unless(ctx, state2) {
17770
18232
  return (0, import_lib2.$EVENT)(ctx, state2, "Unless", Unless$0);
17771
18233
  }
17772
- 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) {
18234
+ 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) {
17773
18235
  return { $loc, token: $1, negated: true };
17774
18236
  });
17775
18237
  function Until(ctx, state2) {
17776
18238
  return (0, import_lib2.$EVENT)(ctx, state2, "Until", Until$0);
17777
18239
  }
17778
- 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) {
18240
+ 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) {
17779
18241
  return { $loc, token: $1 };
17780
18242
  });
17781
18243
  function Using(ctx, state2) {
17782
18244
  return (0, import_lib2.$EVENT)(ctx, state2, "Using", Using$0);
17783
18245
  }
17784
- 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) {
18246
+ 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) {
17785
18247
  return { $loc, token: $1 };
17786
18248
  });
17787
18249
  function Var(ctx, state2) {
17788
18250
  return (0, import_lib2.$EVENT)(ctx, state2, "Var", Var$0);
17789
18251
  }
17790
- 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) {
18252
+ 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) {
17791
18253
  return { $loc, token: $1 };
17792
18254
  });
17793
18255
  function Void(ctx, state2) {
17794
18256
  return (0, import_lib2.$EVENT)(ctx, state2, "Void", Void$0);
17795
18257
  }
17796
- 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) {
18258
+ 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) {
17797
18259
  return { $loc, token: "case" };
17798
18260
  });
17799
18261
  function When(ctx, state2) {
17800
18262
  return (0, import_lib2.$EVENT)(ctx, state2, "When", When$0);
17801
18263
  }
17802
- 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) {
18264
+ 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) {
17803
18265
  return { $loc, token: $1 };
17804
18266
  });
17805
18267
  function While(ctx, state2) {
17806
18268
  return (0, import_lib2.$EVENT)(ctx, state2, "While", While$0);
17807
18269
  }
17808
- 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) {
18270
+ 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) {
17809
18271
  return { $loc, token: $1 };
17810
18272
  });
17811
18273
  function With(ctx, state2) {
17812
18274
  return (0, import_lib2.$EVENT)(ctx, state2, "With", With$0);
17813
18275
  }
17814
- 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) {
18276
+ 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) {
17815
18277
  return { $loc, token: $1, type: "Yield" };
17816
18278
  });
17817
18279
  function Yield(ctx, state2) {
@@ -17888,7 +18350,7 @@ var JSXElement$$ = [JSXElement$0, JSXElement$1, JSXElement$2];
17888
18350
  function JSXElement(ctx, state2) {
17889
18351
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXElement", JSXElement$$);
17890
18352
  }
17891
- 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) {
18353
+ 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) {
17892
18354
  return { type: "JSXElement", children: $0, tag: $2 };
17893
18355
  });
17894
18356
  function JSXSelfClosingElement(ctx, state2) {
@@ -17921,7 +18383,7 @@ var JSXOptionalClosingElement$$ = [JSXOptionalClosingElement$0, JSXOptionalClosi
17921
18383
  function JSXOptionalClosingElement(ctx, state2) {
17922
18384
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXOptionalClosingElement", JSXOptionalClosingElement$$);
17923
18385
  }
17924
- 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 ">"'));
18386
+ 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 ">"'));
17925
18387
  function JSXClosingElement(ctx, state2) {
17926
18388
  return (0, import_lib2.$EVENT)(ctx, state2, "JSXClosingElement", JSXClosingElement$0);
17927
18389
  }
@@ -17941,7 +18403,7 @@ var JSXFragment$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$N)
17941
18403
  ];
17942
18404
  return { type: "JSXFragment", children: parts, jsxChildren: children.jsxChildren };
17943
18405
  });
17944
- 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) {
18406
+ 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) {
17945
18407
  var children = $3;
17946
18408
  $0 = $0.slice(1);
17947
18409
  return {
@@ -17954,7 +18416,7 @@ var JSXFragment$$ = [JSXFragment$0, JSXFragment$1];
17954
18416
  function JSXFragment(ctx, state2) {
17955
18417
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXFragment", JSXFragment$$);
17956
18418
  }
17957
- var PushJSXOpeningFragment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L230, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
18419
+ var PushJSXOpeningFragment$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L232, 'PushJSXOpeningFragment "<>"'), function($skip, $loc, $0, $1) {
17958
18420
  state.JSXTagStack.push("");
17959
18421
  return $1;
17960
18422
  });
@@ -17970,11 +18432,11 @@ var JSXOptionalClosingFragment$$ = [JSXOptionalClosingFragment$0, JSXOptionalClo
17970
18432
  function JSXOptionalClosingFragment(ctx, state2) {
17971
18433
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXOptionalClosingFragment", JSXOptionalClosingFragment$$);
17972
18434
  }
17973
- var JSXClosingFragment$0 = (0, import_lib2.$EXPECT)($L231, 'JSXClosingFragment "</>"');
18435
+ var JSXClosingFragment$0 = (0, import_lib2.$EXPECT)($L233, 'JSXClosingFragment "</>"');
17974
18436
  function JSXClosingFragment(ctx, state2) {
17975
18437
  return (0, import_lib2.$EVENT)(ctx, state2, "JSXClosingFragment", JSXClosingFragment$0);
17976
18438
  }
17977
- 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) {
18439
+ 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) {
17978
18440
  return config.defaultElement;
17979
18441
  });
17980
18442
  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)))));
@@ -18151,7 +18613,7 @@ var JSXAttribute$4 = (0, import_lib2.$TS)((0, import_lib2.$S)(Identifier, (0, im
18151
18613
  }
18152
18614
  return $skip;
18153
18615
  });
18154
- var JSXAttribute$5 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L176, 'JSXAttribute "#"'), JSXShorthandString), function($skip, $loc, $0, $1, $2) {
18616
+ var JSXAttribute$5 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EXPECT)($L178, 'JSXAttribute "#"'), JSXShorthandString), function($skip, $loc, $0, $1, $2) {
18155
18617
  return [" ", "id=", $2];
18156
18618
  });
18157
18619
  var JSXAttribute$6 = (0, import_lib2.$TS)((0, import_lib2.$S)(Dot, JSXShorthandString), function($skip, $loc, $0, $1, $2) {
@@ -18487,7 +18949,7 @@ var JSXChildGeneral$$ = [JSXChildGeneral$0, JSXChildGeneral$1, JSXChildGeneral$2
18487
18949
  function JSXChildGeneral(ctx, state2) {
18488
18950
  return (0, import_lib2.$EVENT_C)(ctx, state2, "JSXChildGeneral", JSXChildGeneral$$);
18489
18951
  }
18490
- 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) {
18952
+ 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) {
18491
18953
  return ["{/*", $2, "*/}"];
18492
18954
  });
18493
18955
  function JSXComment(ctx, state2) {
@@ -18771,37 +19233,37 @@ var InterfaceExtendsTarget$0 = ImplementsTarget;
18771
19233
  function InterfaceExtendsTarget(ctx, state2) {
18772
19234
  return (0, import_lib2.$EVENT)(ctx, state2, "InterfaceExtendsTarget", InterfaceExtendsTarget$0);
18773
19235
  }
18774
- 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) {
19236
+ 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) {
18775
19237
  return { $loc, token: $1 };
18776
19238
  });
18777
19239
  function TypeKeyword(ctx, state2) {
18778
19240
  return (0, import_lib2.$EVENT)(ctx, state2, "TypeKeyword", TypeKeyword$0);
18779
19241
  }
18780
- 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) {
19242
+ 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) {
18781
19243
  return { $loc, token: $1 };
18782
19244
  });
18783
19245
  function Enum(ctx, state2) {
18784
19246
  return (0, import_lib2.$EVENT)(ctx, state2, "Enum", Enum$0);
18785
19247
  }
18786
- 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) {
19248
+ 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) {
18787
19249
  return { $loc, token: $1 };
18788
19250
  });
18789
19251
  function Interface(ctx, state2) {
18790
19252
  return (0, import_lib2.$EVENT)(ctx, state2, "Interface", Interface$0);
18791
19253
  }
18792
- 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) {
19254
+ 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) {
18793
19255
  return { $loc, token: $1 };
18794
19256
  });
18795
19257
  function Global(ctx, state2) {
18796
19258
  return (0, import_lib2.$EVENT)(ctx, state2, "Global", Global$0);
18797
19259
  }
18798
- 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) {
19260
+ 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) {
18799
19261
  return { $loc, token: $1 };
18800
19262
  });
18801
19263
  function Module(ctx, state2) {
18802
19264
  return (0, import_lib2.$EVENT)(ctx, state2, "Module", Module$0);
18803
19265
  }
18804
- 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) {
19266
+ 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) {
18805
19267
  return { $loc, token: $1 };
18806
19268
  });
18807
19269
  function Namespace(ctx, state2) {
@@ -19110,7 +19572,7 @@ var ReturnTypeSuffix$0 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib
19110
19572
  function ReturnTypeSuffix(ctx, state2) {
19111
19573
  return (0, import_lib2.$EVENT)(ctx, state2, "ReturnTypeSuffix", ReturnTypeSuffix$0);
19112
19574
  }
19113
- 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) {
19575
+ 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) {
19114
19576
  var asserts = $1;
19115
19577
  var t = $3;
19116
19578
  if (!t) return $skip;
@@ -19203,8 +19665,8 @@ var TypeUnarySuffix$$ = [TypeUnarySuffix$0, TypeUnarySuffix$1, TypeUnarySuffix$2
19203
19665
  function TypeUnarySuffix(ctx, state2) {
19204
19666
  return (0, import_lib2.$EVENT_C)(ctx, state2, "TypeUnarySuffix", TypeUnarySuffix$$);
19205
19667
  }
19206
- var TypeUnaryOp$0 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L241, 'TypeUnaryOp "keyof"'), NonIdContinue);
19207
- var TypeUnaryOp$1 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L202, 'TypeUnaryOp "readonly"'), NonIdContinue);
19668
+ var TypeUnaryOp$0 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L243, 'TypeUnaryOp "keyof"'), NonIdContinue);
19669
+ var TypeUnaryOp$1 = (0, import_lib2.$S)((0, import_lib2.$EXPECT)($L204, 'TypeUnaryOp "readonly"'), NonIdContinue);
19208
19670
  var TypeUnaryOp$$ = [TypeUnaryOp$0, TypeUnaryOp$1];
19209
19671
  function TypeUnaryOp(ctx, state2) {
19210
19672
  return (0, import_lib2.$EVENT_C)(ctx, state2, "TypeUnaryOp", TypeUnaryOp$$);
@@ -19234,7 +19696,7 @@ var TypeIndexedAccess$$ = [TypeIndexedAccess$0, TypeIndexedAccess$1, TypeIndexed
19234
19696
  function TypeIndexedAccess(ctx, state2) {
19235
19697
  return (0, import_lib2.$EVENT_C)(ctx, state2, "TypeIndexedAccess", TypeIndexedAccess$$);
19236
19698
  }
19237
- var UnknownAlias$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L242, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
19699
+ var UnknownAlias$0 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L244, 'UnknownAlias "???"'), function($skip, $loc, $0, $1) {
19238
19700
  return { $loc, token: "unknown" };
19239
19701
  });
19240
19702
  function UnknownAlias(ctx, state2) {
@@ -19611,13 +20073,13 @@ var TypeLiteral$2 = (0, import_lib2.$TS)((0, import_lib2.$S)((0, import_lib2.$EX
19611
20073
  if (sign[0] === "+") return num;
19612
20074
  return $0;
19613
20075
  });
19614
- 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) {
20076
+ 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) {
19615
20077
  return { type: "VoidType", $loc, token: $1 };
19616
20078
  });
19617
- 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) {
20079
+ 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) {
19618
20080
  return { type: "UniqueSymbolType", children: $0 };
19619
20081
  });
19620
- var TypeLiteral$5 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L245, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
20082
+ var TypeLiteral$5 = (0, import_lib2.$TV)((0, import_lib2.$EXPECT)($L247, 'TypeLiteral "[]"'), function($skip, $loc, $0, $1) {
19621
20083
  return { $loc, token: "[]" };
19622
20084
  });
19623
20085
  var TypeLiteral$$ = [TypeLiteral$0, TypeLiteral$1, TypeLiteral$2, TypeLiteral$3, TypeLiteral$4, TypeLiteral$5];
@@ -19636,7 +20098,7 @@ var InlineInterfacePropertyDelimiter$0 = (0, import_lib2.$C)((0, import_lib2.$S)
19636
20098
  var InlineInterfacePropertyDelimiter$1 = (0, import_lib2.$T)((0, import_lib2.$S)((0, import_lib2.$Y)((0, import_lib2.$S)(SameLineOrIndentedFurther, InlineBasicInterfaceProperty)), InsertComma), function(value) {
19637
20099
  return value[1];
19638
20100
  });
19639
- 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 "}"'))));
20101
+ 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 "}"'))));
19640
20102
  var InlineInterfacePropertyDelimiter$3 = (0, import_lib2.$Y)(EOS);
19641
20103
  var InlineInterfacePropertyDelimiter$$ = [InlineInterfacePropertyDelimiter$0, InlineInterfacePropertyDelimiter$1, InlineInterfacePropertyDelimiter$2, InlineInterfacePropertyDelimiter$3];
19642
20104
  function InlineInterfacePropertyDelimiter(ctx, state2) {
@@ -19876,7 +20338,7 @@ var CivetPrologue$$ = [CivetPrologue$0, CivetPrologue$1];
19876
20338
  function CivetPrologue(ctx, state2) {
19877
20339
  return (0, import_lib2.$EVENT_C)(ctx, state2, "CivetPrologue", CivetPrologue$$);
19878
20340
  }
19879
- 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) {
20341
+ 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) {
19880
20342
  var options = $3;
19881
20343
  return {
19882
20344
  type: "CivetPrologue",
@@ -20585,7 +21047,7 @@ __export(sourcemap_civet_exports, {
20585
21047
  locationTable: () => locationTable,
20586
21048
  lookupLineColumn: () => lookupLineColumn
20587
21049
  });
20588
- var locationTable = function(input) {
21050
+ function locationTable(input) {
20589
21051
  const linesRe = /([^\r\n]*)(\r\n|\r|\n|$)/y;
20590
21052
  const lines = [];
20591
21053
  let line = 0;
@@ -20600,96 +21062,108 @@ var locationTable = function(input) {
20600
21062
  }
20601
21063
  }
20602
21064
  return lines;
20603
- };
20604
- var lookupLineColumn = function(table, pos) {
21065
+ }
21066
+ function lookupLineColumn(table, pos) {
20605
21067
  let l = 0;
20606
21068
  let prevEnd = 0;
20607
21069
  while (table[l] <= pos) {
20608
21070
  prevEnd = table[l++];
20609
21071
  }
20610
21072
  return [l, pos - prevEnd];
20611
- };
20612
- var SourceMap = function(sourceString) {
20613
- const srcTable = locationTable(sourceString);
20614
- const sm = {
20615
- lines: [[]],
20616
- line: 0,
20617
- colOffset: 0,
20618
- // relative to previous entry
20619
- srcLine: 0,
20620
- srcColumn: 0,
20621
- srcOffset: 0,
20622
- srcTable
20623
- };
20624
- const EOL2 = /\r?\n|\r/;
20625
- return {
20626
- data: sm,
20627
- source: function() {
20628
- return sourceString;
20629
- },
20630
- renderMappings: function() {
20631
- let lastSourceLine = 0;
20632
- let lastSourceColumn = 0;
20633
- return sm.lines.map((line) => {
20634
- return line.map((entry) => {
20635
- if (entry.length === 4) {
20636
- let [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
20637
- const lineDelta = srcLine - lastSourceLine;
20638
- colDelta = srcCol - lastSourceColumn;
20639
- lastSourceLine = srcLine;
20640
- lastSourceColumn = srcCol;
20641
- return `${encodeVlq(entry[0])}${encodeVlq(sourceFileIndex)}${encodeVlq(lineDelta)}${encodeVlq(colDelta)}`;
20642
- } else {
20643
- return encodeVlq(entry[0]);
21073
+ }
21074
+ var EOL2 = /\r?\n|\r/;
21075
+ var SourceMap = class {
21076
+ lines;
21077
+ line;
21078
+ colOffset;
21079
+ // relative to previous entry
21080
+ srcLine;
21081
+ srcColumn;
21082
+ srcOffset;
21083
+ srcTable;
21084
+ source;
21085
+ constructor(source1) {
21086
+ this.source = source1;
21087
+ this.lines = [[]];
21088
+ this.line = 0;
21089
+ this.colOffset = 0;
21090
+ this.srcLine = 0;
21091
+ this.srcColumn = 0;
21092
+ this.srcOffset = 0;
21093
+ this.srcTable = locationTable(this.source);
21094
+ }
21095
+ renderMappings() {
21096
+ let lastSourceLine = 0;
21097
+ let lastSourceColumn = 0;
21098
+ return (() => {
21099
+ const results = [];
21100
+ for (let ref1 = this.lines, i1 = 0, len3 = ref1.length; i1 < len3; i1++) {
21101
+ const line = ref1[i1];
21102
+ results.push((() => {
21103
+ const results1 = [];
21104
+ for (let i2 = 0, len1 = line.length; i2 < len1; i2++) {
21105
+ const entry = line[i2];
21106
+ if (entry.length === 4) {
21107
+ let [colDelta, sourceFileIndex, srcLine, srcCol] = entry;
21108
+ const lineDelta = srcLine - lastSourceLine;
21109
+ colDelta = srcCol - lastSourceColumn;
21110
+ lastSourceLine = srcLine;
21111
+ lastSourceColumn = srcCol;
21112
+ results1.push(`${encodeVlq(entry[0])}${encodeVlq(sourceFileIndex)}${encodeVlq(lineDelta)}${encodeVlq(colDelta)}`);
21113
+ } else {
21114
+ results1.push(encodeVlq(entry[0]));
21115
+ }
20644
21116
  }
20645
- }).join(",");
20646
- }).join(";");
20647
- },
20648
- json: function(srcFileName, outFileName) {
20649
- return {
20650
- version: 3,
20651
- file: outFileName,
20652
- sources: [srcFileName],
20653
- mappings: this.renderMappings(),
20654
- names: [],
20655
- sourcesContent: [sourceString],
20656
- toString: function() {
20657
- return JSON.stringify(this);
20658
- }
20659
- };
20660
- },
20661
- updateSourceMap: function(outputStr, inputPos, colOffset = 0) {
20662
- const outLines = outputStr.split(EOL2);
20663
- let srcLine, srcCol;
21117
+ return results1;
21118
+ })().join(","));
21119
+ }
21120
+ return results;
21121
+ })().join(";");
21122
+ }
21123
+ json(srcFileName, outFileName) {
21124
+ return {
21125
+ version: 3,
21126
+ file: outFileName,
21127
+ sources: [srcFileName],
21128
+ mappings: this.renderMappings(),
21129
+ names: [],
21130
+ sourcesContent: [this.source],
21131
+ toString: function() {
21132
+ return JSON.stringify(this);
21133
+ }
21134
+ };
21135
+ }
21136
+ updateSourceMap(outputStr, inputPos, colOffset = 0) {
21137
+ const outLines = outputStr.split(EOL2);
21138
+ let srcLine, srcCol;
21139
+ if (inputPos != null) {
21140
+ [srcLine, srcCol] = lookupLineColumn(this.srcTable, inputPos);
21141
+ srcCol += colOffset;
21142
+ this.srcLine = srcLine;
21143
+ this.srcColumn = srcCol;
21144
+ this.srcOffset = inputPos + outputStr.length;
21145
+ }
21146
+ for (let i3 = 0, len22 = outLines.length; i3 < len22; i3++) {
21147
+ const i = i3;
21148
+ const line = outLines[i3];
21149
+ if (i > 0) {
21150
+ this.line++;
21151
+ this.srcLine++;
21152
+ this.colOffset = 0;
21153
+ this.lines[this.line] = [];
21154
+ this.srcColumn = srcCol = colOffset;
21155
+ }
21156
+ const l = this.colOffset;
21157
+ this.colOffset = line.length;
21158
+ this.srcColumn += line.length;
20664
21159
  if (inputPos != null) {
20665
- [srcLine, srcCol] = lookupLineColumn(srcTable, inputPos);
20666
- srcCol += colOffset;
20667
- sm.srcLine = srcLine;
20668
- sm.srcColumn = srcCol;
20669
- sm.srcOffset = inputPos + outputStr.length;
20670
- }
20671
- for (let i1 = 0, len3 = outLines.length; i1 < len3; i1++) {
20672
- const i = i1;
20673
- const line = outLines[i1];
20674
- if (i > 0) {
20675
- sm.line++;
20676
- sm.srcLine++;
20677
- sm.colOffset = 0;
20678
- sm.lines[sm.line] = [];
20679
- sm.srcColumn = srcCol = colOffset;
20680
- }
20681
- const l = sm.colOffset;
20682
- sm.colOffset = line.length;
20683
- sm.srcColumn += line.length;
20684
- if (inputPos != null) {
20685
- sm.lines[sm.line].push([l, 0, srcLine + i, srcCol]);
20686
- } else if (l != 0) {
20687
- sm.lines[sm.line].push([l]);
20688
- }
21160
+ this.lines[this.line].push([l, 0, srcLine + i, srcCol]);
21161
+ } else if (l != 0) {
21162
+ this.lines[this.line].push([l]);
20689
21163
  }
20690
- return;
20691
21164
  }
20692
- };
21165
+ return;
21166
+ }
20693
21167
  };
20694
21168
  var smRegexp = /\n\/\/# sourceMappingURL=data:application\/json;charset=utf-8;base64,([+a-zA-Z0-9\/]*=?=?)$/;
20695
21169
  var remap = function(codeWithSourceMap, upstreamMap, sourcePath, targetPath) {
@@ -20700,8 +21174,8 @@ var remap = function(codeWithSourceMap, upstreamMap, sourcePath, targetPath) {
20700
21174
  });
20701
21175
  if (sourceMapText) {
20702
21176
  const parsed = parseWithLines(sourceMapText);
20703
- const composedLines = composeLines(upstreamMap.data.lines, parsed.lines);
20704
- upstreamMap.data.lines = composedLines;
21177
+ const composedLines = composeLines(upstreamMap.lines, parsed.lines);
21178
+ upstreamMap.lines = composedLines;
20705
21179
  }
20706
21180
  const remappedSourceMapJSON = upstreamMap.json(sourcePath, targetPath);
20707
21181
  const newSourceMap = `${"sourceMapping"}URL=data:application/json;charset=utf-8;base64,${base64Encode(JSON.stringify(remappedSourceMapJSON))}`;
@@ -20763,10 +21237,10 @@ var VLQ_CONTINUATION_BIT = 1 << VLQ_SHIFT;
20763
21237
  var VLQ_VALUE_MASK = VLQ_CONTINUATION_BIT - 1;
20764
21238
  var encodeVlq = function(value) {
20765
21239
  let answer = "";
20766
- let ref1;
20767
- if (value < 0) ref1 = 1;
20768
- else ref1 = 0;
20769
- const signBit = ref1;
21240
+ let ref2;
21241
+ if (value < 0) ref2 = 1;
21242
+ else ref2 = 0;
21243
+ const signBit = ref2;
20770
21244
  let valueToEncode = (Math.abs(value) << 1) + signBit;
20771
21245
  while (valueToEncode || !answer) {
20772
21246
  let nextChunk = valueToEncode & VLQ_VALUE_MASK;
@@ -20938,8 +21412,8 @@ var WorkerPool = class {
20938
21412
  async run(op, ...args) {
20939
21413
  const id = this.jobId++;
20940
21414
  return await new Promise(async (resolve2, reject) => {
20941
- this.callbacks.set(id, { resolve: resolve2, reject });
20942
21415
  const job = { id, op, args };
21416
+ this.callbacks.set(id, { job, resolve: resolve2, reject });
20943
21417
  if (this.idle.length) {
20944
21418
  const worker = this.idle.shift();
20945
21419
  worker.ref();
@@ -20960,8 +21434,32 @@ var WorkerPool = class {
20960
21434
  const callback = this.callbacks.get(response.id);
20961
21435
  this.callbacks.delete(response.id);
20962
21436
  if (response.error) {
20963
- callback.reject(response.error);
21437
+ const message = `${response.error.name}: ${response.error.message}`;
21438
+ let ref;
21439
+ if (response.error.type in globalThis) {
21440
+ ref = new globalThis[response.error.type](message);
21441
+ } else {
21442
+ ref = new Error(message);
21443
+ }
21444
+ ;
21445
+ const error = ref;
21446
+ try {
21447
+ error.name = response.error.name;
21448
+ } catch (e) {
21449
+ }
21450
+ callback.reject(error);
20964
21451
  } else {
21452
+ let ref1;
21453
+ if (ref1 = response.result?.sourceMap) {
21454
+ const sourceMap = ref1;
21455
+ response.result.sourceMap = new SourceMap(sourceMap.source);
21456
+ Object.assign(response.result.sourceMap, sourceMap);
21457
+ }
21458
+ let ref2;
21459
+ if (ref2 = callback.job.args[1]?.errors) {
21460
+ const errors = ref2;
21461
+ errors.splice(0, 1 / 0, ...response.errors);
21462
+ }
20965
21463
  callback.resolve(response.result);
20966
21464
  }
20967
21465
  if (this.spawned > this.threads) {
@@ -21145,7 +21643,7 @@ ${counts}`;
21145
21643
  return;
21146
21644
  }
21147
21645
  if (options.sourceMap || options.inlineMap) {
21148
- options.sourceMap = SourceMap2(src);
21646
+ options.sourceMap = new SourceMap2(src);
21149
21647
  const code = generate_civet_default(ast2, options);
21150
21648
  checkErrors();
21151
21649
  if (options.inlineMap) {
@@ -21160,7 +21658,7 @@ ${counts}`;
21160
21658
  const result = generate_civet_default(ast2, options);
21161
21659
  if (options.errors?.length) {
21162
21660
  delete options.errors;
21163
- options.sourceMap = SourceMap2(src);
21661
+ options.sourceMap = new SourceMap2(src);
21164
21662
  generate_civet_default(ast2, options);
21165
21663
  checkErrors();
21166
21664
  }