@ibyar/expressions 0.8.2-dev.20221008 → 0.8.4

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.
Files changed (172) hide show
  1. package/README.md +0 -3
  2. package/api/abstract.d.ts +6 -5
  3. package/api/abstract.js +15 -12
  4. package/api/abstract.js.map +1 -1
  5. package/api/class/class.d.ts +99 -60
  6. package/api/class/class.js +285 -233
  7. package/api/class/class.js.map +1 -1
  8. package/api/class/decorator.d.ts +2 -4
  9. package/api/class/decorator.js +6 -9
  10. package/api/class/decorator.js.map +1 -1
  11. package/api/computing/call.d.ts +2 -4
  12. package/api/computing/call.js +8 -11
  13. package/api/computing/call.js.map +1 -1
  14. package/api/computing/debugger.d.ts +1 -4
  15. package/api/computing/debugger.js +2 -5
  16. package/api/computing/debugger.js.map +1 -1
  17. package/api/computing/new.d.ts +2 -4
  18. package/api/computing/new.js +7 -10
  19. package/api/computing/new.js.map +1 -1
  20. package/api/computing/rest.d.ts +2 -4
  21. package/api/computing/rest.js +6 -9
  22. package/api/computing/rest.js.map +1 -1
  23. package/api/computing/return.d.ts +2 -4
  24. package/api/computing/return.js +6 -9
  25. package/api/computing/return.js.map +1 -1
  26. package/api/computing/spread.d.ts +2 -4
  27. package/api/computing/spread.js +6 -9
  28. package/api/computing/spread.js.map +1 -1
  29. package/api/computing/throw.d.ts +4 -8
  30. package/api/computing/throw.js +18 -23
  31. package/api/computing/throw.js.map +1 -1
  32. package/api/computing/yield.d.ts +2 -4
  33. package/api/computing/yield.js +7 -10
  34. package/api/computing/yield.js.map +1 -1
  35. package/api/definition/array.d.ts +3 -6
  36. package/api/definition/array.js +14 -18
  37. package/api/definition/array.js.map +1 -1
  38. package/api/definition/bind.d.ts +2 -3
  39. package/api/definition/bind.js +9 -10
  40. package/api/definition/bind.js.map +1 -1
  41. package/api/definition/comment.d.ts +3 -5
  42. package/api/definition/comment.js +6 -7
  43. package/api/definition/comment.js.map +1 -1
  44. package/api/definition/function.d.ts +20 -27
  45. package/api/definition/function.js +92 -110
  46. package/api/definition/function.js.map +1 -1
  47. package/api/definition/member.d.ts +2 -3
  48. package/api/definition/member.js +14 -11
  49. package/api/definition/member.js.map +1 -1
  50. package/api/definition/object.d.ts +5 -9
  51. package/api/definition/object.js +24 -30
  52. package/api/definition/object.js.map +1 -1
  53. package/api/definition/statement.d.ts +2 -4
  54. package/api/definition/statement.js +6 -9
  55. package/api/definition/statement.js.map +1 -1
  56. package/api/definition/values.d.ts +15 -40
  57. package/api/definition/values.js +49 -79
  58. package/api/definition/values.js.map +1 -1
  59. package/api/expression.d.ts +40 -26
  60. package/api/expression.js.map +1 -1
  61. package/api/index.d.ts +1 -0
  62. package/api/index.js +1 -0
  63. package/api/index.js.map +1 -1
  64. package/api/module/common.d.ts +4 -5
  65. package/api/module/common.js +12 -12
  66. package/api/module/common.js.map +1 -1
  67. package/api/module/export.d.ts +5 -10
  68. package/api/module/export.js +35 -38
  69. package/api/module/export.js.map +1 -1
  70. package/api/module/import.d.ts +6 -10
  71. package/api/module/import.js +28 -32
  72. package/api/module/import.js.map +1 -1
  73. package/api/operators/assignment.d.ts +3 -3
  74. package/api/operators/assignment.js +5 -5
  75. package/api/operators/assignment.js.map +1 -1
  76. package/api/operators/await.d.ts +3 -5
  77. package/api/operators/await.js +7 -10
  78. package/api/operators/await.js.map +1 -1
  79. package/api/operators/binary.d.ts +1 -1
  80. package/api/operators/binary.js +1 -1
  81. package/api/operators/binary.js.map +1 -1
  82. package/api/operators/chaining.d.ts +2 -3
  83. package/api/operators/chaining.js +6 -7
  84. package/api/operators/chaining.js.map +1 -1
  85. package/api/operators/comma.d.ts +2 -4
  86. package/api/operators/comma.js +6 -9
  87. package/api/operators/comma.js.map +1 -1
  88. package/api/operators/grouping.d.ts +2 -4
  89. package/api/operators/grouping.js +6 -9
  90. package/api/operators/grouping.js.map +1 -1
  91. package/api/operators/logical.d.ts +1 -1
  92. package/api/operators/logical.js +1 -1
  93. package/api/operators/logical.js.map +1 -1
  94. package/api/operators/pipeline.d.ts +2 -4
  95. package/api/operators/pipeline.js +8 -15
  96. package/api/operators/pipeline.js.map +1 -1
  97. package/api/operators/ternary.d.ts +2 -4
  98. package/api/operators/ternary.js +8 -13
  99. package/api/operators/ternary.js.map +1 -1
  100. package/api/operators/types.d.ts +1 -1
  101. package/api/operators/unary.d.ts +3 -5
  102. package/api/operators/unary.js +7 -10
  103. package/api/operators/unary.js.map +1 -1
  104. package/api/operators/update.d.ts +3 -5
  105. package/api/operators/update.js +8 -11
  106. package/api/operators/update.js.map +1 -1
  107. package/api/program.d.ts +3 -5
  108. package/api/program.js +7 -8
  109. package/api/program.js.map +1 -1
  110. package/api/statement/control/block.d.ts +2 -4
  111. package/api/statement/control/block.js +9 -14
  112. package/api/statement/control/block.js.map +1 -1
  113. package/api/statement/control/empty.d.ts +2 -5
  114. package/api/statement/control/empty.js +6 -8
  115. package/api/statement/control/empty.js.map +1 -1
  116. package/api/statement/control/if.d.ts +2 -4
  117. package/api/statement/control/if.js +8 -13
  118. package/api/statement/control/if.js.map +1 -1
  119. package/api/statement/control/switch.d.ts +4 -9
  120. package/api/statement/control/switch.js +19 -28
  121. package/api/statement/control/switch.js.map +1 -1
  122. package/api/statement/control/terminate.d.ts +4 -7
  123. package/api/statement/control/terminate.js +11 -19
  124. package/api/statement/control/terminate.js.map +1 -1
  125. package/api/statement/control/with.d.ts +21 -0
  126. package/api/statement/control/with.js +67 -0
  127. package/api/statement/control/with.js.map +1 -0
  128. package/api/statement/declarations/declares.d.ts +4 -7
  129. package/api/statement/declarations/declares.js +14 -20
  130. package/api/statement/declarations/declares.js.map +1 -1
  131. package/api/statement/iterations/for.d.ts +6 -11
  132. package/api/statement/iterations/for.js +35 -53
  133. package/api/statement/iterations/for.js.map +1 -1
  134. package/api/statement/iterations/while.d.ts +3 -6
  135. package/api/statement/iterations/while.js +14 -22
  136. package/api/statement/iterations/while.js.map +1 -1
  137. package/package.json +14 -4
  138. package/scope/finalizer.d.ts +1 -1
  139. package/scope/pool.d.ts +1 -1
  140. package/scope/proxy.d.ts +1 -1
  141. package/scope/proxy.js +1 -0
  142. package/scope/proxy.js.map +1 -1
  143. package/scope/scope.d.ts +8 -24
  144. package/scope/scope.js +25 -75
  145. package/scope/scope.js.map +1 -1
  146. package/scope/stack.d.ts +15 -3
  147. package/scope/stack.js +49 -32
  148. package/scope/stack.js.map +1 -1
  149. package/v8/enums.d.ts +4 -2
  150. package/v8/enums.js.map +1 -1
  151. package/v8/factory.d.ts +148 -0
  152. package/v8/factory.js +499 -0
  153. package/v8/factory.js.map +1 -0
  154. package/v8/inline.d.ts +50 -48
  155. package/v8/inline.js +322 -300
  156. package/v8/inline.js.map +1 -1
  157. package/v8/node.d.ts +141 -0
  158. package/v8/node.js +2 -0
  159. package/v8/node.js.map +1 -0
  160. package/v8/nodes.d.ts +0 -14
  161. package/v8/nodes.js +1 -152
  162. package/v8/nodes.js.map +1 -1
  163. package/v8/parser.d.ts +21 -18
  164. package/v8/parser.js +97 -84
  165. package/v8/parser.js.map +1 -1
  166. package/v8/stream.d.ts +2 -1
  167. package/v8/stream.js +221 -311
  168. package/v8/stream.js.map +1 -1
  169. package/v8/token.d.ts +3 -1
  170. package/v8/token.js +7 -5
  171. package/v8/token.js.map +1 -1
  172. package/visit/visitor.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/rest.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,sBAAsB;IAOtD,YAAoB,QAA+B;QAClD,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAuB;IAEnD,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAiB,EAAE,YAA8B;QAChE,OAAO,IAAI,aAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAA0B,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAiB,EAAE,SAAwB;QACvD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,aAAmB;QAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AArCY,WAAW;IADvB,YAAY,CAAC,aAAa,CAAC;;GACf,WAAW,CAqCvB;SArCY,WAAW","sourcesContent":["import type { DeclarationExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('RestElement')\nexport class RestElement extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: RestElement, deserializer: NodeDeserializer): RestElement {\n\t\treturn new RestElement(deserializer(node.argument) as DeclarationExpression);\n\t}\n\tstatic visit(node: RestElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: DeclarationExpression) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('RestElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tthrow new Error('RestElement#get() Method has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any): any {\n\t\tthis.argument.declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/rest.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,sBAAsB;IACtD,MAAM,CAAC,QAAQ,CAAC,IAAiB,EAAE,YAA8B;QAChE,OAAO,IAAI,aAAW,CACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAA0B,EACpD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAiB,EAAE,SAAwB;QACvD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,YACS,QAA+B,EACvC,KAAwB,EACxB,GAAoB;QACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAHV,aAAQ,GAAR,QAAQ,CAAuB;IAIxC,CAAC;IACD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,aAAmB;QAChD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrD,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AAzCY,WAAW;IADvB,YAAY,CAAC,aAAa,CAAC;;GACf,WAAW,CAyCvB;SAzCY,WAAW","sourcesContent":["import type {\n\tDeclarationExpression, ExpressionEventPath, ExpressionNode,\n\tNodeDeserializer, SourceLocation, VisitNodeType\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('RestElement')\nexport class RestElement extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: RestElement, deserializer: NodeDeserializer): RestElement {\n\t\treturn new RestElement(\n\t\t\tdeserializer(node.argument) as DeclarationExpression,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: RestElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: DeclarationExpression,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('RestElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tthrow new Error('RestElement#get() Method has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any): any {\n\t\tthis.argument.declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
2
- import type { Scope } from '../../scope/scope.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, SourceLocation } from '../expression.js';
3
2
  import type { Stack } from '../../scope/stack.js';
4
3
  import { AbstractExpressionNode, ReturnValue } from '../abstract.js';
5
4
  /**
@@ -10,9 +9,8 @@ export declare class ReturnStatement extends AbstractExpressionNode {
10
9
  private argument?;
11
10
  static fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement;
12
11
  static visit(node: ReturnStatement, visitNode: VisitNodeType): void;
13
- constructor(argument?: ExpressionNode | undefined);
12
+ constructor(argument?: ExpressionNode | undefined, range?: [number, number], loc?: SourceLocation);
14
13
  getArgument(): ExpressionNode | undefined;
15
- shareVariables(scopeList: Scope<any>[]): void;
16
14
  set(stack: Stack, value: any): void;
17
15
  get(stack: Stack): ReturnValue;
18
16
  dependency(computed?: true): ExpressionNode[];
@@ -7,22 +7,19 @@ import { Deserializer } from '../deserialize/deserialize.js';
7
7
  * If omitted, undefined is returned instead.
8
8
  */
9
9
  let ReturnStatement = ReturnStatement_1 = class ReturnStatement extends AbstractExpressionNode {
10
- constructor(argument) {
11
- super();
12
- this.argument = argument;
13
- }
14
10
  static fromJSON(node, deserializer) {
15
- return new ReturnStatement_1(node.argument ? deserializer(node.argument) : void 0);
11
+ return new ReturnStatement_1(node.argument ? deserializer(node.argument) : void 0, node.range, node.loc);
16
12
  }
17
13
  static visit(node, visitNode) {
18
14
  node.argument && visitNode(node.argument);
19
15
  }
16
+ constructor(argument, range, loc) {
17
+ super(range, loc);
18
+ this.argument = argument;
19
+ }
20
20
  getArgument() {
21
21
  return this.argument;
22
22
  }
23
- shareVariables(scopeList) {
24
- this.argument?.shareVariables(scopeList);
25
- }
26
23
  set(stack, value) {
27
24
  throw new Error(`ReturnStatement#set() has no implementation.`);
28
25
  }
@@ -45,7 +42,7 @@ let ReturnStatement = ReturnStatement_1 = class ReturnStatement extends Abstract
45
42
  };
46
43
  ReturnStatement = ReturnStatement_1 = __decorate([
47
44
  Deserializer('ReturnStatement'),
48
- __metadata("design:paramtypes", [Object])
45
+ __metadata("design:paramtypes", [Object, Array, Object])
49
46
  ], ReturnStatement);
50
47
  export { ReturnStatement };
51
48
  //# sourceMappingURL=return.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"return.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/return.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;GAGG;AAEI,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,QAAyB;QAC5C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAiB;IAE7C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,qEAAqE;IACtE,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AAnCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAmC3B;SAnCY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ReturnStatement')\nexport class ReturnStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement {\n\t\treturn new ReturnStatement(node.argument ? deserializer(node.argument) : void 0);\n\t}\n\tstatic visit(node: ReturnStatement, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(private argument?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument?.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ReturnStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn new ReturnValue(this.argument?.get(stack));\n\t\t// nothing should be written after this operation in a function body.\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `return ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"return.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/return.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;GAGG;AAEI,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAC1D,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CACzB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACpD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,YACS,QAAyB,EACjC,KAAwB,EACxB,GAAoB;QACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAHV,aAAQ,GAAR,QAAQ,CAAiB;IAIlC,CAAC;IACD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,qEAAqE;IACtE,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AAvCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAuC3B;SAvCY,eAAe","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ReturnStatement')\nexport class ReturnStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ReturnStatement, deserializer: NodeDeserializer): ReturnStatement {\n\t\treturn new ReturnStatement(\n\t\t\tnode.argument ? deserializer(node.argument) : void 0,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ReturnStatement, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ReturnStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn new ReturnValue(this.argument?.get(stack));\n\t\t// nothing should be written after this operation in a function body.\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `return ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n"]}
@@ -1,14 +1,12 @@
1
- import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';
2
- import type { Scope } from '../../scope/scope.js';
1
+ import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, SourceLocation, VisitNodeType } from '../expression.js';
3
2
  import type { Stack } from '../../scope/stack.js';
