@danielx/civet 0.6.48 → 0.6.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -506,6 +506,7 @@ ${input.slice(result.pos)}
506
506
  }
507
507
  return;
508
508
  }
509
+ node = node;
509
510
  node.parent = parent;
510
511
  if (node.children) {
511
512
  for (const child of node.children) {
@@ -524,6 +525,7 @@ ${input.slice(result.pos)}
524
525
  }
525
526
  return;
526
527
  }
528
+ node = node;
527
529
  if (parent != null)
528
530
  node.parent = parent;
529
531
  if (depth && node.children) {
@@ -532,20 +534,24 @@ ${input.slice(result.pos)}
532
534
  }
533
535
  }
534
536
  }
537
+ function makeNode(node) {
538
+ updateParentPointers(node);
539
+ return node;
540
+ }
535
541
  function addPostfixStatement(statement, ws, post) {
536
542
  const expressions = [
537
543
  ...post.blockPrefix || [],
538
544
  ["", statement]
539
545
  ];
540
- const block = {
546
+ const block = makeNode({
541
547
  type: "BlockStatement",
542
548
  children: [" { ", expressions, " }"],
543
549
  expressions
544
- };
550
+ });
545
551
  const children = [...post.children, block];
546
552
  if (!isWhitespaceOrEmpty(ws))
547
553
  children.push(ws);
548
- post = { ...post, children, block };
554
+ post = makeNode({ ...post, children, block });
549
555
  if (post.type === "IfStatement") {
550
556
  post.then = block;
551
557
  }
@@ -659,6 +665,7 @@ ${input.slice(result.pos)}
659
665
  });
660
666
  }
661
667
  const expressions = [...prefixStatements, ...block.expressions];
668
+ addParentPointers(prefixStatements, block);
662
669
  block = {
663
670
  ...block,
664
671
  expressions,
@@ -668,6 +675,7 @@ ${input.slice(result.pos)}
668
675
  block.children = [[" {"], ...block.children, "}"];
669
676
  block.bare = false;
670
677
  }
678
+ updateParentPointers(block);
671
679
  }
672
680
  return block;
673
681
  }
@@ -685,10 +693,11 @@ ${input.slice(result.pos)}
685
693
  const { ref, body } = expr;
686
694
  ref.type = "PipedExpression";
687
695
  ref.children = [makeLeftHandSideExpression(arg)];
688
- return {
696
+ updateParentPointers(ref);
697
+ return makeNode({
689
698
  type: "UnwrappedExpression",
690
699
  children: [skipIfOnlyWS(fn.leadingComment), body, skipIfOnlyWS(fn.trailingComment)]
691
- };
700
+ });
692
701
  }
693
702
  expr = fn.expr;
694
703
  const lhs = makeLeftHandSideExpression(expr);
@@ -902,6 +911,7 @@ ${input.slice(result.pos)}
902
911
  if (subtype === "DoStatement") {
903
912
  insertReturn(block);
904
913
  children.splice(i, 1, ...wrapIIFE(["", statement, void 0], async));
914
+ updateParentPointers(exp);
905
915
  return;
906
916
  }
907
917
  const resultsRef = makeRef("results");
@@ -916,6 +926,7 @@ ${input.slice(result.pos)}
916
926
  ["", wrapWithReturn(resultsRef)]
917
927
  ], async)
918
928
  );
929
+ updateParentPointers(exp);
919
930
  }
920
931
  function processBinaryOpExpression($0) {
921
932
  const expandedOps = expandChainedComparisons($0);
@@ -1209,10 +1220,10 @@ ${input.slice(result.pos)}
1209
1220
  }
1210
1221
  function wrapWithReturn(expression) {
1211
1222
  const children = expression ? ["return ", expression] : ["return"];
1212
- return {
1223
+ return makeNode({
1213
1224
  type: "ReturnStatement",
1214
1225
  children
1215
- };
1226
+ });
1216
1227
  }
1217
1228
  function isExistence(exp) {
1218
1229
  if (exp.type === "ParenthesizedExpression" && exp.implicit) {
@@ -1507,6 +1518,7 @@ ${input.slice(result.pos)}
1507
1518
  const indent = expressions[index][0];
1508
1519
  expressions.splice(index, 0, [indent, dec, ";"]);
1509
1520
  }
1521
+ addParentPointers(dec, block);
1510
1522
  }
