@ibyar/expressions 0.5.0 → 0.5.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.
- package/README.md +96 -1
- package/api/abstract.d.ts +3 -4
- package/api/abstract.js +1 -1
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +196 -0
- package/api/class/class.js +594 -0
- package/api/class/class.js.map +1 -0
- package/api/class/decorator.d.ts +20 -0
- package/api/class/decorator.js +48 -0
- package/api/class/decorator.js.map +1 -0
- package/api/computing/call.d.ts +3 -1
- package/api/computing/call.js +16 -4
- package/api/computing/call.js.map +1 -1
- package/api/computing/new.d.ts +2 -1
- package/api/computing/new.js +4 -0
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +3 -3
- package/api/computing/rest.js +5 -2
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +2 -1
- package/api/computing/return.js +3 -0
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +2 -1
- package/api/computing/spread.js +5 -2
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +2 -1
- package/api/computing/throw.js +3 -0
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +2 -1
- package/api/computing/yield.js +3 -0
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +6 -7
- package/api/definition/array.js +13 -13
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +2 -2
- package/api/definition/bind.js +1 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/function.d.ts +8 -8
- package/api/definition/function.js +25 -25
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +2 -2
- package/api/definition/member.js +1 -1
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +7 -7
- package/api/definition/object.js +9 -9
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +2 -2
- package/api/definition/statement.js +2 -2
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +5 -4
- package/api/definition/values.js +7 -4
- package/api/definition/values.js.map +1 -1
- package/api/expression.d.ts +9 -12
- package/api/expression.js.map +1 -1
- package/api/{app → module/app}/program.d.ts +8 -9
- package/api/module/app/program.js +45 -0
- package/api/module/app/program.js.map +1 -0
- package/api/module/export.d.ts +60 -25
- package/api/module/export.js +230 -60
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +66 -25
- package/api/module/import.js +236 -68
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.d.ts +2 -2
- package/api/operators/assignment.js +1 -1
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +2 -2
- package/api/operators/await.js +1 -1
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.d.ts +2 -2
- package/api/operators/binary.js +1 -1
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +2 -2
- package/api/operators/chaining.js +1 -1
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +2 -2
- package/api/operators/comma.js +2 -2
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +2 -2
- package/api/operators/grouping.js +1 -1
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.d.ts +2 -2
- package/api/operators/logical.js +1 -1
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +2 -2
- package/api/operators/pipeline.js +1 -1
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +2 -2
- package/api/operators/ternary.js +1 -1
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +3 -3
- package/api/operators/unary.js +4 -3
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +2 -2
- package/api/operators/update.js +1 -1
- package/api/operators/update.js.map +1 -1
- package/api/statement/control/block.d.ts +3 -3
- package/api/statement/control/block.js +2 -2
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +1 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +2 -2
- package/api/statement/control/if.js +1 -1
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +4 -5
- package/api/statement/control/switch.js +5 -6
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +3 -3
- package/api/statement/control/terminate.js +2 -2
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +13 -11
- package/api/statement/declarations/declares.js +26 -18
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +5 -5
- package/api/statement/iterations/for.js +7 -7
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +3 -3
- package/api/statement/iterations/while.js +2 -2
- package/api/statement/iterations/while.js.map +1 -1
- package/api/utils.d.ts +3 -0
- package/api/utils.js +2 -0
- package/api/utils.js.map +1 -0
- package/package.json +4 -4
- package/scope/event.d.ts +2 -2
- package/scope/event.js +8 -14
- package/scope/event.js.map +1 -1
- package/scope/finalizer.d.ts +4 -0
- package/scope/finalizer.js +11 -0
- package/scope/finalizer.js.map +1 -0
- package/scope/proxy.d.ts +2 -1
- package/scope/proxy.js +18 -2
- package/scope/proxy.js.map +1 -1
- package/scope/scope.d.ts +57 -40
- package/scope/scope.js +123 -106
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +41 -24
- package/scope/stack.js +148 -102
- package/scope/stack.js.map +1 -1
- package/v8/app.js.map +1 -1
- package/v8/parser.d.ts +1 -1
- package/v8/parser.js +3 -2
- package/v8/parser.js.map +1 -1
- package/visit/visitor.js +4 -7
- package/visit/visitor.js.map +1 -1
- package/api/app/class.d.ts +0 -117
- package/api/app/class.js +0 -292
- package/api/app/class.js.map +0 -1
- package/api/app/program.js +0 -39
- package/api/app/program.js.map +0 -1
- package/api/module/module.d.ts +0 -26
- package/api/module/module.js +0 -63
- package/api/module/module.js.map +0 -1
package/api/computing/yield.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath } from '../expression.js';
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode, YieldDelegateValue, YieldValue } from '../abstract.js';
|
|
@@ -6,6 +6,7 @@ export declare class YieldExpression extends AbstractExpressionNode {
|
|
|
6
6
|
private delegate;
|
|
7
7
|
private argument?;
|
|
8
8
|
static fromJSON(node: YieldExpression, deserializer: NodeDeserializer): YieldExpression;
|
|
9
|
+
static visit(node: YieldExpression, visitNode: VisitNodeType): void;
|
|
9
10
|
constructor(delegate: boolean, argument?: ExpressionNode | undefined);
|
|
10
11
|
getArgument(): ExpressionNode | undefined;
|
|
11
12
|
shareVariables(scopeList: Scope<any>[]): void;
|
package/api/computing/yield.js
CHANGED
|
@@ -11,6 +11,9 @@ let YieldExpression = YieldExpression_1 = class YieldExpression extends Abstract
|
|
|
11
11
|
static fromJSON(node, deserializer) {
|
|
12
12
|
return new YieldExpression_1(node.delegate, node.argument ? deserializer(node.argument) : void 0);
|
|
13
13
|
}
|
|
14
|
+
static visit(node, visitNode) {
|
|
15
|
+
node.argument && visitNode(node.argument);
|
|
16
|
+
}
|
|
14
17
|
getArgument() {
|
|
15
18
|
return this.argument;
|
|
16
19
|
}
|
|
@@ -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;AAG7D,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,sBAAsB;
|
|
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;AAG7D,IAAa,eAAe,uBAA5B,MAAa,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,12 +1,11 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, CanDeclareExpression, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, CanDeclareExpression, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
5
|
-
import { ScopeType } from '../../scope/scope.js';
|
|
6
5
|
export declare class ArrayExpression extends AbstractExpressionNode {
|
|
7
6
|
private elements;
|
|
8
7
|
static fromJSON(node: ArrayExpression, deserializer: NodeDeserializer): ArrayExpression;
|
|
9
|
-
static visit(node: ArrayExpression, visitNode: VisitNodeType
|
|
8
|
+
static visit(node: ArrayExpression, visitNode: VisitNodeType): void;
|
|
10
9
|
constructor(elements: ExpressionNode[]);
|
|
11
10
|
getElements(): ExpressionNode[];
|
|
12
11
|
shareVariables(scopeList: Scope<any>[]): void;
|
|
@@ -20,15 +19,15 @@ export declare class ArrayExpression extends AbstractExpressionNode {
|
|
|
20
19
|
export declare class ArrayPattern extends AbstractExpressionNode implements CanDeclareExpression {
|
|
21
20
|
private elements;
|
|
22
21
|
static fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern;
|
|
23
|
-
static visit(node: ArrayPattern, visitNode: VisitNodeType
|
|
22
|
+
static visit(node: ArrayPattern, visitNode: VisitNodeType): void;
|
|
24
23
|
constructor(elements: CanDeclareExpression[]);
|
|
25
24
|
getElements(): CanDeclareExpression[];
|
|
26
25
|
shareVariables(scopeList: Scope<any>[]): void;
|
|
27
26
|
set(stack: Stack, values: any): void;
|
|
28
27
|
get(scopeProvider: Stack): void;
|
|
29
|
-
declareVariable(stack: Stack,
|
|
30
|
-
declareVariableFromArray(stack: Stack,
|
|
31
|
-
declareVariableFromIterator(stack: Stack,
|
|
28
|
+
declareVariable(stack: Stack, values: any): void;
|
|
29
|
+
declareVariableFromArray(stack: Stack, values: any[]): void;
|
|
30
|
+
declareVariableFromIterator(stack: Stack, iterator: Iterator<any>): void;
|
|
32
31
|
dependency(computed?: true): ExpressionNode[];
|
|
33
32
|
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
34
33
|
toString(): string;
|
package/api/definition/array.js
CHANGED
|
@@ -11,8 +11,8 @@ let ArrayExpression = ArrayExpression_1 = class ArrayExpression extends Abstract
|
|
|
11
11
|
static fromJSON(node, deserializer) {
|
|
12
12
|
return new ArrayExpression_1(node.elements.map(expression => deserializer(expression)));
|
|
13
13
|
}
|
|
14
|
-
static visit(node, visitNode
|
|
15
|
-
|
|
14
|
+
static visit(node, visitNode) {
|
|
15
|
+
node.elements.forEach(visitNode);
|
|
16
16
|
}
|
|
17
17
|
getElements() {
|
|
18
18
|
return this.elements;
|
|
@@ -54,8 +54,8 @@ let ArrayPattern = ArrayPattern_1 = class ArrayPattern extends AbstractExpressio
|
|
|
54
54
|
static fromJSON(node, deserializer) {
|
|
55
55
|
return new ArrayPattern_1(node.elements.map(expression => deserializer(expression)));
|
|
56
56
|
}
|
|
57
|
-
static visit(node, visitNode
|
|
58
|
-
|
|
57
|
+
static visit(node, visitNode) {
|
|
58
|
+
node.elements.forEach(visitNode);
|
|
59
59
|
}
|
|
60
60
|
getElements() {
|
|
61
61
|
return this.elements;
|
|
@@ -67,26 +67,26 @@ let ArrayPattern = ArrayPattern_1 = class ArrayPattern extends AbstractExpressio
|
|
|
67
67
|
get(scopeProvider) {
|
|
68
68
|
throw new Error('ArrayPattern#get() has no implementation.');
|
|
69
69
|
}
|
|
70
|
-
declareVariable(stack,
|
|
70
|
+
declareVariable(stack, values) {
|
|
71
71
|
if (Array.isArray(values)) {
|
|
72
|
-
this.declareVariableFromArray(stack,
|
|
72
|
+
this.declareVariableFromArray(stack, values);
|
|
73
73
|
}
|
|
74
74
|
else if (Reflect.has(values, Symbol.iterator)) {
|
|
75
|
-
this.declareVariableFromIterator(stack,
|
|
75
|
+
this.declareVariableFromIterator(stack, values);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
declareVariableFromArray(stack,
|
|
78
|
+
declareVariableFromArray(stack, values) {
|
|
79
79
|
for (let index = 0; index < this.elements.length; index++) {
|
|
80
80
|
const elem = this.elements[index];
|
|
81
81
|
if (elem instanceof RestElement) {
|
|
82
82
|
const rest = values.slice(index);
|
|
83
|
-
elem.declareVariable(stack,
|
|
83
|
+
elem.declareVariable(stack, rest);
|
|
84
84
|
break;
|
|
85
85
|
}
|
|
86
|
-
elem.declareVariable(stack,
|
|
86
|
+
elem.declareVariable(stack, values[index]);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
declareVariableFromIterator(stack,
|
|
89
|
+
declareVariableFromIterator(stack, iterator) {
|
|
90
90
|
let index = 0;
|
|
91
91
|
while (true) {
|
|
92
92
|
let iteratorResult = iterator.next();
|
|
@@ -100,10 +100,10 @@ let ArrayPattern = ArrayPattern_1 = class ArrayPattern extends AbstractExpressio
|
|
|
100
100
|
iteratorResult = iterator.next();
|
|
101
101
|
rest.push(iteratorResult.value);
|
|
102
102
|
}
|
|
103
|
-
elem.declareVariable(stack,
|
|
103
|
+
elem.declareVariable(stack, rest);
|
|
104
104
|
break;
|
|
105
105
|
}
|
|
106
|
-
elem.declareVariable(stack,
|
|
106
|
+
elem.declareVariable(stack, iteratorResult.value);
|
|
107
107
|
if (index >= this.elements.length) {
|
|
108
108
|
break;
|
|
109
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/array.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
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, CanDeclareExpression,\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';\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(expression => deserializer(expression)));\n\t}\n\tstatic visit(node: ArrayExpression, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(visitNode);\n\t}\n\tconstructor(private elements: ExpressionNode[]) {\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.flatMap(item => item.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.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 CanDeclareExpression {\n\tstatic fromJSON(node: ArrayPattern, deserializer: NodeDeserializer): ArrayPattern {\n\t\treturn new ArrayPattern(node.elements.map(expression => deserializer(expression)) as CanDeclareExpression[]);\n\t}\n\tstatic visit(node: ArrayPattern, visitNode: VisitNodeType): void {\n\t\tnode.elements.forEach(visitNode);\n\t}\n\tconstructor(private elements: CanDeclareExpression[]) {\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 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 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.flatMap(item => item.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.elements.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"]}
|
package/api/definition/bind.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NodeDeserializer, ExpressionNode, CanFindScope, ExpressionEventPath, VisitNodeType
|
|
1
|
+
import type { NodeDeserializer, ExpressionNode, CanFindScope, ExpressionEventPath, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Scope } from '../../scope/scope.js';
|
|
3
3
|
import type { Stack } from '../../scope/stack.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -8,7 +8,7 @@ export declare class BindExpression extends AbstractExpressionNode implements Ca
|
|
|
8
8
|
private computed;
|
|
9
9
|
private optional;
|
|
10
10
|
static fromJSON(node: BindExpression, deserializer: NodeDeserializer): BindExpression;
|
|
11
|
-
static visit(node: BindExpression, visitNode: VisitNodeType
|
|
11
|
+
static visit(node: BindExpression, visitNode: VisitNodeType): void;
|
|
12
12
|
constructor(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean);
|
|
13
13
|
getObject(): ExpressionNode;
|
|
14
14
|
getProperty(): ExpressionNode;
|
package/api/definition/bind.js
CHANGED
|
@@ -13,7 +13,7 @@ let BindExpression = BindExpression_1 = class BindExpression extends AbstractExp
|
|
|
13
13
|
static fromJSON(node, deserializer) {
|
|
14
14
|
return new BindExpression_1(deserializer(node.object), deserializer(node.property), node.computed, node.optional);
|
|
15
15
|
}
|
|
16
|
-
static visit(node, visitNode
|
|
16
|
+
static visit(node, visitNode) {
|
|
17
17
|
visitNode(node.object);
|
|
18
18
|
visitNode(node.property);
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/bind.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../../src/expressions/api/definition/bind.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode, CanFindScope,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Scope } from '../../scope/scope.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\nimport { AbstractExpressionNode } from '../abstract.js';\n\n/**\n * ```js\n * const x = {method: function(){...}};\n * const z = x::method;\n * ```\n */\n@Deserializer('BindExpression')\nexport class BindExpression extends AbstractExpressionNode implements CanFindScope {\n\tstatic fromJSON(node: BindExpression, deserializer: NodeDeserializer): BindExpression {\n\t\treturn new BindExpression(\n\t\t\tdeserializer(node.object),\n\t\t\tdeserializer(node.property),\n\t\t\tnode.computed,\n\t\t\tnode.optional\n\t\t);\n\t}\n\tstatic visit(node: BindExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.object);\n\t\tvisitNode(node.property);\n\t}\n\tconstructor(\n\t\tprotected object: ExpressionNode,\n\t\tprotected property: ExpressionNode,\n\t\tprivate computed: boolean,\n\t\tprivate optional: boolean = false) {\n\t\tsuper();\n\t}\n\tgetObject() {\n\t\treturn this.object;\n\t}\n\tgetProperty() {\n\t\treturn this.property;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void { }\n\tset(stack: Stack) {\n\t\tthrow new Error(\"BindExpression#set() has no implementation.\");\n\t}\n\tget(stack: Stack, thisContext?: any) {\n\t\tconst objectRef = thisContext ?? this.object.get(stack);\n\t\tif (typeof objectRef === 'undefined') {\n\t\t\tthrow new TypeError(`Cannot read property '${this.property.toString()}' of undefined`);\n\t\t}\n\t\tlet value;\n\t\tif (this.computed) {\n\t\t\tvalue = objectRef[this.property.get(stack)];\n\t\t} else {\n\t\t\tvalue = this.property.get(stack, objectRef);\n\t\t}\n\t\tif (this.optional && (value === undefined || value === null)) {\n\t\t\treturn;\n\t\t}\n\t\tif (typeof value !== 'function') {\n\t\t\tthrow new Error(`can't bind to non-function type ${value}`);\n\t\t}\n\t\treturn (<Function>value).bind(objectRef);\n\t}\n\tfindScope<T extends object>(stack: Stack): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, scope: Scope<any>): Scope<T>;\n\tfindScope<T extends object>(stack: Stack, objectScope?: Scope<any>): Scope<T> | undefined {\n\t\tif (!objectScope) {\n\t\t\tobjectScope = (this.object as ExpressionNode & CanFindScope).findScope(stack);\n\t\t}\n\t\treturn (this.property as ExpressionNode & CanFindScope).findScope(stack, objectScope);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.object.dependency(computed).concat(this.property.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.object.dependencyPath(computed).concat(this.property.dependencyPath(computed));\n\t}\n\ttoString() {\n\t\tif (this.computed) {\n\t\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}[${this.property.toString()}]`;\n\t\t}\n\t\treturn `${this.object.toString()}${this.optional ? '?::' : '::'}${this.property.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tobject: this.object.toJSON(),\n\t\t\tproperty: this.property.toJSON(),\n\t\t\tcomputed: this.computed,\n\t\t\toptional: this.optional\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CanDeclareExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer,
|
|
1
|
+
import type { CanDeclareExpression, ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../expression.js';
|
|
2
2
|
import type { Stack } from '../../scope/stack.js';
|
|
3
3
|
import { Scope } from '../../scope/scope.js';
|
|
4
4
|
import { AbstractExpressionNode } from '../abstract.js';
|
|
@@ -26,7 +26,7 @@ export declare class Param extends AbstractExpressionNode {
|
|
|
26
26
|
private identifier;
|
|
27
27
|
private defaultValue?;
|
|
28
28
|
static fromJSON(node: Param, deserializer: NodeDeserializer): Param;
|
|
29
|
-
static visit(node: Param, visitNode: VisitNodeType
|
|
29
|
+
static visit(node: Param, visitNode: VisitNodeType): void;
|
|
30
30
|
constructor(identifier: CanDeclareExpression, defaultValue?: ExpressionNode | undefined);
|
|
31
31
|
getIdentifier(): CanDeclareExpression;
|
|
32
32
|
getDefaultValue(): ExpressionNode | undefined;
|
|
@@ -52,7 +52,7 @@ export declare class FunctionExpression extends FunctionBaseExpression {
|
|
|
52
52
|
protected rest?: boolean | undefined;
|
|
53
53
|
protected generator?: boolean | undefined;
|
|
54
54
|
static fromJSON(node: FunctionExpression, deserializer: NodeDeserializer): FunctionExpression;
|
|
55
|
-
static visit(node: FunctionExpression, visitNode: VisitNodeType
|
|
55
|
+
static visit(node: FunctionExpression, visitNode: VisitNodeType): void;
|
|
56
56
|
constructor(params: ExpressionNode[], body: ExpressionNode[], kind: FunctionKind, id?: CanDeclareExpression | undefined, rest?: boolean | undefined, generator?: boolean | undefined);
|
|
57
57
|
getParams(): ExpressionNode[];
|
|
58
58
|
getBody(): ExpressionNode[];
|
|
@@ -60,7 +60,7 @@ export declare class FunctionExpression extends FunctionBaseExpression {
|
|
|
60
60
|
getId(): CanDeclareExpression | undefined;
|
|
61
61
|
getRest(): boolean | undefined;
|
|
62
62
|
set(stack: Stack, value: Function): void;
|
|
63
|
-
|
|
63
|
+
setParameter(stack: Stack, args: any[]): void;
|
|
64
64
|
get(stack: Stack): Function;
|
|
65
65
|
dependency(computed?: true): ExpressionNode[];
|
|
66
66
|
dependencyPath(computed?: true): ExpressionEventPath[];
|
|
@@ -69,9 +69,9 @@ export declare class FunctionExpression extends FunctionBaseExpression {
|
|
|
69
69
|
}
|
|
70
70
|
export declare class FunctionDeclaration extends FunctionExpression {
|
|
71
71
|
static fromJSON(node: FunctionDeclaration, deserializer: NodeDeserializer): FunctionDeclaration;
|
|
72
|
-
static visit(node: FunctionDeclaration, visitNode: VisitNodeType
|
|
73
|
-
protected id
|
|
74
|
-
constructor(params: ExpressionNode[], body: ExpressionNode[], kind: FunctionKind, id
|
|
72
|
+
static visit(node: FunctionDeclaration, visitNode: VisitNodeType): void;
|
|
73
|
+
protected id?: CanDeclareExpression;
|
|
74
|
+
constructor(params: ExpressionNode[], body: ExpressionNode[], kind: FunctionKind, id?: CanDeclareExpression, rest?: boolean, generator?: boolean);
|
|
75
75
|
}
|
|
76
76
|
export declare class ArrowFunctionExpression extends FunctionBaseExpression {
|
|
77
77
|
private params;
|
|
@@ -80,7 +80,7 @@ export declare class ArrowFunctionExpression extends FunctionBaseExpression {
|
|
|
80
80
|
private rest?;
|
|
81
81
|
private generator?;
|
|
82
82
|
static fromJSON(node: ArrowFunctionExpression, deserializer: NodeDeserializer): ArrowFunctionExpression;
|
|
83
|
-
static visit(node: ArrowFunctionExpression, visitNode: VisitNodeType
|
|
83
|
+
static visit(node: ArrowFunctionExpression, visitNode: VisitNodeType): void;
|
|
84
84
|
constructor(params: ExpressionNode[], body: ExpressionNode | ExpressionNode[], kind: ArrowFunctionType, rest?: boolean | undefined, generator?: boolean | undefined);
|
|
85
85
|
getParams(): ExpressionNode[];
|
|
86
86
|
getBody(): ExpressionNode | ExpressionNode[];
|
|
@@ -35,7 +35,7 @@ let Param = Param_1 = class Param extends AbstractExpressionNode {
|
|
|
35
35
|
static fromJSON(node, deserializer) {
|
|
36
36
|
return new Param_1(deserializer(node.identifier), node.defaultValue ? deserializer(node.defaultValue) : void 0);
|
|
37
37
|
}
|
|
38
|
-
static visit(node, visitNode
|
|
38
|
+
static visit(node, visitNode) {
|
|
39
39
|
visitNode(node.identifier);
|
|
40
40
|
node.defaultValue && visitNode(node.defaultValue);
|
|
41
41
|
}
|
|
@@ -49,7 +49,7 @@ let Param = Param_1 = class Param extends AbstractExpressionNode {
|
|
|
49
49
|
this.defaultValue?.shareVariables(scopeList);
|
|
50
50
|
}
|
|
51
51
|
set(stack, value) {
|
|
52
|
-
this.identifier.declareVariable?.(stack,
|
|
52
|
+
this.identifier.declareVariable?.(stack, value);
|
|
53
53
|
}
|
|
54
54
|
get(stack) {
|
|
55
55
|
throw new Error('Param#get() has no implementation.');
|
|
@@ -81,7 +81,7 @@ export class FunctionBaseExpression extends AbstractExpressionNode {
|
|
|
81
81
|
this.sharedVariables = scopeList;
|
|
82
82
|
}
|
|
83
83
|
initFunctionScope(stack) {
|
|
84
|
-
const scope = Scope.
|
|
84
|
+
const scope = Scope.blockScope();
|
|
85
85
|
const innerScopes = this.sharedVariables ? this.sharedVariables.slice() : [];
|
|
86
86
|
innerScopes.push(scope);
|
|
87
87
|
innerScopes.forEach(variableScope => stack.pushScope(variableScope));
|
|
@@ -104,10 +104,10 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
104
104
|
static fromJSON(node, deserializer) {
|
|
105
105
|
return new FunctionExpression_1(node.params.map(deserializer), node.body.map(deserializer), FunctionKind[node.kind], node.id ? deserializer(node.id) : void 0, node.rest, node.generator);
|
|
106
106
|
}
|
|
107
|
-
static visit(node, visitNode
|
|
107
|
+
static visit(node, visitNode) {
|
|
108
108
|
node.id && visitNode(node.id);
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
node.params.forEach(visitNode);
|
|
110
|
+
node.body.forEach(visitNode);
|
|
111
111
|
}
|
|
112
112
|
getParams() {
|
|
113
113
|
return this.params;
|
|
@@ -143,7 +143,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
143
143
|
case FunctionKind.ASYNC:
|
|
144
144
|
func = async function (...args) {
|
|
145
145
|
const innerScopes = self.initFunctionScope(stack);
|
|
146
|
-
stack.declareVariable('
|
|
146
|
+
stack.declareVariable('this', this);
|
|
147
147
|
self.setParameter(stack, args);
|
|
148
148
|
let returnValue;
|
|
149
149
|
for (const statement of self.body) {
|
|
@@ -153,7 +153,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
153
153
|
for (const awaitRef of stack.awaitPromise) {
|
|
154
154
|
const awaitValue = await awaitRef.promise;
|
|
155
155
|
if (awaitRef.declareVariable) {
|
|
156
|
-
awaitRef.node.declareVariable(stack,
|
|
156
|
+
awaitRef.node.declareVariable(stack, awaitValue);
|
|
157
157
|
}
|
|
158
158
|
else {
|
|
159
159
|
awaitRef.node.set(stack, awaitValue);
|
|
@@ -192,7 +192,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
192
192
|
case FunctionKind.GENERATOR:
|
|
193
193
|
func = function* (...args) {
|
|
194
194
|
const innerScopes = self.initFunctionScope(stack);
|
|
195
|
-
stack.declareVariable('
|
|
195
|
+
stack.declareVariable('this', this);
|
|
196
196
|
self.setParameter(stack, args);
|
|
197
197
|
let returnValue;
|
|
198
198
|
for (const statement of self.body) {
|
|
@@ -215,7 +215,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
215
215
|
case FunctionKind.ASYNC_GENERATOR:
|
|
216
216
|
func = async function* (...args) {
|
|
217
217
|
const innerScopes = self.initFunctionScope(stack);
|
|
218
|
-
stack.declareVariable('
|
|
218
|
+
stack.declareVariable('this', this);
|
|
219
219
|
self.setParameter(stack, args);
|
|
220
220
|
let returnValue;
|
|
221
221
|
for (const statement of self.body) {
|
|
@@ -225,7 +225,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
225
225
|
for (const awaitRef of stack.awaitPromise) {
|
|
226
226
|
const awaitValue = await awaitRef.promise;
|
|
227
227
|
if (awaitRef.declareVariable) {
|
|
228
|
-
awaitRef.node.declareVariable(stack,
|
|
228
|
+
awaitRef.node.declareVariable(stack, awaitValue);
|
|
229
229
|
}
|
|
230
230
|
else {
|
|
231
231
|
awaitRef.node.set(stack, awaitValue);
|
|
@@ -274,7 +274,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
274
274
|
case FunctionKind.NORMAL:
|
|
275
275
|
func = function (...args) {
|
|
276
276
|
const innerScopes = self.initFunctionScope(stack);
|
|
277
|
-
stack.declareVariable('
|
|
277
|
+
stack.declareVariable('this', this);
|
|
278
278
|
self.setParameter(stack, args);
|
|
279
279
|
let returnValue;
|
|
280
280
|
for (const statement of self.body) {
|
|
@@ -289,7 +289,7 @@ let FunctionExpression = FunctionExpression_1 = class FunctionExpression extends
|
|
|
289
289
|
};
|
|
290
290
|
break;
|
|
291
291
|
}
|
|
292
|
-
this.id?.declareVariable(stack,
|
|
292
|
+
this.id?.declareVariable(stack, func);
|
|
293
293
|
return func;
|
|
294
294
|
}
|
|
295
295
|
dependency(computed) {
|
|
@@ -341,16 +341,16 @@ FunctionExpression = FunctionExpression_1 = __decorate([
|
|
|
341
341
|
], FunctionExpression);
|
|
342
342
|
export { FunctionExpression };
|
|
343
343
|
let FunctionDeclaration = FunctionDeclaration_1 = class FunctionDeclaration extends FunctionExpression {
|
|
344
|
-
constructor(params, body, kind, id, rest, generator) {
|
|
345
|
-
super(params, body, kind, id, rest, generator);
|
|
346
|
-
}
|
|
347
344
|
static fromJSON(node, deserializer) {
|
|
348
|
-
return new FunctionDeclaration_1(node.params.map(deserializer), node.body.map(deserializer), FunctionKind[node.kind], deserializer(node.id), node.rest, node.generator);
|
|
345
|
+
return new FunctionDeclaration_1(node.params.map(deserializer), node.body.map(deserializer), FunctionKind[node.kind], node.id ? deserializer(node.id) : void 0, node.rest, node.generator);
|
|
349
346
|
}
|
|
350
|
-
static visit(node, visitNode
|
|
351
|
-
visitNode(node.id);
|
|
352
|
-
|
|
353
|
-
|
|
347
|
+
static visit(node, visitNode) {
|
|
348
|
+
node.id && visitNode(node.id);
|
|
349
|
+
node.params.forEach(visitNode);
|
|
350
|
+
node.body.forEach(visitNode);
|
|
351
|
+
}
|
|
352
|
+
constructor(params, body, kind, id, rest, generator) {
|
|
353
|
+
super(params, body, kind, id, rest, generator);
|
|
354
354
|
}
|
|
355
355
|
};
|
|
356
356
|
FunctionDeclaration = FunctionDeclaration_1 = __decorate([
|
|
@@ -372,10 +372,10 @@ let ArrowFunctionExpression = ArrowFunctionExpression_1 = class ArrowFunctionExp
|
|
|
372
372
|
? node.body.map(deserializer)
|
|
373
373
|
: deserializer(node.body), ArrowFunctionType[node.kind], node.rest, node.generator);
|
|
374
374
|
}
|
|
375
|
-
static visit(node, visitNode
|
|
376
|
-
|
|
375
|
+
static visit(node, visitNode) {
|
|
376
|
+
node.params.forEach(visitNode);
|
|
377
377
|
Array.isArray(node.body)
|
|
378
|
-
?
|
|
378
|
+
? node.body.forEach(visitNode)
|
|
379
379
|
: visitNode(node.body);
|
|
380
380
|
}
|
|
381
381
|
getParams() {
|
|
@@ -415,7 +415,7 @@ let ArrowFunctionExpression = ArrowFunctionExpression_1 = class ArrowFunctionExp
|
|
|
415
415
|
for (const awaitRef of stack.awaitPromise) {
|
|
416
416
|
const awaitValue = await awaitRef.promise;
|
|
417
417
|
if (awaitRef.declareVariable) {
|
|
418
|
-
awaitRef.node.declareVariable(stack,
|
|
418
|
+
awaitRef.node.declareVariable(stack, awaitValue);
|
|
419
419
|
}
|
|
420
420
|
else {
|
|
421
421
|
awaitRef.node.set(stack, awaitValue);
|