4
3
  import { AbstractExpressionNode } from '../abstract.js';
5
4
  export declare class SpreadElement extends AbstractExpressionNode {
6
5
  private argument;
7
6
  static fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement;
8
7
  static visit(node: SpreadElement, visitNode: VisitNodeType): void;
9
- constructor(argument: ExpressionNode);
8
+ constructor(argument: ExpressionNode, range?: [number, number], loc?: SourceLocation);
10
9
  getArgument(): ExpressionNode;
11
- shareVariables(scopeList: Scope<any>[]): void;
12
10
  set(stack: Stack, value: any): void;
13
11
  get(stack: Stack): void;
14
12
  private spreadFromArray;
@@ -3,22 +3,19 @@ import { __decorate, __metadata } from "tslib";
3
3
  import { AbstractExpressionNode } from '../abstract.js';
4
4
  import { Deserializer } from '../deserialize/deserialize.js';
5
5
  let SpreadElement = SpreadElement_1 = class SpreadElement extends AbstractExpressionNode {
6
- constructor(argument) {
7
- super();
8
- this.argument = argument;
9
- }
10
6
  static fromJSON(node, deserializer) {
11
- return new SpreadElement_1(deserializer(node.argument));
7
+ return new SpreadElement_1(deserializer(node.argument), node.range, node.loc);
12
8
  }
13
9
  static visit(node, visitNode) {
14
10
  visitNode(node.argument);
15
11
  }
12
+ constructor(argument, range, loc) {
13
+ super(range, loc);
14
+ this.argument = argument;
15
+ }
16
16
  getArgument() {
17
17
  return this.argument;
18
18
  }
19
- shareVariables(scopeList) {
20
- this.argument.shareVariables(scopeList);
21
- }
22
19
  set(stack, value) {
23
20
  throw new Error('SpreadElement#set() Method has no implementation.');
24
21
  }
@@ -60,7 +57,7 @@ let SpreadElement = SpreadElement_1 = class SpreadElement extends AbstractExpres
60
57
  };
61
58
  SpreadElement = SpreadElement_1 = __decorate([
62
59
  Deserializer('SpreadElement'),
63
- __metadata("design:paramtypes", [Object])
60
+ __metadata("design:paramtypes", [Object, Array, Object])
64
61
  ], SpreadElement);
65
62
  export { SpreadElement };
66
63
  //# sourceMappingURL=spread.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,sBAAsB;IAOxD,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;QAClE,OAAO,IAAI,eAAa,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAmB,EAAE,SAAwB;QACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC;IACO,eAAe,CAAC,KAAY,EAAE,KAAiB;QACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;QAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,EAAE;YACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,cAAc,CAAC,IAAI,EAAE;gBACxB,MAAM;aACN;YACD,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SACtD;IACF,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AArDY,aAAa;IADzB,YAAY,CAAC,eAAe,CAAC;;GACjB,aAAa,CAqDzB;SArDY,aAAa","sourcesContent":["import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(deserializer(node.argument));\n\t}\n\tstatic visit(node: SpreadElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('SpreadElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tconst value = this.argument.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.spreadFromArray(stack, value);\n\t\t} else if (Reflect.has(value, Symbol.iterator)) {\n\t\t\tthis.spreadFromIterator(stack, value);\n\t\t}\n\t}\n\tprivate spreadFromArray(stack: Stack, array: Array<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\tarray.forEach(value => stack.declareVariable(length++, value));\n\t}\n\tprivate spreadFromIterator(stack: Stack, iterator: Iterator<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\twhile (true) {\n\t\t\tconst iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstack.declareVariable(length++, iteratorResult.value);\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
1
+ {"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/spread.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,sBAAsB;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAmB,EAAE,YAA8B;QAClE,OAAO,IAAI,eAAa,CACvB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAmB,EAAE,SAAwB;QACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,YACS,QAAwB,EAChC,KAAwB,EACxB,GAAoB;QACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAHV,aAAQ,GAAR,QAAQ,CAAgB;IAIjC,CAAC;IACD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC/C,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC;IACO,eAAe,CAAC,KAAY,EAAE,KAAiB;QACtD,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IACO,kBAAkB,CAAC,KAAY,EAAE,QAAuB;QAC/D,IAAI,MAAM,GAAW,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,EAAE;YACZ,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,cAAc,CAAC,IAAI,EAAE;gBACxB,MAAM;aACN;YACD,KAAK,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;SACtD;IACF,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC7C,CAAC;CACD,CAAA;AAzDY,aAAa;IADzB,YAAY,CAAC,eAAe,CAAC;;GACjB,aAAa,CAyDzB;SAzDY,aAAa","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode, NodeDeserializer,\n\tSourceLocation, VisitNodeType\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('SpreadElement')\nexport class SpreadElement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SpreadElement, deserializer: NodeDeserializer): SpreadElement {\n\t\treturn new SpreadElement(\n\t\t\tdeserializer(node.argument),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: SpreadElement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('SpreadElement#set() Method has no implementation.');\n\t}\n\tget(stack: Stack): void {\n\t\tconst value = this.argument.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.spreadFromArray(stack, value);\n\t\t} else if (Reflect.has(value, Symbol.iterator)) {\n\t\t\tthis.spreadFromIterator(stack, value);\n\t\t}\n\t}\n\tprivate spreadFromArray(stack: Stack, array: Array<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\tarray.forEach(value => stack.declareVariable(length++, value));\n\t}\n\tprivate spreadFromIterator(stack: Stack, iterator: Iterator<any>): void {\n\t\tlet length: number = stack.get('length');\n\t\twhile (true) {\n\t\t\tconst iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstack.declareVariable(length++, iteratorResult.value);\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `...${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument.toJSON() };\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
2
- import type { Scope } from '../../scope/scope.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, SourceLocation } from '../expression.js';
3
2
  import type { Stack } from '../../scope/stack.js';
4
3
  import { AbstractExpressionNode } from '../abstract.js';
5
4
  /**
@@ -10,9 +9,8 @@ export declare class ThrowStatement extends AbstractExpressionNode {
10
9
  private argument;
11
10
  static fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement;
12
11
  static visit(node: ThrowStatement, visitNode: VisitNodeType): void;
13
- constructor(argument: ExpressionNode);
12
+ constructor(argument: ExpressionNode, range?: [number, number], loc?: SourceLocation);
14
13
  getArgument(): ExpressionNode;
15
- shareVariables(scopeList: Scope<any>[]): void;
16
14
  set(stack: Stack, value: any): void;
17
15
  get(stack: Stack): void;
18
16
  dependency(computed?: true): ExpressionNode[];
@@ -24,10 +22,9 @@ export declare class CatchClauseNode extends AbstractExpressionNode {
24
22
  private body;
25
23
  private param?;
26
24
  static fromJSON(node: CatchClauseNode, deserializer: NodeDeserializer): CatchClauseNode;
27
- constructor(body: ExpressionNode, param?: ExpressionNode | undefined);
25
+ constructor(body: ExpressionNode, param?: ExpressionNode | undefined, range?: [number, number], loc?: SourceLocation);
28
26
  getParam(): ExpressionNode | undefined;
29
27
  getBody(): ExpressionNode;
30
- shareVariables(scopeList: Scope<any>[]): void;
31
28
  set(stack: Stack, error: any): void;
32
29
  get(stack: Stack, thisContext?: any): any;
33
30
  dependency(computed?: true): ExpressionNode[];
@@ -42,11 +39,10 @@ export declare class TryCatchNode extends AbstractExpressionNode {
42
39
  private handler?;
43
40
  private finalizer?;
44
41
  static fromJSON(node: TryCatchNode, deserializer: NodeDeserializer): TryCatchNode;
45
- constructor(block: ExpressionNode, handler?: ExpressionNode | undefined, finalizer?: ExpressionNode | undefined);
42
+ constructor(block: ExpressionNode, handler?: ExpressionNode | undefined, finalizer?: ExpressionNode | undefined, range?: [number, number], loc?: SourceLocation);
46
43
  getBlock(): ExpressionNode;
47
44
  getHandler(): ExpressionNode | undefined;
48
45
  getFinalizer(): ExpressionNode | undefined;
49
- shareVariables(scopeList: Scope<any>[]): void;
50
46
  set(stack: Stack, value: any): void;
51
47
  get(stack: Stack): void;
52
48
  dependency(computed?: true): ExpressionNode[];
@@ -7,22 +7,19 @@ import { Deserializer } from '../deserialize/deserialize.js';
7
7
  * If omitted, undefined is returned instead.
8
8
  */
9
9
  let ThrowStatement = ThrowStatement_1 = class ThrowStatement extends AbstractExpressionNode {
10
- constructor(argument) {
11
- super();
12
- this.argument = argument;
13
- }
14
10
  static fromJSON(node, deserializer) {
15
- return new ThrowStatement_1(deserializer(node.argument));
11
+ return new ThrowStatement_1(deserializer(node.argument), node.range, node.loc);
16
12
  }
17
13
  static visit(node, visitNode) {
18
14
  visitNode(node.argument);
19
15
  }
16
+ constructor(argument, range, loc) {
17
+ super(range, loc);
18
+ this.argument = argument;
19
+ }
20
20
  getArgument() {
21
21
  return this.argument;
22
22
  }
23
- shareVariables(scopeList) {
24
- this.argument.shareVariables(scopeList);
25
- }
26
23
  set(stack, value) {
27
24
  throw new Error(`ThrowStatement#set() has no implementation.`);
28
25
  }
@@ -44,25 +41,24 @@ let ThrowStatement = ThrowStatement_1 = class ThrowStatement extends AbstractExp
44
41
  };
45
42
  ThrowStatement = ThrowStatement_1 = __decorate([
46
43
  Deserializer('ThrowStatement'),
47
- __metadata("design:paramtypes", [Object])
44
+ __metadata("design:paramtypes", [Object, Array, Object])
48
45
  ], ThrowStatement);
49
46
  export { ThrowStatement };
50
47
  let CatchClauseNode = CatchClauseNode_1 = class CatchClauseNode extends AbstractExpressionNode {
51
- constructor(body, param) {
52
- super();
48
+ static fromJSON(node, deserializer) {
49
+ return new CatchClauseNode_1(deserializer(node.body), node.param ? deserializer(node.param) : void 0, node.range, node.loc);
50
+ }
51
+ constructor(body, param, range, loc) {
52
+ super(range, loc);
53
53
  this.body = body;
54
54
  this.param = param;
55
55
  }
56
- static fromJSON(node, deserializer) {
57
- return new CatchClauseNode_1(deserializer(node.body), node.param ? deserializer(node.param) : void 0);
58
- }
59
56
  getParam() {
60
57
  return this.param;
61
58
  }
62
59
  getBody() {
63
60
  return this.body;
64
61
  }
65
- shareVariables(scopeList) { }
66
62
  set(stack, error) {
67
63
  this.param?.set(stack, error);
68
64
  }
@@ -87,19 +83,19 @@ let CatchClauseNode = CatchClauseNode_1 = class CatchClauseNode extends Abstract
87
83
  };
88
84
  CatchClauseNode = CatchClauseNode_1 = __decorate([
89
85
  Deserializer('CatchClause'),
90
- __metadata("design:paramtypes", [Object, Object])
86
+ __metadata("design:paramtypes", [Object, Object, Array, Object])
91
87
  ], CatchClauseNode);
92
88
  export { CatchClauseNode };
93
89
  let TryCatchNode = TryCatchNode_1 = class TryCatchNode extends AbstractExpressionNode {
94
- constructor(block, handler, finalizer) {
95
- super();
90
+ static fromJSON(node, deserializer) {
91
+ return new TryCatchNode_1(deserializer(node.block), node.handler ? deserializer(node.handler) : void 0, node.finalizer ? deserializer(node.finalizer) : void 0, node.range, node.loc);
92
+ }
93
+ constructor(block, handler, finalizer, range, loc) {
94
+ super(range, loc);
96
95
  this.block = block;
97
96
  this.handler = handler;
98
97
  this.finalizer = finalizer;
99
98
  }
100
- static fromJSON(node, deserializer) {
101
- return new TryCatchNode_1(deserializer(node.block), node.handler ? deserializer(node.handler) : void 0, node.finalizer ? deserializer(node.finalizer) : void 0);
102
- }
103
99
  getBlock() {
104
100
  return this.block;
105
101
  }
@@ -109,7 +105,6 @@ let TryCatchNode = TryCatchNode_1 = class TryCatchNode extends AbstractExpressio
109
105
  getFinalizer() {
110
106
  return this.finalizer;
111
107
  }
112
- shareVariables(scopeList) { }
113
108
  set(stack, value) {
114
109
  throw new Error(`TryCatchNode#set() has no implementation.`);
115
110
  }
@@ -190,7 +185,7 @@ let TryCatchNode = TryCatchNode_1 = class TryCatchNode extends AbstractExpressio
190
185
  };
191
186
  TryCatchNode = TryCatchNode_1 = __decorate([
192
187
  Deserializer('TryStatement'),
193
- __metadata("design:paramtypes", [Object, Object, Object])
188
+ __metadata("design:paramtypes", [Object, Object, Object, Array, Object])
194
189
  ], TryCatchNode);
195
190
  export { TryCatchNode };
196
191
  //# sourceMappingURL=throw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"throw.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/throw.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D;;;GAGG;AAEI,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,sBAAsB;IAOzD,YAAoB,QAAwB;QAC3C,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAgB;IAE5C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,YAA8B;QACnE,OAAO,IAAI,gBAAc,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAoB,EAAE,SAAwB;QAC1D,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACP,OAAO,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM;QACL,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IAC9C,CAAC;CACD,CAAA;AAlCY,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CAkC1B;SAlCY,cAAc;AAsCpB,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,IAAoB,EAAU,KAAsB;QACvE,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAgB;QAAU,UAAK,GAAL,KAAK,CAAiB;IAExE,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAC9C,CAAC;IACH,CAAC;IAID,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,WAAiB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,QAAQ;QACP,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAY;QAClB,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;SACxB,CAAC;IACH,CAAC;CAED,CAAA;AAvCY,eAAe;IAD3B,YAAY,CAAC,aAAa,CAAC;;GACf,eAAe,CAuC3B;SAvCY,eAAe;AA0CrB,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,sBAAsB;IAQvD,YAAoB,KAAqB,EAAU,OAAwB,EAAU,SAA0B;QAC9G,KAAK,EAAE,CAAC;QADW,UAAK,GAAL,KAAK,CAAgB;QAAU,YAAO,GAAP,OAAO,CAAiB;QAAU,cAAS,GAAT,SAAS,CAAiB;IAE/G,CAAC;IATD,MAAM,CAAC,QAAQ,CAAC,IAAkB,EAAE,YAA8B;QACjE,OAAO,IAAI,cAAY,CACtB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACtD,CAAC;IACH,CAAC;IAID,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,UAAU;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IACD,YAAY;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACD,cAAc,CAAC,SAAuB,IAAU,CAAC;IACjD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACjD,IAAI;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACf,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;oBAAS;gBACT,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;SACD;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YACtC,IAAI;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACf,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;SACD;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;YACxC,IAAI;gBACH,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;oBAAS;gBACT,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvB,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC1B;SACD;aAAM;YACN,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC5E;QACD,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;aAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;aACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;aACxC,MAAM,CACN,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,EAC5C,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAC9C,CAAC;IACJ,CAAC;IACD,QAAQ;QACP,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzI,CAAC;IACD,MAAM;QACL,OAAO;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE;SACnC,CAAC;IACH,CAAC;CACD,CAAA;AA9FY,YAAY;IADxB,YAAY,CAAC,cAAc,CAAC;;GAChB,YAAY,CA8FxB;SA9FY,YAAY","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ThrowStatement')\nexport class ThrowStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement {\n\t\treturn new ThrowStatement(deserializer(node.argument));\n\t}\n\tstatic visit(node: ThrowStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(private argument: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ThrowStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow this.argument.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `throw ${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n\n\n@Deserializer('CatchClause')\nexport class CatchClauseNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: CatchClauseNode, deserializer: NodeDeserializer): CatchClauseNode {\n\t\treturn new CatchClauseNode(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.param ? deserializer(node.param) : void 0,\n\t\t);\n\t}\n\tconstructor(private body: ExpressionNode, private param?: ExpressionNode,) {\n\t\tsuper();\n\t}\n\tgetParam() {\n\t\treturn this.param;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, error: any) {\n\t\tthis.param?.set(stack, error);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.body.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.dependency();\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `catch (${this.param?.toString() || ''}) ${this.body.toString()}`;\n\t}\n\ttoJson(key?: string): { [key: string]: any; } {\n\t\treturn {\n\t\t\tparam: this.param?.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n\n}\n\n@Deserializer('TryStatement')\nexport class TryCatchNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TryCatchNode, deserializer: NodeDeserializer): TryCatchNode {\n\t\treturn new TryCatchNode(\n\t\t\tdeserializer(node.block),\n\t\t\tnode.handler ? deserializer(node.handler) : void 0,\n\t\t\tnode.finalizer ? deserializer(node.finalizer) : void 0\n\t\t);\n\t}\n\tconstructor(private block: ExpressionNode, private handler?: ExpressionNode, private finalizer?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetBlock() {\n\t\treturn this.block;\n\t}\n\tgetHandler() {\n\t\treturn this.handler;\n\t}\n\tgetFinalizer() {\n\t\treturn this.finalizer;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TryCatchNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst scope = stack.lastScope();\n\t\tif (this.block && this.handler && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.handler) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Uncaught SyntaxError: Missing catch or finally after try`);\n\t\t}\n\t\tstack.clearTill(scope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.block.dependency()\n\t\t\t.concat(this.handler?.dependency() || [])\n\t\t\t.concat(this.finalizer?.dependency() || []);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.block.dependencyPath(computed)\n\t\t\t.concat(\n\t\t\t\tthis.handler?.dependencyPath(computed) || [],\n\t\t\t\tthis.finalizer?.dependencyPath(computed) || []\n\t\t\t);\n\t}\n\ttoString(): string {\n\t\treturn `try ${this.block.toString()} ${this.handler?.toString() || ''} ${this.finalizer ? `finally ${this.finalizer.toString()}` : ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tblock: this.block.toJSON(),\n\t\t\thandler: this.handler?.toJSON(),\n\t\t\tfinalizer: this.finalizer?.toJSON(),\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"throw.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/throw.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n/**\n * The expression whose value is to be returned. \n * If omitted, undefined is returned instead.\n */\n@Deserializer('ThrowStatement')\nexport class ThrowStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: ThrowStatement, deserializer: NodeDeserializer): ThrowStatement {\n\t\treturn new ThrowStatement(\n\t\t\tdeserializer(node.argument),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ThrowStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate argument: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`ThrowStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthrow this.argument.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `throw ${this.argument.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn { argument: this.argument?.toJSON() };\n\t}\n}\n\n\n@Deserializer('CatchClause')\nexport class CatchClauseNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: CatchClauseNode, deserializer: NodeDeserializer): CatchClauseNode {\n\t\treturn new CatchClauseNode(\n\t\t\tdeserializer(node.body),\n\t\t\tnode.param ? deserializer(node.param) : void 0,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tconstructor(\n\t\tprivate body: ExpressionNode,\n\t\tprivate param?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetParam() {\n\t\treturn this.param;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, error: any) {\n\t\tthis.param?.set(stack, error);\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\treturn this.body.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.dependency();\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `catch (${this.param?.toString() || ''}) ${this.body.toString()}`;\n\t}\n\ttoJson(key?: string): { [key: string]: any; } {\n\t\treturn {\n\t\t\tparam: this.param?.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n\n}\n\n@Deserializer('TryStatement')\nexport class TryCatchNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: TryCatchNode, deserializer: NodeDeserializer): TryCatchNode {\n\t\treturn new TryCatchNode(\n\t\t\tdeserializer(node.block),\n\t\t\tnode.handler ? deserializer(node.handler) : void 0,\n\t\t\tnode.finalizer ? deserializer(node.finalizer) : void 0,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tconstructor(private block: ExpressionNode,\n\t\tprivate handler?: ExpressionNode,\n\t\tprivate finalizer?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetBlock() {\n\t\treturn this.block;\n\t}\n\tgetHandler() {\n\t\treturn this.handler;\n\t}\n\tgetFinalizer() {\n\t\treturn this.finalizer;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TryCatchNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst scope = stack.lastScope();\n\t\tif (this.block && this.handler && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.handler) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} catch (error) {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\tthis.handler.set(stack, error);\n\t\t\t\tthis.handler.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else if (this.block && this.finalizer) {\n\t\t\ttry {\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.block.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t} finally {\n\t\t\t\tstack.clearTill(scope);\n\t\t\t\tconst blockScope = stack.pushBlockScope();\n\t\t\t\tthis.finalizer.get(stack);\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Uncaught SyntaxError: Missing catch or finally after try`);\n\t\t}\n\t\tstack.clearTill(scope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.block.dependency()\n\t\t\t.concat(this.handler?.dependency() || [])\n\t\t\t.concat(this.finalizer?.dependency() || []);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.block.dependencyPath(computed)\n\t\t\t.concat(\n\t\t\t\tthis.handler?.dependencyPath(computed) || [],\n\t\t\t\tthis.finalizer?.dependencyPath(computed) || []\n\t\t\t);\n\t}\n\ttoString(): string {\n\t\treturn `try ${this.block.toString()} ${this.handler?.toString() || ''} ${this.finalizer ? `finally ${this.finalizer.toString()}` : ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tblock: this.block.toJSON(),\n\t\t\thandler: this.handler?.toJSON(),\n\t\t\tfinalizer: this.finalizer?.toJSON(),\n\t\t};\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
- import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
2
- import type { Scope } from '../../scope/scope.js';
1
+ import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType, SourceLocation } from '../expression.js';
3
2
  import type { Stack } from '../../scope/stack.js';
4
3
  import { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';
5
4
  export declare class YieldExpression extends AbstractExpressionNode {
@@ -7,9 +6,8 @@ export declare class YieldExpression extends AbstractExpressionNode {
7
6
  private argument?;
8
7
  static fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression;
9
8
  static visit(node: YieldExpression, visitNode: VisitNodeType): void;
10
- constructor(delegate: boolean, argument?: ExpressionNode | undefined);
9
+ constructor(delegate: boolean, argument?: ExpressionNode | undefined, range?: [number, number], loc?: SourceLocation);
11
10
  getArgument(): ExpressionNode | undefined;
12
- shareVariables(scopeList: Scope<any>[]): void;
13
11
  set(stack: Stack, value: any): void;
14
12
  get(stack: Stack): YieldValue | YieldDelegateValue;
15
13
  dependency(computed?: true): ExpressionNode[];
@@ -3,23 +3,20 @@ import { __decorate, __metadata } from "tslib";
3
3
  import { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';
4
4
  import { Deserializer } from '../deserialize/deserialize.js';
5
5
  let YieldExpression = YieldExpression_1 = class YieldExpression extends AbstractExpressionNode {
6
- constructor(delegate, argument) {
7
- super();
8
- this.delegate = delegate;
9
- this.argument = argument;
10
- }
11
6
  static fromJSON(node, deserializer) {
12
- return new YieldExpression_1(node.delegate, node.argument ? deserializer(node.argument) : void 0);
7
+ return new YieldExpression_1(node.delegate, node.argument ? deserializer(node.argument) : void 0, node.range, node.loc);
13
8
  }
14
9
  static visit(node, visitNode) {
15
10
  node.argument && visitNode(node.argument);
16
11
  }
12
+ constructor(delegate, argument, range, loc) {
13
+ super(range, loc);
14
+ this.delegate = delegate;
15
+ this.argument = argument;
16
+ }
17
17
  getArgument() {
18
18
  return this.argument;
19
19
  }
20
- shareVariables(scopeList) {
21
- this.argument?.shareVariables(scopeList);
22
- }
23
20
  set(stack, value) {
24
21
  throw new Error(`YieldExpression#set() has no implementation.`);
25
22
  }
@@ -48,7 +45,7 @@ let YieldExpression = YieldExpression_1 = class YieldExpression extends Abstract
48
45
  };
49
46
  YieldExpression = YieldExpression_1 = __decorate([
50
47
  Deserializer('YieldExpression'),
51
- __metadata("design:paramtypes", [Boolean, Object])
48
+ __metadata("design:paramtypes", [Boolean, Object, Array, Object])
52
49
  ], YieldExpression);
53
50
  export { YieldExpression };
54
51
  //# sourceMappingURL=yield.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/yield.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAO1D,YAAoB,QAAiB,EAAU,QAAyB;QACvE,KAAK,EAAE,CAAC;QADW,aAAQ,GAAR,QAAQ,CAAS;QAAU,aAAQ,GAAR,QAAQ,CAAiB;IAExE,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAID,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,cAAc,CAAC,SAAuB;QACrC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;SACjC,CAAC;IACH,CAAC;CACD,CAAA;AAzCY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CAyC3B;SAzCY,eAAe","sourcesContent":["import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('YieldExpression')\nexport class YieldExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression {\n\t\treturn new YieldExpression(node.delegate, node.argument ? deserializer(node.argument) : void 0);\n\t}\n\tstatic visit(node: YieldExpression, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(private delegate: boolean, private argument?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.argument?.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`YieldExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst value = this.argument?.get(stack);\n\t\tif (this.delegate) {\n\t\t\treturn new YieldDelegateValue(value);\n\t\t}\n\t\treturn new YieldValue(value);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `yield${this.delegate ? '*' : ''} ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdelegate: this.delegate,\n\t\t\targument: this.argument?.toJSON()\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"yield.js","sourceRoot":"","sources":["../../../../src/expressions/api/computing/yield.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGtD,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,sBAAsB;IAC1D,MAAM,CAAC,QAAQ,CAAC,IAAqB,EAAE,YAA8B;QACpE,OAAO,IAAI,iBAAe,CACzB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EACpD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACR,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAqB,EAAE,SAAwB;QAC3D,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IACD,YACS,QAAiB,EACjB,QAAyB,EACjC,KAAwB,EACxB,GAAoB;QACpB,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAJV,aAAQ,GAAR,QAAQ,CAAS;QACjB,aAAQ,GAAR,QAAQ,CAAiB;IAIlC,CAAC;IACD,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;SACjC,CAAC;IACH,CAAC;CACD,CAAA;AA/CY,eAAe;IAD3B,YAAY,CAAC,iBAAiB,CAAC;;GACnB,eAAe,CA+C3B;SA/CY,eAAe","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, ExpressionEventPath,\n\tVisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('YieldExpression')\nexport class YieldExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression {\n\t\treturn new YieldExpression(\n\t\t\tnode.delegate,\n\t\t\tnode.argument ? deserializer(node.argument) : void 0,\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: YieldExpression, visitNode: VisitNodeType): void {\n\t\tnode.argument && visitNode(node.argument);\n\t}\n\tconstructor(\n\t\tprivate delegate: boolean,\n\t\tprivate argument?: ExpressionNode,\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`YieldExpression#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst value = this.argument?.get(stack);\n\t\tif (this.delegate) {\n\t\t\treturn new YieldDelegateValue(value);\n\t\t}\n\t\treturn new YieldValue(value);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.argument?.dependency(computed) || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.argument?.dependencyPath(computed) || [];\n\t}\n\ttoString(): string {\n\t\treturn `yield${this.delegate ? '*' : ''} ${this.argument?.toString() || ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdelegate: this.delegate,\n\t\t\targument: this.argument?.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1,5 +1,4 @@
1
- import type { NodeDeserializer, ExpressionNode, DeclarationExpression, ExpressionEventPath, VisitNodeType } from '../expression.js';
2
- import type { Scope } from '../../scope/scope.js';
1
+ import type { NodeDeserializer, ExpressionNode, DeclarationExpression, ExpressionEventPath, VisitNodeType, SourceLocation } from '../expression.js';
3
2
  import type { Stack } from '../../scope/stack.js';
4
3
  import { AbstractExpressionNode } from '../abstract.js';
5
4
  import { SpreadElement } from '../computing/spread.js';
@@ -7,9 +6,8 @@ export declare class ArrayExpression extends AbstractExpressionNode {
7
6
  private elements;
8
7
  static fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression;
9
8
  static visit(node: ArrayExpression, visitNode: VisitNodeType): void;
10
- constructor(elements: (ExpressionNode | SpreadElement | null)[]);
9
+ constructor(elements: (ExpressionNode | SpreadElement | null)[], range?: [number, number], loc?: SourceLocation);
11
10
  getElements(): (ExpressionNode | SpreadElement | null)[];
12
- shareVariables(scopeList: Scope<any>[]): void;
13
11
  set(stack: Stack): void;
14
12
  get(stack: Stack): any[];
15
13
  dependency(computed?: true): ExpressionNode[];
@@ -21,9 +19,8 @@ export declare class ArrayPattern extends AbstractExpressionNode implements Decl
21
19
  private elements;
22
20
  static fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern;
23
21
  static visit(node: ArrayPattern, visitNode: VisitNodeType): void;
24
- constructor(elements: (DeclarationExpression | null)[]);
22
+ constructor(elements: (DeclarationExpression | null)[], range?: [number, number], loc?: SourceLocation);
25
23
  getElements(): (DeclarationExpression | null)[];
26
- shareVariables(scopeList: Scope<any>[]): void;
27
24
  set(stack: Stack, values: any): void;
28
25
  get(scopeProvider: Stack): void;
29
26
  declareVariable(stack: Stack, values: any): void;
@@ -4,22 +4,19 @@ import { AbstractExpressionNode } from '../abstract.js';
4
4
  import { Deserializer } from '../deserialize/deserialize.js';
5
5
  import { RestElement } from '../computing/rest.js';
6
6
  let ArrayExpression = ArrayExpression_1 = class ArrayExpression extends AbstractExpressionNode {
7
- constructor(elements) {
8
- super();
9
- this.elements = elements;
10
- }
11
7
  static fromJSON(node, deserializer) {
12
- return new ArrayExpression_1(node.elements.map(element => element ? deserializer(element) : null));
8
+ return new ArrayExpression_1(node.elements.map(element => element ? deserializer(element) : null), node.range, node.loc);
13
9
  }
14
10
  static visit(node, visitNode) {
15
11
  node.elements.forEach(element => element && visitNode(element));
16
12
  }
13
+ constructor(elements, range, loc) {
14
+ super(range, loc);
15
+ this.elements = elements;
16
+ }
17
17
  getElements() {
18
18
  return this.elements;
19
19
  }
20
- shareVariables(scopeList) {
21
- this.elements.forEach(item => item?.shareVariables(scopeList));
22
- }
23
20
  set(stack) {
24
21
  throw new Error("ArrayExpression#set() has no implementation.");
25
22
  }
@@ -33,7 +30,7 @@ let ArrayExpression = ArrayExpression_1 = class ArrayExpression extends Abstract
33
30
  return this.elements.filter(item => item).flatMap(item => item.dependencyPath(computed));
34
31
  }
35
32
  toString() {
36
- return this.elements.map(item => item?.toString()).toString();
33
+ return `[ ${this.elements.map(item => item?.toString()).toString()} ]`;
37
34
  }
38
35
  toJson() {
39
36
  return {
@@ -43,24 +40,23 @@ let ArrayExpression = ArrayExpression_1 = class ArrayExpression extends Abstract
43
40
  };
44
41
  ArrayExpression = ArrayExpression_1 = __decorate([
45
42
  Deserializer('ArrayExpression'),
46
- __metadata("design:paramtypes", [Array])
43
+ __metadata("design:paramtypes", [Array, Array, Object])
47
44
  ], ArrayExpression);
48
45
  export { ArrayExpression };
49
46
  let ArrayPattern = ArrayPattern_1 = class ArrayPattern extends AbstractExpressionNode {
50
- constructor(elements) {
51
- super();
52
- this.elements = elements;
53
- }
54
47
  static fromJSON(node, deserializer) {
55
- return new ArrayPattern_1(node.elements.map(expression => expression ? deserializer(expression) : null));
48
+ return new ArrayPattern_1(node.elements.map(expression => expression ? deserializer(expression) : null), node.range, node.loc);
56
49
  }
57
50
  static visit(node, visitNode) {
58
51
  node.elements.forEach(expression => expression && visitNode(expression));
59
52
  }
53
+ constructor(elements, range, loc) {
54
+ super(range, loc);
55
+ this.elements = elements;
56
+ }
60
57
  getElements() {
61
58
  return this.elements;
62
59
  }
63
- shareVariables(scopeList) { }
64
60
  set(stack, values) {
65
61
  throw new Error('ArrayPattern#set() has no implementation.');
66
62
  }
@@ -122,7 +118,7 @@ let ArrayPattern = ArrayPattern_1 = class ArrayPattern extends AbstractExpressio
122
118
  return this.elements.filter(item => item).flatMap(item => item.dependencyPath(computed));
123
119
  }
124
120
  toString() {
125
- return this.elements.map(item => item?.toString()).toString();
121
+ return `[ ${this.elements.map(item => item?.toString()).toString()} ]`;
126
122
  }
127
123
  toJson() {
128
124
  return {
@@ -132,7 +128,7 @@ let ArrayPattern = ArrayPattern_1 = class ArrayPattern extends AbstractExpressio
132
128
  };
133
129
  ArrayPattern = ArrayPattern_1 = __decorate([
134
130
  Deserializer('ArrayPattern'),
135
- __metadata("design:paramtypes", [Array])
131
+ __metadata("design:paramtypes", [Array, Array, Object])
136
132
  ], ArrayPattern);
137
133
  export { ArrayPattern };
138
134
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { SpreadElement } from '../computing/spread.js';\n\n@Deserializer('ArrayExpression')\nexport class ArrayExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression {\n\t\treturn new ArrayExpression(node.elements.map(element => element ? deserializer(element) : null));\n\t}\n\tstatic visit(node: ArrayExpression, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(element => element && visitNode(element));\n\t}\n\tconstructor(private elements: (ExpressionNode | SpreadElement | null)[]) {\n\t\tsuper();\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.elements.forEach(item => item?.shareVariables(scopeList));\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"ArrayExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack) {\n\t\treturn this.elements.map(item => item?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn this.elements.map(item => item?.toString()).toString();\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n\n\n@Deserializer('ArrayPattern')\nexport class ArrayPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern {\n\t\treturn new ArrayPattern(node.elements.map(expression => expression ? deserializer(expression) : null) as DeclarationExpression[]);\n\t}\n\tstatic visit(node: ArrayPattern, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(expression => expression && visitNode(expression));\n\t}\n\tconstructor(private elements: (DeclarationExpression | null)[]) {\n\t\tsuper();\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack, values: any) {\n\t\tthrow new Error('ArrayPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ArrayPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, values: any) {\n\t\tif (Array.isArray(values)) {\n\t\t\tthis.declareVariableFromArray(stack, values);\n\t\t} else if (Reflect.has(values, Symbol.iterator)) {\n\t\t\tthis.declareVariableFromIterator(stack, values);\n\t\t}\n\t}\n\tdeclareVariableFromArray(stack: Stack, values: any[]) {\n\t\tfor (let index = 0; index < this.elements.length; index++) {\n\t\t\tconst elem = this.elements[index];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = values.slice(index);\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, values[index]);\n\t\t}\n\t}\n\tdeclareVariableFromIterator(stack: Stack, iterator: Iterator<any>) {\n\t\tlet index = 0;\n\t\twhile (true) {\n\t\t\tlet iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst elem = this.elements[index++];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = [iteratorResult.value];\n\t\t\t\twhile (!iteratorResult.done) {\n\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\trest.push(iteratorResult.value);\n\t\t\t\t}\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, iteratorResult.value);\n\t\t\tif (index >= this.elements.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn this.elements.map(item => item?.toString()).toString();\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n"]}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType, SourceLocation\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { RestElement } from '../computing/rest.js';\nimport { SpreadElement } from '../computing/spread.js';\n\n@Deserializer('ArrayExpression')\nexport class ArrayExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression {\n\t\treturn new ArrayExpression(\n\t\t\tnode.elements.map(element => element ? deserializer(element) : null),\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ArrayExpression, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(element => element && visitNode(element));\n\t}\n\tconstructor(\n\t\tprivate elements: (ExpressionNode | SpreadElement | null)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tset(stack: Stack) {\n\t\tthrow new Error(\"ArrayExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack) {\n\t\treturn this.elements.map(item => item?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `[ ${this.elements.map(item => item?.toString()).toString()} ]`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n\n\n@Deserializer('ArrayPattern')\nexport class ArrayPattern extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern {\n\t\treturn new ArrayPattern(\n\t\t\tnode.elements.map(expression => expression ? deserializer(expression) : null) as DeclarationExpression[],\n\t\t\tnode.range,\n\t\t\tnode.loc\n\t\t);\n\t}\n\tstatic visit(node: ArrayPattern, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(expression => expression && visitNode(expression));\n\t}\n\tconstructor(\n\t\tprivate elements: (DeclarationExpression | null)[],\n\t\trange?: [number, number],\n\t\tloc?: SourceLocation) {\n\t\tsuper(range, loc);\n\t}\n\tgetElements() {\n\t\treturn this.elements;\n\t}\n\tset(stack: Stack, values: any) {\n\t\tthrow new Error('ArrayPattern#set() has no implementation.');\n\t}\n\tget(scopeProvider: Stack) {\n\t\tthrow new Error('ArrayPattern#get() has no implementation.');\n\t}\n\tdeclareVariable(stack: Stack, values: any) {\n\t\tif (Array.isArray(values)) {\n\t\t\tthis.declareVariableFromArray(stack, values);\n\t\t} else if (Reflect.has(values, Symbol.iterator)) {\n\t\t\tthis.declareVariableFromIterator(stack, values);\n\t\t}\n\t}\n\tdeclareVariableFromArray(stack: Stack, values: any[]) {\n\t\tfor (let index = 0; index < this.elements.length; index++) {\n\t\t\tconst elem = this.elements[index];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = values.slice(index);\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, values[index]);\n\t\t}\n\t}\n\tdeclareVariableFromIterator(stack: Stack, iterator: Iterator<any>) {\n\t\tlet index = 0;\n\t\twhile (true) {\n\t\t\tlet iteratorResult = iterator.next();\n\t\t\tif (iteratorResult.done) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst elem = this.elements[index++];\n\t\t\tif (elem == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (elem instanceof RestElement) {\n\t\t\t\tconst rest = [iteratorResult.value];\n\t\t\t\twhile (!iteratorResult.done) {\n\t\t\t\t\titeratorResult = iterator.next();\n\t\t\t\t\trest.push(iteratorResult.value);\n\t\t\t\t}\n\t\t\t\telem.declareVariable(stack, rest);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telem.declareVariable(stack, iteratorResult.value);\n\t\t\tif (index >= this.elements.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.filter(item => item).flatMap(item => item!.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\treturn `[ ${this.elements.map(item => item?.toString()).toString()} ]`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\telements: this.elements.map(item => item?.toJSON())\n\t\t};\n\t}\n}\n"]}