1511
1523
  function patternAsValue(pattern) {
1512
1524
  switch (pattern.type) {
@@ -1585,7 +1597,8 @@ ${input.slice(result.pos)}
1585
1597
  case "Declaration":
1586
1598
  exp.children.push(["", {
1587
1599
  type: "ReturnStatement",
1588
- children: [";return ", patternAsValue(exp.bindings.at(-1).pattern)]
1600
+ children: [";return ", patternAsValue(exp.bindings.at(-1).pattern)],
1601
+ parent: exp
1589
1602
  }]);
1590
1603
  return;
1591
1604
  case "FunctionExpression":
@@ -1594,7 +1607,8 @@ ${input.slice(result.pos)}
1594
1607
  "",
1595
1608
  {
1596
1609
  type: "ReturnStatement",
1597
- children: [";return ", exp.id]
1610
+ children: [";return ", exp.id],
1611
+ parent: exp
1598
1612
  }
1599
1613
  ]);
1600
1614
  return;
@@ -1616,7 +1630,8 @@ ${input.slice(result.pos)}
1616
1630
  exp.children.push(["", {
1617
1631
  type: "ReturnStatement",
1618
1632
  // NOTE: add a prefixed semi-colon because the if block may not be braced
1619
- children: [";return"]
1633
+ children: [";return"],
1634
+ parent: exp
1620
1635
  }]);
1621
1636
  return;
1622
1637
  case "PatternMatchingStatement":
@@ -2036,13 +2051,26 @@ ${input.slice(result.pos)}
2036
2051
  case "ThrowExpression":
2037
2052
  case "TryExpression":
2038
2053
  return expression;
2039
- default:
2040
- return {
2041
- type: "ParenthesizedExpression",
2042
- children: ["(", expression, ")"],
2043
- expression,
2044
- implicit: true
2045
- };
2054
+ }
2055
+ return makeNode({
2056
+ type: "ParenthesizedExpression",
2057
+ children: ["(", expression, ")"],
2058
+ expression,
2059
+ implicit: true
2060
+ });
2061
+ }
2062
+ function makeExpressionStatement(expression) {
2063
+ if (Array.isArray(expression) && expression[1]?.[0]?.[0]?.[1]?.token === ",") {
2064
+ return [
2065
+ makeExpressionStatement(expression[0]),
2066
+ expression[1].map(([comma, exp]) => {
2067
+ return [comma, makeExpressionStatement(exp)];
2068
+ })
2069
+ ];
2070
+ } else if (expression?.type === "ObjectExpression" || expression?.type === "FunctionExpression" && !expression.id) {
2071
+ return makeLeftHandSideExpression(expression);
2072
+ } else {
2073
+ return expression;
2046
2074
  }
2047
2075
  }
2048
2076
  function modifyString(str) {
@@ -2250,7 +2278,7 @@ ${input.slice(result.pos)}
2250
2278
  splices = splices.map((s) => [", ", s]);
2251
2279
  thisAssignments = thisAssignments.map((a) => ["", a, ";"]);
2252
2280
  const initializer = [ws, assign, e];
2253
- const binding = {
2281
+ const binding = makeNode({
2254
2282
  type: "Binding",
2255
2283
  pattern: id,
2256
2284
  initializer,
@@ -2258,9 +2286,9 @@ ${input.slice(result.pos)}
2258
2286
  suffix,
2259
2287
  thisAssignments,
2260
2288
  children: [id, suffix, initializer]
2261
- };
2289
+ });
2262
2290
  const children = [decl, binding];
2263
- return {
2291
+ return makeNode({
2264
2292
  type: "Declaration",
2265
2293
  names: id.names,
2266
2294
  decl,
@@ -2268,9 +2296,9 @@ ${input.slice(result.pos)}
2268
2296
  splices,
2269
2297
  thisAssignments,
2270
2298
  children
2271
- };
2299
+ });
2272
2300
  }
2273
- function processDeclarationCondition(condition, rootCondition) {
2301
+ function processDeclarationCondition(condition, rootCondition, parent) {
2274
2302
  if (!(condition.type === "DeclarationCondition")) {
2275
2303
  return;
2276
2304
  }
@@ -2289,6 +2317,7 @@ ${input.slice(result.pos)}
2289
2317
  pattern,
2290
2318
  ref
2291
2319
  });
2320
+ addParentPointers(condition, parent);
2292
2321
  Object.assign(rootCondition, {
2293
2322
  blockPrefix: [
2294
2323
  ["", [decl, pattern, suffix, " = ", ref, ...splices], ";"],
@@ -2312,7 +2341,7 @@ ${input.slice(result.pos)}
2312
2341
  const type = [type1, type2];
2313
2342
  expression = expression2;
2314
2343
  }
2315
- processDeclarationCondition(expression, condition.expression);
2344
+ processDeclarationCondition(expression, condition.expression, s);
2316
2345
  const { ref, pattern } = expression;
2317
2346
  if (pattern) {
2318
2347
  let conditions = [];
@@ -2362,10 +2391,12 @@ ${input.slice(result.pos)}
2362
2391
  parent: s
2363
2392
  };
2364
2393
  s.children[1] = s.condition;
2394
+ updateParentPointers(s);
2365
2395
  const block = blockWithPrefix([["", [{
2366
2396
  type: "Declaration",
2367
2397
  children: ["let ", ...condition.expression.children]
2368
2398
  }], ";"], ...blockPrefix], makeEmptyBlock());
2399
+ updateParentPointers(block, s.parent);
2369
2400
  replaceBlockExpression(s.parent, s, block);
2370
2401
  block.expressions.push(["", s]);
2371
2402
  s.parent = block;
@@ -3598,12 +3629,12 @@ ${input.slice(result.pos)}
3598
3629
  children: ["await "]
3599
3630
  };
3600
3631
  }
