@mojir/lits 2.1.11 → 2.1.12

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.
@@ -12879,6 +12879,8 @@ var binaryOperators = [
12879
12879
  '|>', // pipe
12880
12880
  ];
12881
12881
  var otherOperators = [
12882
+ '?', // conditional operator
12883
+ ':', // conditional operator
12882
12884
  '->', // lambda
12883
12885
  '...', // rest
12884
12886
  '.', // property accessor
@@ -12888,17 +12890,12 @@ var otherOperators = [
12888
12890
  ];
12889
12891
  var symbolicOperators = __spreadArray(__spreadArray([], __read(binaryOperators), false), __read(otherOperators), false);
12890
12892
  var nonFunctionOperators = [
12891
- '??',
12892
- '&&',
12893
- '||',
12894
12893
  'comment',
12895
12894
  'cond',
12896
12895
  'def',
12897
12896
  'defined?',
12898
- // 'defn',
12899
12897
  'do',
12900
12898
  'doseq',
12901
- // 'fn',
12902
12899
  'if',
12903
12900
  'let',
12904
12901
  'loop',
@@ -13476,8 +13473,9 @@ function untokenize(tokenStream) {
13476
13473
  }, '');
13477
13474
  }
13478
13475
 
13479
- var exponentiationPrecedence = 11;
13480
- var binaryFunctionalOperatorPrecedence = 2;
13476
+ var exponentiationPrecedence = 12;
13477
+ var binaryFunctionalOperatorPrecedence = 3;
13478
+ var conditionalOperatorPrecedence = 1;
13481
13479
  var placeholderRegexp = /^\$([1-9]\d?)?$/;
13482
13480
  function withSourceCodeInfo(node, sourceCodeInfo) {
13483
13481
  if (sourceCodeInfo) {
@@ -13492,38 +13490,39 @@ function getPrecedence(operatorSign, sourceCodeInfo) {
13492
13490
  case '*': // multiplication
13493
13491
  case '/': // division
13494
13492
  case '%': // remainder
13495
- return 10;
13493
+ return 11;
13496
13494
  case '+': // addition
13497
13495
  case '-': // subtraction
13498
- return 9;
13496
+ return 10;
13499
13497
  case '<<': // left shift
13500
13498
  case '>>': // signed right shift
13501
13499
  case '>>>': // unsigned right shift
13502
- return 8;
13500
+ return 9;
13503
13501
  case '++': // string concatenation
13504
- return 7;
13502
+ return 8;
13505
13503
  case '<': // less than
13506
13504
  case '<=': // less than or equal
13507
13505
  case '≤': // less than or equal
13508
13506
  case '>': // greater than
13509
13507
  case '>=': // greater than or equal
13510
13508
  case '≥': // greater than or equal
13511
- return 6;
13509
+ return 7;
13512
13510
  case '=': // equal
13513
13511
  case '!=': // not equal
13514
13512
  case '≠': // not equal
13515
- return 5;
13513
+ return 6;
13516
13514
  case '&': // bitwise AND
13517
13515
  case 'xor': // bitwise XOR
13518
13516
  case '|': // bitwise OR
13519
- return 4;
13517
+ return 5;
13520
13518
  case '&&': // logical AND
13521
13519
  case '||': // logical OR
13522
13520
  case '??': // nullish coalescing
13523
- return 3;
13521
+ return 4;
13522
+ // leave room for binaryFunctionalOperatorPrecedence = 3
13524
13523
  case '|>': // pipe
13525
- return 1;
13526
- // leave room for binaryFunctionalOperatorPrecedence = 2
13524
+ return 2;
13525
+ // leave room for conditionalOperatorPrecedence = 1
13527
13526
  /* v8 ignore next 2 */
13528
13527
  default:
13529
13528
  throw new LitsError("Unknown binary operator: ".concat(operatorSign), sourceCodeInfo);
@@ -13571,13 +13570,15 @@ function fromBinaryOperatorToNode(operator, symbolNode, left, right, sourceCodeI
13571
13570
  case '||':
13572
13571
  case '??':
13573
13572
  return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]], sourceCodeInfo);
13574
- /* v8 ignore next 10 */
13573
+ /* v8 ignore next 11 */
13575
13574
  case '.':
13576
13575
  case ';':
13577
13576
  case ':=':
13578
13577
  case ',':
13579
13578
  case '->':
13580
13579
  case '...':
13580
+ case '?':
13581
+ case ':':
13581
13582
  throw new LitsError("Unknown binary operator: ".concat(operatorName), sourceCodeInfo);
13582
13583
  default:
13583
13584
  throw new LitsError("Unknown binary operator: ".concat(operatorName), sourceCodeInfo);
@@ -13693,6 +13694,19 @@ var Parser = /** @class */ (function () {
13693
13694
  }
13694
13695
  left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2]);
13695
13696
  }
13697
+ else if ((operator === null || operator === void 0 ? void 0 : operator[1]) === '?') {
13698
+ if (conditionalOperatorPrecedence <= precedence) {
13699
+ break;
13700
+ }
13701
+ this.advance();
13702
+ var trueNode = this.parseExpression();
13703
+ if (!isOperatorToken(this.peek(), ':')) {
13704
+ throw new LitsError('Expected :', this.peekSourceCodeInfo());
13705
+ }
13706
+ this.advance();
13707
+ var falseNode = this.parseExpression();
13708
+ left = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [left, trueNode, falseNode]]], left[2]);
13709
+ }
13696
13710
  else {
13697
13711
  break;
13698
13712
  }