@mojir/lits 2.0.8 → 2.0.10

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/lits.iife.js CHANGED
@@ -3164,7 +3164,7 @@ var Lits = (function (exports) {
3164
3164
  },
3165
3165
  };
3166
3166
 
3167
- var version = "2.0.8";
3167
+ var version = "2.0.10";
3168
3168
 
3169
3169
  var uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
3170
3170
  var xyRegexp = /[xy]/g;
@@ -4379,6 +4379,7 @@ var Lits = (function (exports) {
4379
4379
  };
4380
4380
  return node;
4381
4381
  },
4382
+ validateParameterCount: function () { return undefined; },
4382
4383
  evaluate: function (node, contextStack, _a) {
4383
4384
  var e_1, _b;
4384
4385
  var evaluateAstNode = _a.evaluateAstNode;
@@ -4406,42 +4407,30 @@ var Lits = (function (exports) {
4406
4407
  },
4407
4408
  };
4408
4409
 
4409
- var commentSpecialExpression = {
4410
- parse: function (tokenStream, parseState, firstToken, _a) {
4411
- var parseToken = _a.parseToken;
4412
- var node = {
4413
- t: exports.AstNodeType.SpecialExpression,
4414
- n: 'comment',
4415
- p: [],
4416
- token: undefined,
4417
- };
4418
- var tkn = asToken(tokenStream.tokens[parseState.position]);
4419
- while (!isRParenToken(tkn)) {
4420
- node.p.push(parseToken(tokenStream, parseState));
4421
- tkn = asToken(tokenStream.tokens[parseState.position]);
4422
- }
4423
- parseState.position += 1;
4424
- node.token = getTokenDebugData(firstToken) && firstToken;
4425
- return node;
4426
- },
4427
- evaluate: function () { return null; },
4428
- findUnresolvedIdentifiers: function () { return new Set(); },
4429
- };
4430
-
4431
- var condSpecialExpression = {
4432
- parse: function (tokenStream, parseState, firstToken, _a) {
4410
+ function getCommonParser(name) {
4411
+ return function (tokenStream, parseState, firstToken, _a) {
4433
4412
  var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
4434
4413
  var params = parseTokensUntilClosingBracket(tokenStream, parseState);
4435
4414
  assertRParenToken(tokenStream.tokens[parseState.position++]);
4436
- var node = {
4415
+ return {
4437
4416
  t: exports.AstNodeType.SpecialExpression,
4438
- n: 'cond',
4417
+ n: name,
4439
4418
  p: params,
4440
4419
  token: getTokenDebugData(firstToken) && firstToken,
4441
4420
  };
4442
- assertEvenNumberOfParams(node);
4443
- return node;
4444
- },
4421
+ };
4422
+ }
4423
+
4424
+ var commentSpecialExpression = {
4425
+ parse: getCommonParser('comment'),
4426
+ validateParameterCount: function () { return undefined; },
4427
+ evaluate: function () { return null; },
4428
+ findUnresolvedIdentifiers: function () { return new Set(); },
4429
+ };
4430
+
4431
+ var condSpecialExpression = {
4432
+ parse: getCommonParser('cond'),
4433
+ validateParameterCount: function (node) { return assertEvenNumberOfParams(node); },
4445
4434
  evaluate: function (node, contextStack, _a) {
4446
4435
  var e_1, _b;
4447
4436
  var evaluateAstNode = _a.evaluateAstNode;
@@ -4470,19 +4459,8 @@ var Lits = (function (exports) {
4470
4459
  };
4471
4460
 
4472
4461
  var declaredSpecialExpression = {
4473
- parse: function (tokenStream, parseState, firstToken, _a) {
4474
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
4475
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
4476
- assertRParenToken(tokenStream.tokens[parseState.position++]);
4477
- var node = {
4478
- t: exports.AstNodeType.SpecialExpression,
4479
- n: 'declared?',
4480
- p: params,
4481
- token: getTokenDebugData(firstToken) && firstToken,
4482
- };
4483
- assertNumberOfParams(1, node);
4484
- return node;
4485
- },
4462
+ parse: getCommonParser('declared?'),
4463
+ validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
4486
4464
  evaluate: function (node, contextStack) {
4487
4465
  var lookUpResult = contextStack.lookUp(node.p[0]);
4488
4466
  return lookUpResult !== null;
@@ -4528,9 +4506,9 @@ var Lits = (function (exports) {
4528
4506
  token: getTokenDebugData(firstToken) && firstToken,
4529
4507
  };
4530
4508
  assertSymbolNode(node.p[0], (_b = getTokenDebugData(node.token)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
4531
- assertNumberOfParams(2, node);
4532
4509
  return node;
4533
4510
  },
4511
+ validateParameterCount: function (node) { return assertNumberOfParams(2, node); },
4534
4512
  evaluate: function (node, contextStack, _a) {
4535
4513
  var _b;
4536
4514
  var evaluateAstNode = _a.evaluateAstNode, builtin = _a.builtin;
@@ -4566,9 +4544,9 @@ var Lits = (function (exports) {
4566
4544
  p: params,
4567
4545
  token: getTokenDebugData(firstToken) && firstToken,
4568
4546
  };
4569
- assertNumberOfParams(2, node);
4570
4547
  return node;
4571
4548
  },
4549
+ validateParameterCount: function (node) { return assertNumberOfParams(2, node); },
4572
4550
  evaluate: function (node, contextStack, _a) {
4573
4551
  var _b, _c;
4574
4552
  var evaluateAstNode = _a.evaluateAstNode, builtin = _a.builtin;
@@ -4596,23 +4574,8 @@ var Lits = (function (exports) {
4596
4574
  };
4597
4575
 
4598
4576
  var doSpecialExpression = {
4599
- parse: function (tokenStream, parseState, firstToken, _a) {
4600
- var parseToken = _a.parseToken;
4601
- var node = {
4602
- t: exports.AstNodeType.SpecialExpression,
4603
- n: 'do',
4604
- p: [],
4605
- token: undefined,
4606
- };
4607
- var tkn = asToken(tokenStream.tokens[parseState.position]);
4608
- while (!isRParenToken(tkn)) {
4609
- node.p.push(parseToken(tokenStream, parseState));
4610
- tkn = asToken(tokenStream.tokens[parseState.position]);
4611
- }
4612
- parseState.position += 1;
4613
- node.token = getTokenDebugData(firstToken) && firstToken;
4614
- return node;
4615
- },
4577
+ parse: getCommonParser('do'),
4578
+ validateParameterCount: function () { return undefined; },
4616
4579
  evaluate: function (node, contextStack, _a) {
4617
4580
  var e_1, _b;
4618
4581
  var evaluateAstNode = _a.evaluateAstNode;
@@ -4689,6 +4652,7 @@ var Lits = (function (exports) {
4689
4652
  };
4690
4653
  return node;
4691
4654
  },
4655
+ validateParameterCount: function () { return undefined; },
4692
4656
  evaluate: function (node, contextStack, _a) {
4693
4657
  var _b;
4694
4658
  var _c, _d;
@@ -4730,6 +4694,7 @@ var Lits = (function (exports) {
4730
4694
  };
4731
4695
  return node;
4732
4696
  },
4697
+ validateParameterCount: function () { return undefined; },
4733
4698
  evaluate: function (node, contextStack, _a) {
4734
4699
  var _b;
4735
4700
  var _c, _d;
@@ -4773,6 +4738,7 @@ var Lits = (function (exports) {
4773
4738
  };
4774
4739
  return node;
4775
4740
  },
4741
+ validateParameterCount: function () { return undefined; },
4776
4742
  evaluate: function (node, contextStack, _a) {
4777
4743
  var _b;
4778
4744
  var _c;
@@ -5004,19 +4970,8 @@ var Lits = (function (exports) {
5004
4970
  }
5005
4971
 
5006
4972
  var ifSpecialExpression = {
5007
- parse: function (tokenStream, parseState, firstToken, _a) {
5008
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5009
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5010
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5011
- var node = {
5012
- t: exports.AstNodeType.SpecialExpression,
5013
- n: 'if',
5014
- p: params,
5015
- token: getTokenDebugData(firstToken) && firstToken,
5016
- };
5017
- assertNumberOfParams({ min: 2, max: 3 }, node);
5018
- return node;
5019
- },
4973
+ parse: getCommonParser('if'),
4974
+ validateParameterCount: function (node) { return assertNumberOfParams({ min: 2, max: 3 }, node); },
5020
4975
  evaluate: function (node, contextStack, _a) {
5021
4976
  var _b;
5022
4977
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5055,9 +5010,9 @@ var Lits = (function (exports) {
5055
5010
  p: params,
5056
5011
  token: getTokenDebugData(firstToken) && firstToken,
5057
5012
  };
5058
- assertNumberOfParams({ min: 1, max: 2 }, node);
5059
5013
  return node;
5060
5014
  },
5015
+ validateParameterCount: function (node) { return assertNumberOfParams({ min: 1, max: 2 }, node); },
5061
5016
  evaluate: function (node, contextStack, _a) {
5062
5017
  var _b;
5063
5018
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5087,19 +5042,8 @@ var Lits = (function (exports) {
5087
5042
  };
5088
5043
 
5089
5044
  var ifNotSpecialExpression = {
5090
- parse: function (tokenStream, parseState, firstToken, _a) {
5091
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5092
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5093
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5094
- var node = {
5095
- t: exports.AstNodeType.SpecialExpression,
5096
- n: 'if-not',
5097
- p: params,
5098
- token: getTokenDebugData(firstToken) && firstToken,
5099
- };
5100
- assertNumberOfParams({ min: 2, max: 3 }, node);
5101
- return node;
5102
- },
5045
+ parse: getCommonParser('if-not'),
5046
+ validateParameterCount: function (node) { return assertNumberOfParams({ min: 2, max: 3 }, node); },
5103
5047
  evaluate: function (node, contextStack, _a) {
5104
5048
  var _b;
5105
5049
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5136,6 +5080,7 @@ var Lits = (function (exports) {
5136
5080
  };
5137
5081
  return node;
5138
5082
  },
5083
+ validateParameterCount: function () { return undefined; },
5139
5084
  evaluate: function (node, contextStack, _a) {
5140
5085
  var e_1, _b, e_2, _c;
5141
5086
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5207,6 +5152,7 @@ var Lits = (function (exports) {
5207
5152
  };
5208
5153
  return node;
5209
5154
  },
5155
+ validateParameterCount: function () { return undefined; },
5210
5156
  evaluate: function (node, contextStack, _a) {
5211
5157
  var _b;
5212
5158
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5470,9 +5416,9 @@ var Lits = (function (exports) {
5470
5416
  p: params,
5471
5417
  token: getTokenDebugData(firstToken) && firstToken,
5472
5418
  };
5473
- assertNumberOfParams(1, node);
5474
5419
  return node;
5475
5420
  },
5421
+ validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
5476
5422
  evaluate: function (node, contextStack, helpers) { return evaluateLoop(true, node, contextStack, helpers.evaluateAstNode); },
5477
5423
  findUnresolvedIdentifiers: function (node, contextStack, _a) {
5478
5424
  var findUnresolvedIdentifiers = _a.findUnresolvedIdentifiers, builtin = _a.builtin;
@@ -5492,9 +5438,9 @@ var Lits = (function (exports) {
5492
5438
  p: params,
5493
5439
  token: getTokenDebugData(firstToken) && firstToken,
5494
5440
  };
5495
- assertNumberOfParams(1, node);
5496
5441
  return node;
5497
5442
  },
5443
+ validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
5498
5444
  evaluate: function (node, contextStack, helpers) {
5499
5445
  evaluateLoop(false, node, contextStack, helpers.evaluateAstNode);
5500
5446
  return null;
@@ -5506,18 +5452,8 @@ var Lits = (function (exports) {
5506
5452
  };
5507
5453
 
5508
5454
  var orSpecialExpression = {
5509
- parse: function (tokenStream, parseState, firstToken, _a) {
5510
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5511
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5512
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5513
- var node = {
5514
- t: exports.AstNodeType.SpecialExpression,
5515
- n: 'or',
5516
- p: params,
5517
- token: getTokenDebugData(firstToken) && firstToken,
5518
- };
5519
- return node;
5520
- },
5455
+ parse: getCommonParser('or'),
5456
+ validateParameterCount: function () { return undefined; },
5521
5457
  evaluate: function (node, contextStack, _a) {
5522
5458
  var e_1, _b;
5523
5459
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5546,19 +5482,8 @@ var Lits = (function (exports) {
5546
5482
  };
5547
5483
 
5548
5484
  var qqSpecialExpression = {
5549
- parse: function (tokenStream, parseState, firstToken, _a) {
5550
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5551
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5552
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5553
- var node = {
5554
- t: exports.AstNodeType.SpecialExpression,
5555
- n: '??',
5556
- p: params,
5557
- token: getTokenDebugData(firstToken) && firstToken,
5558
- };
5559
- assertNumberOfParams({ min: 1, max: 2 }, node);
5560
- return node;
5561
- },
5485
+ parse: getCommonParser('??'),
5486
+ validateParameterCount: function (node) { return assertNumberOfParams({ min: 1, max: 2 }, node); },
5562
5487
  evaluate: function (node, contextStack, _a) {
5563
5488
  var _b;
5564
5489
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5590,6 +5515,7 @@ var Lits = (function (exports) {
5590
5515
  };
5591
5516
  return node;
5592
5517
  },
5518
+ validateParameterCount: function () { return undefined; },
5593
5519
  evaluate: function (node, contextStack, _a) {
5594
5520
  var evaluateAstNode = _a.evaluateAstNode;
5595
5521
  var params = node.p.map(function (paramNode) { return evaluateAstNode(paramNode, contextStack); });
@@ -5602,19 +5528,8 @@ var Lits = (function (exports) {
5602
5528
  };
5603
5529
 
5604
5530
  var throwSpecialExpression = {
5605
- parse: function (tokenStream, parseState, firstToken, _a) {
5606
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5607
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5608
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5609
- var node = {
5610
- t: exports.AstNodeType.SpecialExpression,
5611
- n: 'throw',
5612
- p: params,
5613
- token: getTokenDebugData(firstToken) && firstToken,
5614
- };
5615
- assertNumberOfParams(1, node);
5616
- return node;
5617
- },
5531
+ parse: getCommonParser('throw'),
5532
+ validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
5618
5533
  evaluate: function (node, contextStack, _a) {
5619
5534
  var _b, _c;
5620
5535
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5630,19 +5545,8 @@ var Lits = (function (exports) {
5630
5545
  };
5631
5546
 
5632
5547
  var timeSpecialExpression = {
5633
- parse: function (tokenStream, parseState, firstToken, _a) {
5634
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5635
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5636
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5637
- var node = {
5638
- t: exports.AstNodeType.SpecialExpression,
5639
- n: 'time!',
5640
- p: params,
5641
- token: getTokenDebugData(firstToken) && firstToken,
5642
- };
5643
- assertNumberOfParams(1, node);
5644
- return node;
5645
- },
5548
+ parse: getCommonParser('time!'),
5549
+ validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
5646
5550
  evaluate: function (node, contextStack, _a) {
5647
5551
  var evaluateAstNode = _a.evaluateAstNode;
5648
5552
  var param = node.p[0];
@@ -5683,9 +5587,9 @@ var Lits = (function (exports) {
5683
5587
  e: error,
5684
5588
  token: getTokenDebugData(firstToken) && firstToken,
5685
5589
  };
5686
- assertNumberOfParams(1, node);
5687
5590
  return node;
5688
5591
  },
5592
+ validateParameterCount: function (node) { return assertNumberOfParams(1, node); },
5689
5593
  evaluate: function (node, contextStack, _a) {
5690
5594
  var _b;
5691
5595
  var _c;
@@ -5715,19 +5619,8 @@ var Lits = (function (exports) {
5715
5619
  };
5716
5620
 
5717
5621
  var whenSpecialExpression = {
5718
- parse: function (tokenStream, parseState, firstToken, _a) {
5719
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5720
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5721
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5722
- var node = {
5723
- t: exports.AstNodeType.SpecialExpression,
5724
- n: 'when',
5725
- p: params,
5726
- token: getTokenDebugData(firstToken) && firstToken,
5727
- };
5728
- assertNumberOfParams({ min: 1 }, node);
5729
- return node;
5730
- },
5622
+ parse: getCommonParser('when'),
5623
+ validateParameterCount: function (node) { return assertNumberOfParams({ min: 1 }, node); },
5731
5624
  evaluate: function (node, contextStack, _a) {
5732
5625
  var e_1, _b;
5733
5626
  var _c;
@@ -5777,6 +5670,7 @@ var Lits = (function (exports) {
5777
5670
  };
5778
5671
  return node;
5779
5672
  },
5673
+ validateParameterCount: function () { return undefined; },
5780
5674
  evaluate: function (node, contextStack, _a) {
5781
5675
  var e_1, _b;
5782
5676
  var _c;
@@ -5838,6 +5732,7 @@ var Lits = (function (exports) {
5838
5732
  };
5839
5733
  return node;
5840
5734
  },
5735
+ validateParameterCount: function () { return undefined; },
5841
5736
  evaluate: function (node, contextStack, _a) {
5842
5737
  var e_1, _b;
5843
5738
  var evaluateAstNode = _a.evaluateAstNode;
@@ -5876,19 +5771,8 @@ var Lits = (function (exports) {
5876
5771
  };
5877
5772
 
5878
5773
  var whenNotSpecialExpression = {
5879
- parse: function (tokenStream, parseState, firstToken, _a) {
5880
- var parseTokensUntilClosingBracket = _a.parseTokensUntilClosingBracket;
5881
- var params = parseTokensUntilClosingBracket(tokenStream, parseState);
5882
- assertRParenToken(tokenStream.tokens[parseState.position++]);
5883
- var node = {
5884
- t: exports.AstNodeType.SpecialExpression,
5885
- n: 'when-not',
5886
- p: params,
5887
- token: getTokenDebugData(firstToken) && firstToken,
5888
- };
5889
- assertNumberOfParams({ min: 1 }, node);
5890
- return node;
5891
- },
5774
+ parse: getCommonParser('when-not'),
5775
+ validateParameterCount: function (node) { return assertNumberOfParams({ min: 1 }, node); },
5892
5776
  evaluate: function (node, contextStack, _a) {
5893
5777
  var e_1, _b;
5894
5778
  var _c;
@@ -7116,6 +7000,7 @@ var Lits = (function (exports) {
7116
7000
  }
7117
7001
 
7118
7002
  var exponentiationPrecedence = 9;
7003
+ var placeholderRegexp$1 = /^\$([1-9]\d?)?$/;
7119
7004
  function getPrecedence(operator) {
7120
7005
  var operatorSign = operator[1];
7121
7006
  switch (operatorSign) {
@@ -7348,7 +7233,7 @@ var Lits = (function (exports) {
7348
7233
  // Parentheses
7349
7234
  if (isLParenToken(token)) {
7350
7235
  var positionBefore = this.parseState.position;
7351
- var lamdaFunction = this.parseLamdaFunction();
7236
+ var lamdaFunction = this.parseLambdaFunction();
7352
7237
  if (lamdaFunction) {
7353
7238
  return lamdaFunction;
7354
7239
  }
@@ -7369,6 +7254,9 @@ var Lits = (function (exports) {
7369
7254
  var operand = this.parseOperand();
7370
7255
  return fromUnaryAlgebraicToAstNode(token, operand);
7371
7256
  }
7257
+ else if (operatorName === '=>') {
7258
+ return this.parseShorthandLamdaFunction();
7259
+ }
7372
7260
  else {
7373
7261
  throw new Error("Unknown unary operator: ".concat(operatorName));
7374
7262
  }
@@ -7484,7 +7372,7 @@ var Lits = (function (exports) {
7484
7372
  };
7485
7373
  };
7486
7374
  AlgebraicParser.prototype.parseFunctionCall = function (symbol) {
7487
- var _a, _b;
7375
+ var _a, _b, _c;
7488
7376
  var params = [];
7489
7377
  this.advance();
7490
7378
  while (!this.isAtEnd() && !isRParenToken(this.peek())) {
@@ -7516,13 +7404,17 @@ var Lits = (function (exports) {
7516
7404
  case 'when':
7517
7405
  case 'when-not':
7518
7406
  case 'do':
7519
- case 'throw':
7520
- return {
7407
+ case 'time!':
7408
+ case 'throw': {
7409
+ var node_1 = {
7521
7410
  t: exports.AstNodeType.SpecialExpression,
7522
7411
  n: name_1,
7523
7412
  p: params,
7524
7413
  token: getTokenDebugData(symbol.token) && symbol.token,
7525
7414
  };
7415
+ builtin.specialExpressions[node_1.n].validateParameterCount(node_1);
7416
+ return node_1;
7417
+ }
7526
7418
  case 'def':
7527
7419
  case 'defs':
7528
7420
  case 'let':
@@ -7535,7 +7427,6 @@ var Lits = (function (exports) {
7535
7427
  case 'try':
7536
7428
  case 'recur':
7537
7429
  case 'loop':
7538
- case 'time!':
7539
7430
  case 'doseq':
7540
7431
  case 'for':
7541
7432
  throw new Error("Special expression ".concat(name_1, " is not available in algebraic notation"));
@@ -7543,7 +7434,12 @@ var Lits = (function (exports) {
7543
7434
  throw new Error("Unknown special expression: ".concat(name_1));
7544
7435
  }
7545
7436
  }
7546
- return createNamedNormalExpressionNode(symbol.v, params, symbol.token);
7437
+ var node = createNamedNormalExpressionNode(symbol.v, params, symbol.token);
7438
+ var builtinExpression = builtin.normalExpressions[node.n];
7439
+ if (builtinExpression) {
7440
+ (_c = builtinExpression.validate) === null || _c === void 0 ? void 0 : _c.call(builtinExpression, __assign(__assign({}, node), { p: withoutCommentNodes(node.p) }));
7441
+ }
7442
+ return node;
7547
7443
  }
7548
7444
  else {
7549
7445
  return {
@@ -7554,7 +7450,7 @@ var Lits = (function (exports) {
7554
7450
  };
7555
7451
  }
7556
7452
  };
7557
- AlgebraicParser.prototype.parseLamdaFunction = function () {
7453
+ AlgebraicParser.prototype.parseLambdaFunction = function () {
7558
7454
  var _a;
7559
7455
  var firstToken = this.peek();
7560
7456
  this.advance();
@@ -7613,6 +7509,62 @@ var Lits = (function (exports) {
7613
7509
  token: getTokenDebugData(firstToken) && firstToken,
7614
7510
  };
7615
7511
  };
7512
+ AlgebraicParser.prototype.parseShorthandLamdaFunction = function () {
7513
+ var _a, _b, _c, _d;
7514
+ var firstToken = this.peek();
7515
+ this.advance();
7516
+ var startPos = this.parseState.position;
7517
+ var exprNode = this.parseExpression();
7518
+ var endPos = this.parseState.position - 1;
7519
+ var arity = 0;
7520
+ var percent1 = 'NOT_SET'; // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1
7521
+ for (var pos = startPos; pos <= endPos; pos += 1) {
7522
+ var tkn = this.tokenStream.tokens[pos];
7523
+ if (isA_SymbolToken(tkn)) {
7524
+ var match = placeholderRegexp$1.exec(tkn[1]);
7525
+ if (match) {
7526
+ var number = (_a = match[1]) !== null && _a !== void 0 ? _a : '1';
7527
+ if (number === '1') {
7528
+ var mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED');
7529
+ if (mixedPercent1)
7530
+ throw new LitsError('Please make up your mind, either use $ or $1', (_b = getTokenDebugData(firstToken)) === null || _b === void 0 ? void 0 : _b.sourceCodeInfo);
7531
+ percent1 = match[1] ? 'WITH_1' : 'NAKED';
7532
+ }
7533
+ arity = Math.max(arity, Number(number));
7534
+ if (arity > 20)
7535
+ throw new LitsError('Can\'t specify more than 20 arguments', (_c = getTokenDebugData(firstToken)) === null || _c === void 0 ? void 0 : _c.sourceCodeInfo);
7536
+ }
7537
+ }
7538
+ if (isA_OperatorToken(tkn, '=>')) {
7539
+ throw new LitsError('Nested shortcut functions are not allowed', (_d = getTokenDebugData(firstToken)) === null || _d === void 0 ? void 0 : _d.sourceCodeInfo);
7540
+ }
7541
+ }
7542
+ var mandatoryArguments = [];
7543
+ for (var i = 1; i <= arity; i += 1) {
7544
+ if (i === 1 && percent1 === 'NAKED')
7545
+ mandatoryArguments.push('$');
7546
+ else
7547
+ mandatoryArguments.push("$".concat(i));
7548
+ }
7549
+ var args = {
7550
+ b: [],
7551
+ m: mandatoryArguments,
7552
+ };
7553
+ var node = {
7554
+ t: exports.AstNodeType.SpecialExpression,
7555
+ n: 'fn',
7556
+ p: [],
7557
+ o: [
7558
+ {
7559
+ as: args,
7560
+ b: [exprNode],
7561
+ a: args.m.length,
7562
+ },
7563
+ ],
7564
+ token: getTokenDebugData(firstToken) && firstToken,
7565
+ };
7566
+ return node;
7567
+ };
7616
7568
  AlgebraicParser.prototype.isAtEnd = function () {
7617
7569
  return this.parseState.position >= this.tokenStream.tokens.length;
7618
7570
  };
@@ -7856,7 +7808,7 @@ var Lits = (function (exports) {
7856
7808
  var firstToken = asLParenToken(tokenStream.tokens[parseState.position++]);
7857
7809
  var nameToken = asP_SymbolToken(tokenStream.tokens[parseState.position++]);
7858
7810
  var expressionName = nameToken[1];
7859
- var parse = asNonUndefined(builtin.specialExpressions[expressionName], (_a = getTokenDebugData(nameToken)) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo).parse;
7811
+ var _b = asNonUndefined(builtin.specialExpressions[expressionName], (_a = getTokenDebugData(nameToken)) === null || _a === void 0 ? void 0 : _a.sourceCodeInfo), parse = _b.parse, validateParameterCount = _b.validateParameterCount;
7860
7812
  var node = parse(tokenStream, parseState, firstToken, {
7861
7813
  parseExpression: parseExpression,
7862
7814
  parseTokensUntilClosingBracket: parseTokensUntilClosingBracket,
@@ -7865,6 +7817,7 @@ var Lits = (function (exports) {
7865
7817
  parseBindings: parseBindings,
7866
7818
  parseArgument: parseArgument,
7867
7819
  });
7820
+ validateParameterCount(node);
7868
7821
  return node;
7869
7822
  }
7870
7823
  function parsePolishToken(tokenStream, parseState) {