3601
- const block = {
3632
+ const block = makeNode({
3602
3633
  type: "BlockStatement",
3603
3634
  expressions,
3604
3635
  children: ["{", expressions, "}"],
3605
3636
  bare: false
3606
- };
3637
+ });
3607
3638
  const parameters = {
3608
3639
  type: "Parameters",
3609
3640
  children: ["()"],
@@ -3615,7 +3646,7 @@ ${input.slice(result.pos)}
3615
3646
  },
3616
3647
  returnType: void 0
3617
3648
  };
3618
- const fn = {
3649
+ const fn = makeNode({
3619
3650
  type: "ArrowFunction",
3620
3651
  signature,
3621
3652
  parameters,
@@ -3624,12 +3655,11 @@ ${input.slice(result.pos)}
3624
3655
  async,
3625
3656
  block,
3626
3657
  children: [async, parameters, "=>", block]
3627
- };
3628
- updateParentPointers(block, fn);
3629
- const exp = {
3658
+ });
3659
+ const exp = makeNode({
3630
3660
  type: "CallExpression",
3631
3661
  children: [makeLeftHandSideExpression(fn), "()"]
3632
- };
3662
+ });
3633
3663
  if (prefix) {
3634
3664
  return [makeLeftHandSideExpression([prefix, exp])];
3635
3665
  }
@@ -3676,6 +3706,7 @@ ${input.slice(result.pos)}
3676
3706
  literalValue,
3677
3707
  makeAsConst,
3678
3708
  makeEmptyBlock,
3709
+ makeExpressionStatement,
3679
3710
  makeGetterMethod,
3680
3711
  makeLeftHandSideExpression,
3681
3712
  makeRef,
@@ -3740,6 +3771,7 @@ ${input.slice(result.pos)}
3740
3771
  NestedTopLevelStatements,
3741
3772
  TopLevelSingleLineStatements,
3742
3773
  TopLevelStatement,
3774
+ ExtendedCommaExpression,
3743
3775
  ExtendedExpression,
3744
3776
  SingleLineExtendedExpression,
3745
3777
  NonPipelineExtendedExpression,
@@ -3748,7 +3780,7 @@ ${input.slice(result.pos)}
3748
3780
  ExpressionizedStatementWithTrailingCallExpressions,
3749
3781
  ExpressionizedStatement,
3750
3782
  _ExpressionizedStatement,
3751
- Expression,
3783
+ CommaExpression,
3752
3784
  Arguments,
3753
3785
  ImplicitArguments,
3754
3786
  ExplicitArguments,
@@ -3893,15 +3925,18 @@ ${input.slice(result.pos)}
3893
3925
  BareBlock,
3894
3926
  ThenClause,
3895
3927
  BracedOrEmptyBlock,
3928
+ NoCommaBracedOrEmptyBlock,
3896
3929
  NoPostfixBracedOrEmptyBlock,
3897
3930
  EmptyBlock,
3898
3931
  EmptyBareBlock,
3899
3932
  BracedBlock,
3900
3933
  NoPostfixBracedBlock,
3934
+ NoCommaBracedBlock,
3901
3935
  NonSingleBracedBlock,
3902
3936
  DeclarationOrStatement,
3903
3937
  SingleLineStatements,
3904
3938
  PostfixedSingleLineStatements,
3939
+ PostfixedSingleLineNoCommaStatements,
3905
3940
  BracedContent,
3906
3941
  NestedBlockStatements,
3907
3942
  NestedBlockStatement,
@@ -3969,11 +4004,15 @@ ${input.slice(result.pos)}
3969
4004
  ModuleItem,
3970
4005
  StatementListItem,
3971
4006
  PostfixedStatement,
4007
+ NoCommaStatementListItem,
4008
+ PostfixedNoCommaStatement,
3972
4009
  PostfixedExpression,
4010
+ PostfixedCommaExpression,
3973
4011
  NonPipelinePostfixedExpression,
3974
4012
  PostfixStatement,
3975
4013
  _PostfixStatement,
3976
4014
  Statement,
4015
+ NoCommaStatement,
3977
4016
  EmptyStatement,
3978
4017
  BlockStatement,
3979
4018
  LabelledStatement,
@@ -4057,6 +4096,7 @@ ${input.slice(result.pos)}
4057
4096
  NewlineBinaryOpAllowed,
4058
4097
  AllowAll,
4059
4098
  RestoreAll,
4099
+ CommaExpressionStatement,
4060
4100
  ExpressionStatement,
4061
4101
  KeywordStatement,
4062
4102
  DebuggerStatement,
@@ -4793,6 +4833,12 @@ ${input.slice(result.pos)}
4793
4833
  function TopLevelStatement(ctx, state) {
4794
4834
  return $EVENT(ctx, state, "TopLevelStatement", TopLevelStatement$0);
4795
4835
  }
4836
+ var ExtendedCommaExpression$0 = NonAssignmentExtendedExpression;
4837
+ var ExtendedCommaExpression$1 = CommaExpression;
4838
+ var ExtendedCommaExpression$$ = [ExtendedCommaExpression$0, ExtendedCommaExpression$1];
4839
+ function ExtendedCommaExpression(ctx, state) {
4840
+ return $EVENT_C(ctx, state, "ExtendedCommaExpression", ExtendedCommaExpression$$);
4841
+ }
4796
4842
  var ExtendedExpression$0 = NonAssignmentExtendedExpression;
4797
4843
  var ExtendedExpression$1 = AssignmentExpression;
4798
4844
  var ExtendedExpression$$ = [ExtendedExpression$0, ExtendedExpression$1];
@@ -4871,13 +4917,13 @@ ${input.slice(result.pos)}
4871
4917
  function _ExpressionizedStatement(ctx, state) {
4872
4918
  return $EVENT_C(ctx, state, "_ExpressionizedStatement", _ExpressionizedStatement$$);
4873
4919
  }
4874
- var Expression$0 = $TS($S(AssignmentExpression, $Q($S(CommaDelimiter, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
4920
+ var CommaExpression$0 = $TS($S(AssignmentExpression, $Q($S(CommaDelimiter, AssignmentExpression))), function($skip, $loc, $0, $1, $2) {
4875
4921
  if ($2.length == 0)
4876
4922
  return $1;
4877
4923
  return $0;
4878
4924
  });
4879
- function Expression(ctx, state) {
4880
- return $EVENT(ctx, state, "Expression", Expression$0);
4925
+ function CommaExpression(ctx, state) {
4926
+ return $EVENT(ctx, state, "CommaExpression", CommaExpression$0);
4881
4927
  }
4882
4928
  var Arguments$0 = ExplicitArguments;
4883
4929
  var Arguments$1 = $TS($S(ForbidTrailingMemberProperty, $E(ImplicitArguments), RestoreTrailingMemberProperty), function($skip, $loc, $0, $1, $2, $3) {
@@ -5286,7 +5332,7 @@ ${input.slice(result.pos)}
5286
5332
  var exp = value[1];
5287
5333
  return exp;
5288
5334
  });
5289
- var FatArrowBody$1 = BracedOrEmptyBlock;
5335
+ var FatArrowBody$1 = NoCommaBracedOrEmptyBlock;
5290
5336
  var FatArrowBody$$ = [FatArrowBody$0, FatArrowBody$1];
5291
5337
  function FatArrowBody(ctx, state) {
5292
5338
  return $EVENT_C(ctx, state, "FatArrowBody", FatArrowBody$$);
@@ -5398,7 +5444,7 @@ ${input.slice(result.pos)}
5398
5444
  function PrimaryExpression(ctx, state) {
5399
5445
  return $EVENT_C(ctx, state, "PrimaryExpression", PrimaryExpression$$);
5400
5446
  }
5401
- var ParenthesizedExpression$0 = $TS($S(OpenParen, AllowAll, $E($S(PostfixedExpression, __, CloseParen)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
5447
+ var ParenthesizedExpression$0 = $TS($S(OpenParen, AllowAll, $E($S(PostfixedCommaExpression, __, CloseParen)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4) {
5402
5448
  var open = $1;
5403
5449
  if (!$3)
5404
5450
  return $skip;
@@ -6792,7 +6838,7 @@ ${input.slice(result.pos)}
6792
6838
  function AmpersandUnaryPrefix(ctx, state) {
6793
6839
  return $EVENT(ctx, state, "AmpersandUnaryPrefix", AmpersandUnaryPrefix$0);
6794
6840
  }
6795
- var ThinArrowFunction$0 = $TS($S($E($S(Async, _)), ArrowParameters, $E(ReturnTypeSuffix), $E(_), Arrow, BracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
6841
+ var ThinArrowFunction$0 = $TS($S($E($S(Async, _)), ArrowParameters, $E(ReturnTypeSuffix), $E(_), Arrow, NoCommaBracedOrEmptyBlock), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6) {
6796
6842
  var async = $1;
6797
6843
  var parameters = $2;
6798
6844
  var suffix = $3;
@@ -6934,6 +6980,12 @@ ${input.slice(result.pos)}
6934
6980
  function BracedOrEmptyBlock(ctx, state) {
6935
6981
  return $EVENT_C(ctx, state, "BracedOrEmptyBlock", BracedOrEmptyBlock$$);
6936
6982
  }
6983
+ var NoCommaBracedOrEmptyBlock$0 = NoCommaBracedBlock;
6984
+ var NoCommaBracedOrEmptyBlock$1 = EmptyBlock;
6985
+ var NoCommaBracedOrEmptyBlock$$ = [NoCommaBracedOrEmptyBlock$0, NoCommaBracedOrEmptyBlock$1];
6986
+ function NoCommaBracedOrEmptyBlock(ctx, state) {
6987
+ return $EVENT_C(ctx, state, "NoCommaBracedOrEmptyBlock", NoCommaBracedOrEmptyBlock$$);
6988
+ }
6937
6989
  var NoPostfixBracedOrEmptyBlock$0 = NoPostfixBracedBlock;
6938
6990
  var NoPostfixBracedOrEmptyBlock$1 = EmptyBlock;
6939
6991
  var NoPostfixBracedOrEmptyBlock$$ = [NoPostfixBracedOrEmptyBlock$0, NoPostfixBracedOrEmptyBlock$1];
@@ -7003,6 +7055,25 @@ ${input.slice(result.pos)}
7003
7055
  function NoPostfixBracedBlock(ctx, state) {
7004
7056
  return $EVENT_C(ctx, state, "NoPostfixBracedBlock", NoPostfixBracedBlock$$);
7005
7057
  }
7058
+ var NoCommaBracedBlock$0 = NonSingleBracedBlock;
7059
+ var NoCommaBracedBlock$1 = $TS($S(InsertOpenBrace, $N(EOS), PostfixedSingleLineNoCommaStatements, InsertSpace, InsertCloseBrace), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
7060
+ var o = $1;
7061
+ var s = $3;
7062
+ var ws = $4;
7063
+ var c = $5;
7064
+ if (!s.children.length)
7065
+ return $skip;
7066
+ return {
7067
+ type: "BlockStatement",
7068
+ expressions: s.expressions,
7069
+ // Remove !EOS assertion
7070
+ children: [o, s.children, ws, c]
7071
+ };
7072
+ });
7073
+ var NoCommaBracedBlock$$ = [NoCommaBracedBlock$0, NoCommaBracedBlock$1];
7074
+ function NoCommaBracedBlock(ctx, state) {
7075
+ return $EVENT_C(ctx, state, "NoCommaBracedBlock", NoCommaBracedBlock$$);
7076
+ }
7006
7077
  var NonSingleBracedBlock$0 = $TS($S($E(_), OpenBrace, AllowAll, $E($S(BracedContent, __, CloseBrace)), RestoreAll), function($skip, $loc, $0, $1, $2, $3, $4, $5) {
7007
7078
  var ws1 = $1;
7008
7079
  var open = $2;
@@ -7070,6 +7141,22 @@ ${input.slice(result.pos)}
7070
7141
  function PostfixedSingleLineStatements(ctx, state) {
7071
7142
  return $EVENT(ctx, state, "PostfixedSingleLineStatements", PostfixedSingleLineStatements$0);
7072
7143
  }
7144
+ var PostfixedSingleLineNoCommaStatements$0 = $TS($S($Q($S($S($E(_), $N(EOS)), NoCommaStatementListItem, SemicolonDelimiter)), $E($S($S($E(_), $N(EOS)), NoCommaStatementListItem, $E(SemicolonDelimiter)))), function($skip, $loc, $0, $1, $2) {
7145
+ var stmts = $1;
7146
+ var last = $2;
7147
+ const children = [...stmts];
7148
+ if (last)
7149
+ children.push(last);
7150
+ return {
7151
+ type: "BlockStatement",
7152
+ expressions: children,
7153
+ children,
7154
+ bare: true
7155
+ };
7156
+ });
7157
+ function PostfixedSingleLineNoCommaStatements(ctx, state) {
7158
+ return $EVENT(ctx, state, "PostfixedSingleLineNoCommaStatements", PostfixedSingleLineNoCommaStatements$0);
7159
+ }
7073
7160
  var BracedContent$0 = NestedBlockStatements;
7074
7161
  var BracedContent$1 = SingleLineStatements;
7075
7162
  var BracedContent$2 = $TV($Y($S(__, $EXPECT($L25, 'BracedContent "}"'))), function($skip, $loc, $0, $1) {
@@ -8464,6 +8551,22 @@ ${input.slice(result.pos)}
8464
8551
  function PostfixedStatement(ctx, state) {
8465
8552
  return $EVENT(ctx, state, "PostfixedStatement", PostfixedStatement$0);
8466
8553
  }
8554
+ var NoCommaStatementListItem$0 = Declaration;
8555
+ var NoCommaStatementListItem$1 = PostfixedNoCommaStatement;
8556
+ var NoCommaStatementListItem$$ = [NoCommaStatementListItem$0, NoCommaStatementListItem$1];
8557
+ function NoCommaStatementListItem(ctx, state) {
8558
+ return $EVENT_C(ctx, state, "NoCommaStatementListItem", NoCommaStatementListItem$$);
8559
+ }
8560
+ var PostfixedNoCommaStatement$0 = $TS($S(NoCommaStatement, $E($S($E(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
8561
+ var statement = $1;
8562
+ var post = $2;
8563
+ if (post)
8564
+ return addPostfixStatement(statement, ...post);
8565
+ return statement;
8566
+ });
8567
+ function PostfixedNoCommaStatement(ctx, state) {
8568
+ return $EVENT(ctx, state, "PostfixedNoCommaStatement", PostfixedNoCommaStatement$0);
8569
+ }
8467
8570
  var PostfixedExpression$0 = $TS($S(ExtendedExpression, $E($S($E(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
8468
8571
  var expression = $1;
8469
8572
  var post = $2;
@@ -8474,6 +8577,19 @@ ${input.slice(result.pos)}
8474
8577
  function PostfixedExpression(ctx, state) {
8475
8578
  return $EVENT(ctx, state, "PostfixedExpression", PostfixedExpression$0);
8476
8579
  }
8580
+ var PostfixedCommaExpression$0 = $TS($S(PostfixedExpression, $C($S($E(_), PostfixStatement), $Q($S(CommaDelimiter, AssignmentExpression)))), function($skip, $loc, $0, $1, $2) {
8581
+ var expression = $1;
8582
+ var post = $2;
8583
+ if (!post.length)
8584
+ return $1;
8585
+ if (post.length === 2 && !Array.isArray(post[1])) {
8586
+ return attachPostfixStatementAsExpression(expression, post);
8587
+ }
8588
+ return $0;
8589
+ });
8590
+ function PostfixedCommaExpression(ctx, state) {
8591
+ return $EVENT(ctx, state, "PostfixedCommaExpression", PostfixedCommaExpression$0);
8592
+ }
8477
8593
  var NonPipelinePostfixedExpression$0 = $TS($S(NonPipelineExtendedExpression, $E($S($E(_), PostfixStatement))), function($skip, $loc, $0, $1, $2) {
8478
8594
  var expression = $1;
8479
8595
  var post = $2;
@@ -8507,17 +8623,26 @@ ${input.slice(result.pos)}
8507
8623
  var Statement$5 = TryStatement;
8508
8624
  var Statement$6 = EmptyStatement;
8509
8625
  var Statement$7 = LabelledStatement;
8510
- var Statement$8 = $TS($S(ExpressionStatement), function($skip, $loc, $0, $1) {
8511
- if ($1.type === "ObjectExpression" || $1.type === "FunctionExpression" && !$1.id) {
8512
- return makeLeftHandSideExpression($1);
8513
- }
8514
- return $1;
8515
- });
8626
+ var Statement$8 = CommaExpressionStatement;
8516
8627
  var Statement$9 = BlockStatement;
8517
8628
  var Statement$$ = [Statement$0, Statement$1, Statement$2, Statement$3, Statement$4, Statement$5, Statement$6, Statement$7, Statement$8, Statement$9];
8518
8629
  function Statement(ctx, state) {
8519
8630
  return $EVENT_C(ctx, state, "Statement", Statement$$);
8520
8631
  }
8632
+ var NoCommaStatement$0 = KeywordStatement;
8633
+ var NoCommaStatement$1 = VariableStatement;
8634
+ var NoCommaStatement$2 = IfStatement;
8635
+ var NoCommaStatement$3 = IterationStatement;
8636
+ var NoCommaStatement$4 = SwitchStatement;
8637
+ var NoCommaStatement$5 = TryStatement;
8638
+ var NoCommaStatement$6 = EmptyStatement;
8639
+ var NoCommaStatement$7 = LabelledStatement;
8640
+ var NoCommaStatement$8 = ExpressionStatement;
8641
+ var NoCommaStatement$9 = BlockStatement;
8642
+ var NoCommaStatement$$ = [NoCommaStatement$0, NoCommaStatement$1, NoCommaStatement$2, NoCommaStatement$3, NoCommaStatement$4, NoCommaStatement$5, NoCommaStatement$6, NoCommaStatement$7, NoCommaStatement$8, NoCommaStatement$9];
8643
+ function NoCommaStatement(ctx, state) {
8644
+ return $EVENT_C(ctx, state, "NoCommaStatement", NoCommaStatement$$);
8645
+ }
8521
8646
  var EmptyStatement$0 = $TS($S($E(_), $Y($EXPECT($L99, 'EmptyStatement ";"'))), function($skip, $loc, $0, $1, $2) {
8522
8647
  return { type: "EmptyStatement", children: $1 || [] };
8523
8648
  });
@@ -8996,14 +9121,14 @@ ${input.slice(result.pos)}
8996
9121
  function CoffeeForDeclaration(ctx, state) {
8997
9122
  return $EVENT(ctx, state, "CoffeeForDeclaration", CoffeeForDeclaration$0);
8998
9123
  }
8999
- var ForStatementParameters$0 = $TS($S(OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E(Expression), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
9124
+ var ForStatementParameters$0 = $TS($S(OpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(CommaExpression)), __, Semicolon, $E(CommaExpression), Semicolon, $E(CommaExpression), __, CloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
9000
9125
  var declaration = $3;
9001
9126
  return {
9002
9127
  declaration,
9003
9128
  children: $0
9004
9129
  };
9005
9130
  });
9006
- var ForStatementParameters$1 = $TS($S(InsertOpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(Expression)), __, Semicolon, $E(Expression), Semicolon, $E($S($N(EOS), ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9131
+ var ForStatementParameters$1 = $TS($S(InsertOpenParen, __, $C(LexicalDeclaration, VariableStatement, $E(CommaExpression)), __, Semicolon, $E(CommaExpression), Semicolon, $E($S($N(EOS), ExpressionWithIndentedApplicationForbidden)), InsertCloseParen), function($skip, $loc, $0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
9007
9132
  var declaration = $3;
9008
9133
  return {
9009
9134
  declaration,
@@ -9579,8 +9704,18 @@ ${input.slice(result.pos)}
9579
9704
  function RestoreAll(ctx, state) {
9580
9705
  return $EVENT(ctx, state, "RestoreAll", RestoreAll$0);
9581
9706
  }
9707
+ var CommaExpressionStatement$0 = IterationExpression;
9708
+ var CommaExpressionStatement$1 = $TS($S(CommaExpression), function($skip, $loc, $0, $1) {
9709
+ return makeExpressionStatement($1);
9710
+ });
9711
+ var CommaExpressionStatement$$ = [CommaExpressionStatement$0, CommaExpressionStatement$1];
9712
+ function CommaExpressionStatement(ctx, state) {
9713
+ return $EVENT_C(ctx, state, "CommaExpressionStatement", CommaExpressionStatement$$);
9714
+ }
9582
9715
  var ExpressionStatement$0 = IterationExpression;
9583
- var ExpressionStatement$1 = Expression;
9716
+ var ExpressionStatement$1 = $TS($S(AssignmentExpression), function($skip, $loc, $0, $1) {
9717
+ return makeExpressionStatement($1);
9718
+ });
9584
9719
  var ExpressionStatement$$ = [ExpressionStatement$0, ExpressionStatement$1];
9585
9720
  function ExpressionStatement(ctx, state) {
9586
9721
  return $EVENT_C(ctx, state, "ExpressionStatement", ExpressionStatement$$);
@@ -12214,7 +12349,7 @@ ${input.slice(result.pos)}
12214
12349
  args
12215
12350
  };
12216
12351
  });
12217
- var TypePrimary$8 = $S(__, OpenParen, $C(Type, $S(EOS, Type)), __, CloseParen);
12352
+ var TypePrimary$8 = $S($E(_), OpenParen, $C(Type, $S(EOS, Type)), __, CloseParen);
12218
12353
  var TypePrimary$$ = [TypePrimary$0, TypePrimary$1, TypePrimary$2, TypePrimary$3, TypePrimary$4, TypePrimary$5, TypePrimary$6, TypePrimary$7, TypePrimary$8];
12219
12354
  function TypePrimary(ctx, state) {
12220
12355
  return $EVENT_C(ctx, state, "TypePrimary", TypePrimary$$);
@@ -13103,6 +13238,7 @@ ${input.slice(result.pos)}
13103
13238
  exports.NestedTopLevelStatements = NestedTopLevelStatements;
13104
13239
  exports.TopLevelSingleLineStatements = TopLevelSingleLineStatements;
13105
13240
  exports.TopLevelStatement = TopLevelStatement;
13241
+ exports.ExtendedCommaExpression = ExtendedCommaExpression;
13106
13242
  exports.ExtendedExpression = ExtendedExpression;
13107
13243
  exports.SingleLineExtendedExpression = SingleLineExtendedExpression;
13108
13244
  exports.NonPipelineExtendedExpression = NonPipelineExtendedExpression;
@@ -13111,7 +13247,7 @@ ${input.slice(result.pos)}
13111
13247
  exports.ExpressionizedStatementWithTrailingCallExpressions = ExpressionizedStatementWithTrailingCallExpressions;
13112
13248
  exports.ExpressionizedStatement = ExpressionizedStatement;
13113
13249
  exports._ExpressionizedStatement = _ExpressionizedStatement;
13114
- exports.Expression = Expression;
13250
+ exports.CommaExpression = CommaExpression;
13115
13251
  exports.Arguments = Arguments;
13116
13252
  exports.ImplicitArguments = ImplicitArguments;
13117
13253
  exports.ExplicitArguments = ExplicitArguments;
@@ -13256,15 +13392,18 @@ ${input.slice(result.pos)}
13256
13392
  exports.BareBlock = BareBlock;
13257
13393
  exports.ThenClause = ThenClause;
13258
13394
  exports.BracedOrEmptyBlock = BracedOrEmptyBlock;
13395
+ exports.NoCommaBracedOrEmptyBlock = NoCommaBracedOrEmptyBlock;
13259
13396
  exports.NoPostfixBracedOrEmptyBlock = NoPostfixBracedOrEmptyBlock;
13260
13397
  exports.EmptyBlock = EmptyBlock;
13261
13398
  exports.EmptyBareBlock = EmptyBareBlock;
13262
13399
  exports.BracedBlock = BracedBlock;
13263
13400
  exports.NoPostfixBracedBlock = NoPostfixBracedBlock;
13401
+ exports.NoCommaBracedBlock = NoCommaBracedBlock;
13264
13402
  exports.NonSingleBracedBlock = NonSingleBracedBlock;
13265
13403
  exports.DeclarationOrStatement = DeclarationOrStatement;
13266
13404
  exports.SingleLineStatements = SingleLineStatements;
13267
13405
  exports.PostfixedSingleLineStatements = PostfixedSingleLineStatements;
13406
+ exports.PostfixedSingleLineNoCommaStatements = PostfixedSingleLineNoCommaStatements;
13268
13407
  exports.BracedContent = BracedContent;
13269
13408
  exports.NestedBlockStatements = NestedBlockStatements;
13270
13409
  exports.NestedBlockStatement = NestedBlockStatement;
@@ -13332,11 +13471,15 @@ ${input.slice(result.pos)}
13332
13471
  exports.ModuleItem = ModuleItem;
13333
13472
  exports.StatementListItem = StatementListItem;
13334
13473
  exports.PostfixedStatement = PostfixedStatement;
13474
+ exports.NoCommaStatementListItem = NoCommaStatementListItem;
13475
+ exports.PostfixedNoCommaStatement = PostfixedNoCommaStatement;
13335
13476
  exports.PostfixedExpression = PostfixedExpression;
13477
+ exports.PostfixedCommaExpression = PostfixedCommaExpression;
13336
13478
  exports.NonPipelinePostfixedExpression = NonPipelinePostfixedExpression;
13337
13479
  exports.PostfixStatement = PostfixStatement;
13338
13480
  exports._PostfixStatement = _PostfixStatement;
13339
13481
  exports.Statement = Statement;
13482
+ exports.NoCommaStatement = NoCommaStatement;
13340
13483
  exports.EmptyStatement = EmptyStatement;
13341
13484
  exports.BlockStatement = BlockStatement;
13342
13485
  exports.LabelledStatement = LabelledStatement;
@@ -13420,6 +13563,7 @@ ${input.slice(result.pos)}
13420
13563
  exports.NewlineBinaryOpAllowed = NewlineBinaryOpAllowed;
13421
13564
  exports.AllowAll = AllowAll;
13422
13565
  exports.RestoreAll = RestoreAll;
13566
+ exports.CommaExpressionStatement = CommaExpressionStatement;
13423
13567
  exports.ExpressionStatement = ExpressionStatement;
13424
13568
  exports.KeywordStatement = KeywordStatement;
13425
13569
  exports.DebuggerStatement = DebuggerStatement;
@@ -13809,6 +13953,7 @@ ${input.slice(result.pos)}
13809
13953
  lastAccessInCallExpression,
13810
13954
  literalValue,
13811
13955
  makeEmptyBlock,
13956
+ makeExpressionStatement,
13812
13957
  makeGetterMethod,
13813
13958
  makeLeftHandSideExpression,
13814
13959
  makeRef,