@ibyar/expressions 0.6.1 → 0.8.3
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 +7 -2
- package/api/abstract.d.ts +0 -3
- package/api/abstract.js +0 -4
- package/api/abstract.js.map +1 -1
- package/api/class/class.d.ts +85 -43
- package/api/class/class.js +232 -169
- package/api/class/class.js.map +1 -1
- package/api/class/decorator.d.ts +0 -2
- package/api/class/decorator.js +0 -3
- package/api/class/decorator.js.map +1 -1
- package/api/computing/call.d.ts +0 -2
- package/api/computing/call.js +0 -3
- package/api/computing/call.js.map +1 -1
- package/api/computing/debugger.d.ts +0 -2
- package/api/computing/debugger.js +0 -2
- package/api/computing/debugger.js.map +1 -1
- package/api/computing/new.d.ts +0 -2
- package/api/computing/new.js +0 -3
- package/api/computing/new.js.map +1 -1
- package/api/computing/rest.d.ts +0 -2
- package/api/computing/rest.js +0 -3
- package/api/computing/rest.js.map +1 -1
- package/api/computing/return.d.ts +0 -2
- package/api/computing/return.js +0 -3
- package/api/computing/return.js.map +1 -1
- package/api/computing/spread.d.ts +0 -2
- package/api/computing/spread.js +0 -3
- package/api/computing/spread.js.map +1 -1
- package/api/computing/throw.d.ts +0 -4
- package/api/computing/throw.js +0 -5
- package/api/computing/throw.js.map +1 -1
- package/api/computing/yield.d.ts +0 -2
- package/api/computing/yield.js +0 -3
- package/api/computing/yield.js.map +1 -1
- package/api/definition/array.d.ts +0 -3
- package/api/definition/array.js +0 -4
- package/api/definition/array.js.map +1 -1
- package/api/definition/bind.d.ts +0 -1
- package/api/definition/bind.js +0 -1
- package/api/definition/bind.js.map +1 -1
- package/api/definition/comment.d.ts +0 -2
- package/api/definition/comment.js +0 -1
- package/api/definition/comment.js.map +1 -1
- package/api/definition/function.d.ts +3 -11
- package/api/definition/function.js +33 -56
- package/api/definition/function.js.map +1 -1
- package/api/definition/member.d.ts +0 -1
- package/api/definition/member.js +1 -2
- package/api/definition/member.js.map +1 -1
- package/api/definition/object.d.ts +1 -5
- package/api/definition/object.js +2 -8
- package/api/definition/object.js.map +1 -1
- package/api/definition/statement.d.ts +0 -2
- package/api/definition/statement.js +0 -3
- package/api/definition/statement.js.map +1 -1
- package/api/definition/values.d.ts +6 -9
- package/api/definition/values.js +9 -20
- package/api/definition/values.js.map +1 -1
- package/api/expression.d.ts +0 -20
- package/api/expression.js.map +1 -1
- package/api/module/common.d.ts +1 -2
- package/api/module/common.js +3 -3
- package/api/module/common.js.map +1 -1
- package/api/module/export.d.ts +0 -5
- package/api/module/export.js +5 -9
- package/api/module/export.js.map +1 -1
- package/api/module/import.d.ts +2 -6
- package/api/module/import.js +4 -9
- package/api/module/import.js.map +1 -1
- package/api/operators/assignment.js.map +1 -1
- package/api/operators/await.d.ts +0 -2
- package/api/operators/await.js +0 -3
- package/api/operators/await.js.map +1 -1
- package/api/operators/binary.js.map +1 -1
- package/api/operators/chaining.d.ts +0 -1
- package/api/operators/chaining.js +0 -1
- package/api/operators/chaining.js.map +1 -1
- package/api/operators/comma.d.ts +0 -2
- package/api/operators/comma.js +0 -3
- package/api/operators/comma.js.map +1 -1
- package/api/operators/grouping.d.ts +0 -2
- package/api/operators/grouping.js +0 -3
- package/api/operators/grouping.js.map +1 -1
- package/api/operators/logical.js.map +1 -1
- package/api/operators/pipeline.d.ts +1 -3
- package/api/operators/pipeline.js +0 -7
- package/api/operators/pipeline.js.map +1 -1
- package/api/operators/ternary.d.ts +0 -2
- package/api/operators/ternary.js +0 -5
- package/api/operators/ternary.js.map +1 -1
- package/api/operators/unary.d.ts +0 -2
- package/api/operators/unary.js +0 -3
- package/api/operators/unary.js.map +1 -1
- package/api/operators/update.d.ts +0 -2
- package/api/operators/update.js +0 -3
- package/api/operators/update.js.map +1 -1
- package/api/program.d.ts +0 -2
- package/api/program.js +0 -1
- package/api/program.js.map +1 -1
- package/api/statement/control/block.d.ts +0 -2
- package/api/statement/control/block.js +3 -8
- package/api/statement/control/block.js.map +1 -1
- package/api/statement/control/empty.d.ts +0 -2
- package/api/statement/control/empty.js +0 -1
- package/api/statement/control/empty.js.map +1 -1
- package/api/statement/control/if.d.ts +0 -2
- package/api/statement/control/if.js +0 -5
- package/api/statement/control/if.js.map +1 -1
- package/api/statement/control/switch.d.ts +0 -3
- package/api/statement/control/switch.js +0 -8
- package/api/statement/control/switch.js.map +1 -1
- package/api/statement/control/terminate.d.ts +0 -3
- package/api/statement/control/terminate.js +0 -4
- package/api/statement/control/terminate.js.map +1 -1
- package/api/statement/declarations/declares.d.ts +1 -4
- package/api/statement/declarations/declares.js +0 -6
- package/api/statement/declarations/declares.js.map +1 -1
- package/api/statement/iterations/for.d.ts +1 -6
- package/api/statement/iterations/for.js +0 -18
- package/api/statement/iterations/for.js.map +1 -1
- package/api/statement/iterations/while.d.ts +0 -3
- package/api/statement/iterations/while.js +0 -8
- package/api/statement/iterations/while.js.map +1 -1
- package/package.json +3 -3
- package/scope/scope.d.ts +6 -22
- package/scope/scope.js +12 -59
- package/scope/scope.js.map +1 -1
- package/scope/stack.d.ts +15 -3
- package/scope/stack.js +26 -9
- package/scope/stack.js.map +1 -1
- package/v8/enums.d.ts +0 -7
- package/v8/enums.js +0 -15
- package/v8/enums.js.map +1 -1
- package/v8/index.d.ts +1 -0
- package/v8/index.js +1 -0
- package/v8/index.js.map +1 -1
- package/v8/inline.d.ts +5 -2
- package/v8/inline.js +31 -17
- package/v8/inline.js.map +1 -1
- package/v8/language.d.ts +7 -0
- package/v8/language.js +16 -0
- package/v8/language.js.map +1 -0
- package/v8/nodes.d.ts +1 -1
- package/v8/parser.d.ts +2 -1
- package/v8/parser.js +2 -1
- package/v8/parser.js.map +1 -1
- package/v8/stream.d.ts +1 -1
- package/v8/stream.js +1 -1
- package/v8/stream.js.map +1 -1
- package/v8/token.d.ts +1 -1
- package/v8/token.js +1 -1
- package/v8/token.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/update.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/update.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\nexport type UpdateOperator = '++' | '--';\n\n@Deserializer('UpdateExpression')\nexport class UpdateExpression extends AbstractExpressionNode {\n\tstatic fromJSON(node: UpdateExpression, deserializer: NodeDeserializer): UpdateExpression {\n\t\treturn new UpdateExpression(node.operator, deserializer(node.argument), node.prefix);\n\t}\n\tstatic visit(node: UpdateExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.argument);\n\t}\n\n\tstatic PostfixEvaluations: { [key: string]: (num: { value: number }) => number } = {\n\t\t'++': num => { return num.value++; },\n\t\t'--': num => { return num.value--; }\n\t};\n\n\tstatic PrefixEvaluations: { [key: string]: (num: { value: number }) => number } = {\n\t\t'++': num => { return ++num.value; },\n\t\t'--': num => { return --num.value; }\n\t};\n\n\tconstructor(private operator: UpdateOperator, private argument: ExpressionNode, private prefix: boolean) {\n\t\tsuper();\n\t}\n\tgetOperator() {\n\t\treturn this.operator;\n\t}\n\tgetArgument() {\n\t\treturn this.argument;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthis.argument.set(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tconst num = { value: this.argument.get(stack) as number };\n\t\tconst returnValue = this.prefix\n\t\t\t? UpdateExpression.PrefixEvaluations[this.operator](num)\n\t\t\t: UpdateExpression.PostfixEvaluations[this.operator](num);\n\t\tthis.set(stack, num.value);\n\t\treturn returnValue;\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() {\n\t\tif (this.prefix) {\n\t\t\treturn `${this.operator}${this.argument.toString()}`;\n\t\t}\n\t\treturn `${this.argument.toString()}${this.operator}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\toperator: this.operator,\n\t\t\targument: this.argument.toJSON(),\n\t\t\tprefix: this.prefix\n\t\t};\n\t}\n\n}\n"]}
|
package/api/program.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from './expression.js';
|
|
2
|
-
import type { Scope, Context } from '../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from './abstract.js';
|
|
5
4
|
export declare type ProgramSourceType = 'script' | 'module';
|
|
@@ -9,7 +8,6 @@ export declare class Program extends AbstractExpressionNode {
|
|
|
9
8
|
static fromJSON(node: Program, deserializer: NodeDeserializer): Program;
|
|
10
9
|
static visit(node: Program, visitNode: VisitNodeType): void;
|
|
11
10
|
constructor(sourceType: ProgramSourceType, body: ExpressionNode[]);
|
|
12
|
-
shareVariables(scopeList: Scope<Context>[]): void;
|
|
13
11
|
set(stack: Stack, value: any): any;
|
|
14
12
|
get(stack: Stack): any;
|
|
15
13
|
dependency(computed?: true): ExpressionNode[];
|
package/api/program.js
CHANGED
|
@@ -14,7 +14,6 @@ let Program = Program_1 = class Program extends AbstractExpressionNode {
|
|
|
14
14
|
static visit(node, visitNode) {
|
|
15
15
|
node.body.forEach(visitNode);
|
|
16
16
|
}
|
|
17
|
-
shareVariables(scopeList) { }
|
|
18
17
|
set(stack, value) {
|
|
19
18
|
throw new Error(`Program#set() has no implementation.`);
|
|
20
19
|
}
|
package/api/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/expressions/api/program.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/expressions/api/program.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKrD,IAAM,OAAO,eAAb,MAAM,OAAQ,SAAQ,sBAAsB;IAQlD,YAAoB,UAA6B,EAAU,IAAsB;QAChF,KAAK,EAAE,CAAC;QADW,eAAU,GAAV,UAAU,CAAmB;QAAU,SAAI,GAAJ,IAAI,CAAkB;IAEjF,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,YAA8B;QAC5D,OAAO,IAAI,SAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAa,EAAE,SAAwB;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAID,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,MAAM;QACL,OAAO;YACN,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;SACpD,CAAC;IACH,CAAC;CAED,CAAA;AAlCY,OAAO;IADnB,YAAY,CAAC,SAAS,CAAC;;GACX,OAAO,CAkCnB;SAlCY,OAAO","sourcesContent":["import type {\n\tExpressionEventPath, ExpressionNode,\n\tNodeDeserializer, VisitNodeType\n} from './expression.js';\nimport type { Stack } from '../scope/stack.js';\nimport { AbstractExpressionNode } from './abstract.js';\nimport { Deserializer } from './deserialize/deserialize.js';\n\nexport type ProgramSourceType = 'script' | 'module';\n\n@Deserializer('Program')\nexport class Program extends AbstractExpressionNode {\n\n\tstatic fromJSON(node: Program, deserializer: NodeDeserializer): Program {\n\t\treturn new Program(node.sourceType, node.body.map(deserializer));\n\t}\n\tstatic visit(node: Program, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(private sourceType: ProgramSourceType, private body: ExpressionNode[]) {\n\t\tsuper();\n\t}\n\tset(stack: Stack, value: any): any {\n\t\tthrow new Error(`Program#set() has no implementation.`);\n\t}\n\tget(stack: Stack): any {\n\t\treturn this.body.map(statement => statement.get(stack)).at(-1);\n\t}\n\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.flatMap(statement => statement.dependency());\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.flatMap(statement => statement.dependencyPath());\n\t}\n\ttoString(): string {\n\t\treturn this.body.map(statement => statement.toString()).join('\\n');\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tsourceType: this.sourceType,\n\t\t\tbody: this.body.map(statement => statement.toJSON())\n\t\t};\n\t}\n\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
4
|
/**
|
|
@@ -12,7 +11,6 @@ export declare class BlockStatement extends AbstractExpressionNode {
|
|
|
12
11
|
static visit(node: BlockStatement, visitNode: VisitNodeType): void;
|
|
13
12
|
constructor(body: ExpressionNode[]);
|
|
14
13
|
getBody(): ExpressionNode[];
|
|
15
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
16
14
|
set(stack: Stack, value: any): void;
|
|
17
15
|
get(stack: Stack): any;
|
|
18
16
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -22,9 +22,6 @@ let BlockStatement = BlockStatement_1 = class BlockStatement extends AbstractExp
|
|
|
22
22
|
getBody() {
|
|
23
23
|
return this.body;
|
|
24
24
|
}
|
|
25
|
-
shareVariables(scopeList) {
|
|
26
|
-
this.body.forEach(statement => statement.shareVariables(scopeList));
|
|
27
|
-
}
|
|
28
25
|
set(stack, value) {
|
|
29
26
|
throw new Error(`BlockStatement#set() has no implementation.`);
|
|
30
27
|
}
|
|
@@ -51,12 +48,10 @@ let BlockStatement = BlockStatement_1 = class BlockStatement extends AbstractExp
|
|
|
51
48
|
return this.body.flatMap(node => node.dependencyPath(computed));
|
|
52
49
|
}
|
|
53
50
|
toString() {
|
|
54
|
-
return `{
|
|
55
|
-
${this.body
|
|
51
|
+
return `{\n${this.body
|
|
56
52
|
.map(node => ({ insert: !isDeclarationExpression(node), string: node.toString() }))
|
|
57
|
-
.map(ref =>
|
|
58
|
-
.join('\n')}
|
|
59
|
-
}`;
|
|
53
|
+
.map(ref => ` ${ref.string}${ref.insert ? ';' : ''}`)
|
|
54
|
+
.join('\n')}\n}`;
|
|
60
55
|
}
|
|
61
56
|
toJson() {
|
|
62
57
|
return { body: this.body.map(node => node.toJSON()) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/block.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/block.ts"],"names":[],"mappings":";;AAKA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;;GAGG;AAEI,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,sBAAsB;IAOzD,YAAsB,IAAsB;QAC3C,KAAK,EAAE,CAAC;QADa,SAAI,GAAJ,IAAI,CAAkB;IAE5C,CAAC;IARD,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,YAA8B;QACnE,OAAO,IAAI,gBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAoB,EAAE,SAAwB;QAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,KAAU,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACxB,IAAI,KAAK,YAAY,WAAW,EAAE;gBACjC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;aACnB;YACD,IAAI,KAAK,YAAY,mBAAmB,EAAE;gBACzC,OAAO,KAAK,CAAC;aACb;SACD;QACD,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACd,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,QAAQ;QACP,OAAO,MAAM,IAAI,CAAC,IAAI;aACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aAClF,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aACrD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,MAAM;QACL,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAA;AA/CY,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CA+C1B;SA/CY,cAAc","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from './terminate.js';\nimport { isDeclarationExpression } from '../../utils.js';\n\n/**\n * A block statement (or compound statement in other languages) is used to group zero or more statements.\n * The block is delimited by a pair of braces (\"curly brackets\") and may optionally be labelled:\n */\n@Deserializer('BlockStatement')\nexport class BlockStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: BlockStatement, deserializer: NodeDeserializer): BlockStatement {\n\t\treturn new BlockStatement(node.body.map(deserializer));\n\t}\n\tstatic visit(node: BlockStatement, visitNode: VisitNodeType): void {\n\t\tnode.body.forEach(visitNode);\n\t}\n\tconstructor(protected body: ExpressionNode[]) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`BlockStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst blockScope = stack.pushBlockScope();\n\t\tlet value: any;\n\t\tfor (const node of this.body) {\n\t\t\tvalue = node.get(stack);\n\t\t\tif (value instanceof ReturnValue) {\n\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\treturn value.value;\n\t\t\t}\n\t\t\tif (value instanceof TerminateReturnType) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(blockScope);\n\t\treturn value;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.body.flatMap(exp => exp.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.body.flatMap(node => node.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `{\\n${this.body\n\t\t\t.map(node => ({ insert: !isDeclarationExpression(node), string: node.toString() }))\n\t\t\t.map(ref => ` ${ref.string}${ref.insert ? ';' : ''}`)\n\t\t\t.join('\\n')}\\n}`;\n\t}\n\ttoJson(): object {\n\t\treturn { body: this.body.map(node => node.toJSON()) };\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ExpressionEventPath, ExpressionNode } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
4
|
/**
|
|
@@ -14,7 +13,6 @@ export declare class EmptyStatement extends AbstractExpressionNode {
|
|
|
14
13
|
static fromJSON(node: EmptyStatement): EmptyStatement;
|
|
15
14
|
private semicolon;
|
|
16
15
|
constructor();
|
|
17
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
18
16
|
set(stack: Stack, value: any): void;
|
|
19
17
|
get(stack: Stack): undefined;
|
|
20
18
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -17,7 +17,6 @@ let EmptyStatement = EmptyStatement_1 = class EmptyStatement extends AbstractExp
|
|
|
17
17
|
static fromJSON(node) {
|
|
18
18
|
return EmptyStatement_1.INSTANCE;
|
|
19
19
|
}
|
|
20
|
-
shareVariables(scopeList) { }
|
|
21
20
|
set(stack, value) {
|
|
22
21
|
throw new Error(`EmptyStatement#set() has no implementation.`);
|
|
23
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/empty.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/empty.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE;;;;;;GAMG;AAEI,IAAM,cAAc,sBAApB,MAAM,cAAe,SAAQ,sBAAsB;IAMzD;QACC,KAAK,EAAE,CAAC;QAFD,cAAS,GAAG,GAAG,CAAC;IAGxB,CAAC;IAND,MAAM,CAAC,QAAQ,CAAC,IAAoB;QACnC,OAAO,gBAAc,CAAC,QAAQ,CAAC;IAChC,CAAC;IAKD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,KAAK,CAAC,CAAC;IACf,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACD,MAAM;QACL,OAAO,EAAE,CAAC;IACX,CAAC;;AAzBe,uBAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAc,EAAE,CAAmB,CAAC;AADrE,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CA2B1B;SA3BY,cAAc","sourcesContent":["import type { ExpressionEventPath, ExpressionNode } 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 empty statement is a semicolon (;) indicating that no statement will be executed,\n * even if JavaScript syntax requires one.\n * The opposite behavior, where you want multiple statements,\n * but JavaScript only allows a single one, is possible using a block statement,\n * which combines several statements into a single one.\n */\n@Deserializer('EmptyStatement')\nexport class EmptyStatement extends AbstractExpressionNode {\n\tstatic readonly INSTANCE = Object.freeze(new EmptyStatement()) as EmptyStatement;\n\tstatic fromJSON(node: EmptyStatement): EmptyStatement {\n\t\treturn EmptyStatement.INSTANCE;\n\t}\n\tprivate semicolon = ';';\n\tconstructor() {\n\t\tsuper();\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`EmptyStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn this.semicolon;\n\t}\n\ttoJson(): object {\n\t\treturn {};\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
4
|
/**
|
|
@@ -17,7 +16,6 @@ export declare class IfStatement extends AbstractExpressionNode {
|
|
|
17
16
|
getTest(): ExpressionNode;
|
|
18
17
|
getConsequent(): ExpressionNode;
|
|
19
18
|
getAlternate(): ExpressionNode | undefined;
|
|
20
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
21
19
|
set(stack: Stack, value: any): void;
|
|
22
20
|
get(stack: Stack): any;
|
|
23
21
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -31,11 +31,6 @@ let IfStatement = IfStatement_1 = class IfStatement extends AbstractExpressionNo
|
|
|
31
31
|
getAlternate() {
|
|
32
32
|
return this.alternate;
|
|
33
33
|
}
|
|
34
|
-
shareVariables(scopeList) {
|
|
35
|
-
this.test.shareVariables(scopeList);
|
|
36
|
-
this.consequent.shareVariables(scopeList);
|
|
37
|
-
this.alternate?.shareVariables(scopeList);
|
|
38
|
-
}
|
|
39
34
|
set(stack, value) {
|
|
40
35
|
throw new Error(`IfStatement#set() has no implementation.`);
|
|
41
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/if.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"if.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/if.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, 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/**\n * The if statement executes a statement if a specified condition is truthy.\n * If the condition is falsy, another statement can be executed.\n * \n */\n@Deserializer('IfStatement')\nexport class IfStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: IfStatement, deserializer: NodeDeserializer): IfStatement {\n\t\treturn new IfStatement(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent),\n\t\t\tnode.alternate ? deserializer(node.alternate) : void 0\n\t\t);\n\t}\n\tstatic visit(node: IfStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.consequent);\n\t\tnode.alternate && visitNode(node.alternate);\n\t}\n\tconstructor(private test: ExpressionNode, private consequent: ExpressionNode, private alternate?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tgetAlternate() {\n\t\treturn this.alternate;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`IfStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst condition = this.test.get(stack);\n\t\tif (condition) {\n\t\t\tconst ifBlock = stack.pushBlockScope();\n\t\t\tconst value = this.consequent.get(stack);\n\t\t\tstack.clearTo(ifBlock);\n\t\t\treturn value;\n\t\t} else if (this.alternate) {\n\t\t\tconst elseBlock = stack.pushBlockScope();\n\t\t\tconst value = this.alternate.get(stack);\n\t\t\tstack.clearTo(elseBlock);\n\t\t\treturn value;\n\t\t}\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed)\n\t\t\t.concat(\n\t\t\t\tthis.consequent.dependency(computed),\n\t\t\t\tthis.alternate?.dependency(computed) || []\n\t\t\t);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(\n\t\t\tthis.consequent.dependencyPath(computed),\n\t\t\tthis.alternate?.dependencyPath(computed) || []\n\t\t);\n\t}\n\ttoString(): string {\n\t\treturn `if (${this.test.toString()}) ${this.consequent.toString()}${this.alternate ? ' else ' : ''}${this.alternate ? this.alternate.toString() : ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON(),\n\t\t\talternate: this.alternate?.toJSON()\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
4
|
import { Identifier } from '../../definition/values.js';
|
|
@@ -11,7 +10,6 @@ export declare class SwitchCase extends AbstractExpressionNode {
|
|
|
11
10
|
constructor(test: ExpressionNode, consequent: ExpressionNode);
|
|
12
11
|
getTest(): ExpressionNode;
|
|
13
12
|
getConsequent(): ExpressionNode;
|
|
14
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
15
13
|
set(stack: Stack, value: any): void;
|
|
16
14
|
get(stack: Stack): any;
|
|
17
15
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -43,7 +41,6 @@ export declare class SwitchStatement extends AbstractExpressionNode {
|
|
|
43
41
|
constructor(discriminant: ExpressionNode, cases: SwitchCase[]);
|
|
44
42
|
getDiscriminant(): ExpressionNode;
|
|
45
43
|
getCases(): SwitchCase[];
|
|
46
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
47
44
|
set(stack: Stack, value: any): void;
|
|
48
45
|
get(stack: Stack): undefined;
|
|
49
46
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -23,10 +23,6 @@ let SwitchCase = SwitchCase_1 = class SwitchCase extends AbstractExpressionNode
|
|
|
23
23
|
getConsequent() {
|
|
24
24
|
return this.consequent;
|
|
25
25
|
}
|
|
26
|
-
shareVariables(scopeList) {
|
|
27
|
-
this.test.shareVariables(scopeList);
|
|
28
|
-
this.consequent.shareVariables(scopeList);
|
|
29
|
-
}
|
|
30
26
|
set(stack, value) {
|
|
31
27
|
throw new Error(`SwitchCase#set() has no implementation.`);
|
|
32
28
|
}
|
|
@@ -110,10 +106,6 @@ let SwitchStatement = SwitchStatement_1 = class SwitchStatement extends Abstract
|
|
|
110
106
|
getCases() {
|
|
111
107
|
return this.cases;
|
|
112
108
|
}
|
|
113
|
-
shareVariables(scopeList) {
|
|
114
|
-
this.discriminant.shareVariables(scopeList);
|
|
115
|
-
this.cases.forEach(item => item.shareVariables(scopeList));
|
|
116
|
-
}
|
|
117
109
|
set(stack, value) {
|
|
118
110
|
throw new Error(`SwitchStatement#set() has no implementation.`);
|
|
119
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/switch.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode,\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 { TerminateReturnType } from './terminate.js';\nimport { Identifier } from '../../definition/values.js';\n\n\n@Deserializer('SwitchCase')\nexport class SwitchCase extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchCase, deserializer: NodeDeserializer): SwitchCase {\n\t\treturn new SwitchCase(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent)\n\t\t);\n\t}\n\tstatic visit(node: SwitchCase, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(protected test: ExpressionNode, protected consequent: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.test.shareVariables(scopeList);\n\t\tthis.consequent.shareVariables(scopeList);\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchCase#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.consequent.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed).concat(this.consequent.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(this.consequent.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `case ${this.test.toString()}: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('default')\nexport class DefaultExpression extends SwitchCase {\n\tstatic DefaultNode = Object.freeze(new Identifier('default')) as Identifier;\n\tstatic fromJSON(node: DefaultExpression, deserializer: NodeDeserializer): DefaultExpression {\n\t\treturn new DefaultExpression(deserializer(node.consequent));\n\t}\n\tstatic visit(node: DefaultExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(block: ExpressionNode) {\n\t\tsuper(DefaultExpression.DefaultNode, block);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.consequent.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.consequent.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `default: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n/**\n * The switch statement evaluates an expression, matching the expression's value to a case clause,\n * and executes statements associated with that case,\n * as well as statements in cases that follow the matching case.\n * \n */\n@Deserializer('SwitchStatement')\nexport class SwitchStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchStatement, deserializer: NodeDeserializer): SwitchStatement {\n\t\treturn new SwitchStatement(\n\t\t\tdeserializer(node.discriminant),\n\t\t\tnode.cases.map(deserializer) as SwitchCase[]\n\t\t);\n\t}\n\tstatic visit(node: SwitchStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.discriminant);\n\t\tnode.cases.forEach(visitNode);\n\t}\n\tconstructor(private discriminant: ExpressionNode, private cases: SwitchCase[]) {\n\t\tsuper();\n\t}\n\tgetDiscriminant() {\n\t\treturn this.discriminant;\n\t}\n\tgetCases() {\n\t\treturn this.cases;\n\t}\n\tshareVariables(scopeList: Scope<any>[]): void {\n\t\tthis.discriminant.shareVariables(scopeList);\n\t\tthis.cases.forEach(item => item.shareVariables(scopeList));\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// need to fix statements execution and support default case\n\t\t// stack = stack.newStack();\n\t\tconst result = this.discriminant.get(stack);\n\t\tconst values = this.cases.map(item => item.getTest().get(stack));\n\t\tlet startIndex = values.findIndex(item => result === item);\n\t\tif (startIndex === -1) {\n\t\t\t// search for default statement\n\t\t\tstartIndex = this.cases.findIndex(item => item instanceof DefaultExpression);\n\t\t\tif (startIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst caseBlock = stack.pushBlockScope();\n\t\tfor (let index = startIndex; index < this.cases.length; index++) {\n\t\t\tconst returnValue = this.cases[index].get(stack);\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(caseBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.discriminant.dependency(computed).concat(this.cases.flatMap(expCase => expCase.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.discriminant.dependencyPath(computed).concat(this.cases.flatMap(expCase => expCase.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `switch (${this.discriminant.toString()}) {${this.cases.map(item => item.toString())}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdiscriminant: this.discriminant.toJSON(),\n\t\t\tcases: this.cases.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/switch.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { TerminateReturnType } from './terminate.js';\nimport { Identifier } from '../../definition/values.js';\n\n\n@Deserializer('SwitchCase')\nexport class SwitchCase extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchCase, deserializer: NodeDeserializer): SwitchCase {\n\t\treturn new SwitchCase(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent)\n\t\t);\n\t}\n\tstatic visit(node: SwitchCase, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.test);\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(protected test: ExpressionNode, protected consequent: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchCase#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.consequent.get(stack);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.test.dependency(computed).concat(this.consequent.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.test.dependencyPath(computed).concat(this.consequent.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `case ${this.test.toString()}: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('default')\nexport class DefaultExpression extends SwitchCase {\n\tstatic DefaultNode = Object.freeze(new Identifier('default')) as Identifier;\n\tstatic fromJSON(node: DefaultExpression, deserializer: NodeDeserializer): DefaultExpression {\n\t\treturn new DefaultExpression(deserializer(node.consequent));\n\t}\n\tstatic visit(node: DefaultExpression, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.consequent);\n\t}\n\tconstructor(block: ExpressionNode) {\n\t\tsuper(DefaultExpression.DefaultNode, block);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.consequent.dependency(computed);\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.consequent.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `default: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n/**\n * The switch statement evaluates an expression, matching the expression's value to a case clause,\n * and executes statements associated with that case,\n * as well as statements in cases that follow the matching case.\n * \n */\n@Deserializer('SwitchStatement')\nexport class SwitchStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchStatement, deserializer: NodeDeserializer): SwitchStatement {\n\t\treturn new SwitchStatement(\n\t\t\tdeserializer(node.discriminant),\n\t\t\tnode.cases.map(deserializer) as SwitchCase[]\n\t\t);\n\t}\n\tstatic visit(node: SwitchStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.discriminant);\n\t\tnode.cases.forEach(visitNode);\n\t}\n\tconstructor(private discriminant: ExpressionNode, private cases: SwitchCase[]) {\n\t\tsuper();\n\t}\n\tgetDiscriminant() {\n\t\treturn this.discriminant;\n\t}\n\tgetCases() {\n\t\treturn this.cases;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// need to fix statements execution and support default case\n\t\t// stack = stack.newStack();\n\t\tconst result = this.discriminant.get(stack);\n\t\tconst values = this.cases.map(item => item.getTest().get(stack));\n\t\tlet startIndex = values.findIndex(item => result === item);\n\t\tif (startIndex === -1) {\n\t\t\t// search for default statement\n\t\t\tstartIndex = this.cases.findIndex(item => item instanceof DefaultExpression);\n\t\t\tif (startIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst caseBlock = stack.pushBlockScope();\n\t\tfor (let index = startIndex; index < this.cases.length; index++) {\n\t\t\tconst returnValue = this.cases[index].get(stack);\n\t\t\tif (result instanceof TerminateReturnType) {\n\t\t\t\tif (result.type === 'continue') {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(caseBlock);\n\t\treturn void 0;\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.discriminant.dependency(computed).concat(this.cases.flatMap(expCase => expCase.dependency(computed)));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.discriminant.dependencyPath(computed).concat(this.cases.flatMap(expCase => expCase.dependencyPath(computed)));\n\t}\n\ttoString(): string {\n\t\treturn `switch (${this.discriminant.toString()}) {${this.cases.map(item => item.toString())}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdiscriminant: this.discriminant.toJSON(),\n\t\t\tcases: this.cases.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
4
|
import { Identifier } from '../../definition/values.js';
|
|
@@ -21,7 +20,6 @@ declare abstract class TerminateStatement extends AbstractExpressionNode {
|
|
|
21
20
|
protected label?: Identifier | undefined;
|
|
22
21
|
constructor(label?: Identifier | undefined);
|
|
23
22
|
getLabel(): void;
|
|
24
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
25
23
|
set(stack: Stack, value: any): void;
|
|
26
24
|
get(stack: Stack): TerminateReturnType;
|
|
27
25
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -50,7 +48,6 @@ export declare class LabeledStatement extends AbstractExpressionNode {
|
|
|
50
48
|
constructor(label: Identifier, body: ExpressionNode);
|
|
51
49
|
getLabel(): Identifier;
|
|
52
50
|
getBody(): ExpressionNode;
|
|
53
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
54
51
|
set(stack: Stack, value: any): void;
|
|
55
52
|
get(stack: Stack): any;
|
|
56
53
|
dependency(computed?: true | undefined): ExpressionNode[];
|
|
@@ -26,7 +26,6 @@ class TerminateStatement extends AbstractExpressionNode {
|
|
|
26
26
|
getLabel() {
|
|
27
27
|
this.label;
|
|
28
28
|
}
|
|
29
|
-
shareVariables(scopeList) { }
|
|
30
29
|
set(stack, value) {
|
|
31
30
|
throw new Error(`TerminateStatement#set() has no implementation.`);
|
|
32
31
|
}
|
|
@@ -101,9 +100,6 @@ let LabeledStatement = LabeledStatement_1 = class LabeledStatement extends Abstr
|
|
|
101
100
|
getBody() {
|
|
102
101
|
return this.body;
|
|
103
102
|
}
|
|
104
|
-
shareVariables(scopeList) {
|
|
105
|
-
this.body.shareVariables(scopeList);
|
|
106
|
-
}
|
|
107
103
|
set(stack, value) {
|
|
108
104
|
throw new Error('LabeledStatement#set() not implemented.');
|
|
109
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/terminate.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/control/terminate.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExpressionEventPath, ExpressionNode, NodeDeserializer, VisitNodeType } from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { Identifier } from '../../definition/values.js';\n\nexport type TerminateType = 'break' | 'continue';\n\nexport class TerminateReturnType {\n\tconstructor(public type: TerminateType, public label?: string) { }\n};\n\n\n\n/**\n * The break statement terminates the current loop, switch, or label statement\n * and transfers program control to the statement following the terminated statement.\n * \n * The continue statement terminates execution of the statements in the current iteration of the current or labeled loop,\n * and continues execution of the loop with the next iteration.\n *\n */\nabstract class TerminateStatement extends AbstractExpressionNode {\n\n\tconstructor(protected label?: Identifier) {\n\t\tsuper();\n\t}\n\tgetLabel() {\n\t\tthis.label;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TerminateStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack): TerminateReturnType {\n\t\treturn new TerminateReturnType(this.getType(), this.label?.get(stack));\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn `${this.getType()}${this.label ? ` ${this.label.toString()}` : ''};`;\n\t}\n\ttoJson(): object {\n\t\treturn { label: this.label?.toJSON() };\n\t}\n\n\tabstract getType(): TerminateType;\n}\n\n@Deserializer('BreakStatement')\nexport class BreakStatement extends TerminateStatement {\n\tstatic readonly BREAK_INSTANCE = Object.freeze(new BreakStatement()) as BreakStatement;\n\tstatic fromJSON(node: BreakStatement, deserializer: NodeDeserializer): BreakStatement {\n\t\treturn node.label\n\t\t\t? new BreakStatement(deserializer(node.label) as Identifier)\n\t\t\t: BreakStatement.BREAK_INSTANCE;\n\t}\n\tstatic visit(node: BreakStatement, visitNode: VisitNodeType): void {\n\t\tnode.label && visitNode(node.label);\n\t}\n\tgetType(): 'break' {\n\t\treturn 'break';\n\t}\n}\n\n@Deserializer('ContinueStatement')\nexport class ContinueStatement extends TerminateStatement {\n\tstatic readonly CONTINUE_INSTANCE = Object.freeze(new ContinueStatement()) as ContinueStatement;\n\tstatic fromJSON(node: ContinueStatement, deserializer: NodeDeserializer): ContinueStatement {\n\n\t\treturn node.label\n\t\t\t? new ContinueStatement(deserializer(node.label) as Identifier)\n\t\t\t: ContinueStatement.CONTINUE_INSTANCE;\n\t}\n\tstatic visit(node: ContinueStatement, visitNode: VisitNodeType): void {\n\t\tnode.label && visitNode(node.label);\n\t}\n\tgetType(): 'continue' {\n\t\treturn 'continue';\n\t}\n}\n\n@Deserializer('LabeledStatement')\nexport class LabeledStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: LabeledStatement, deserializer: NodeDeserializer): LabeledStatement {\n\t\treturn new LabeledStatement(\n\t\t\tdeserializer(node.label) as Identifier,\n\t\t\tdeserializer(node.body),\n\t\t);\n\t}\n\tstatic visit(node: LabeledStatement, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.label);\n\t\tvisitNode(node.body);\n\t}\n\tconstructor(private label: Identifier, private body: ExpressionNode) {\n\t\tsuper();\n\t}\n\n\tgetLabel() {\n\t\treturn this.label;\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error('LabeledStatement#set() not implemented.');\n\t}\n\tget(stack: Stack) {\n\t\treturn this.body.get(stack);\n\t}\n\tdependency(computed?: true | undefined): ExpressionNode[] {\n\t\treturn this.body.dependency(computed);\n\t}\n\tdependencyPath(computed?: true | undefined): ExpressionEventPath[] {\n\t\treturn this.body.dependencyPath(computed);\n\t}\n\ttoString(): string {\n\t\treturn `${this.label.toString()}:\\n${this.body.toString()}`;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\tlabel: this.label.toJSON(),\n\t\t\tbody: this.body.toJSON()\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, DeclarationExpression, ExpressionEventPath, VisitNodeType } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode } from '../../abstract.js';
|
|
5
4
|
export declare class VariableDeclarator extends AbstractExpressionNode implements DeclarationExpression {
|
|
@@ -10,7 +9,6 @@ export declare class VariableDeclarator extends AbstractExpressionNode implement
|
|
|
10
9
|
constructor(id: DeclarationExpression, init?: ExpressionNode | undefined);
|
|
11
10
|
getId(): DeclarationExpression;
|
|
12
11
|
getInit(): ExpressionNode | undefined;
|
|
13
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
14
12
|
set(stack: Stack, value: any): void;
|
|
15
13
|
get(stack: Stack): void;
|
|
16
14
|
declareVariable(stack: Stack, propertyValue?: any): void;
|
|
@@ -30,8 +28,7 @@ export declare class VariableDeclarationNode extends AbstractExpressionNode impl
|
|
|
30
28
|
static visit(node: VariableDeclarationNode, visitNode: VisitNodeType): void;
|
|
31
29
|
constructor(declarations: VariableDeclarator[], kind: 'var' | 'let' | 'const');
|
|
32
30
|
getDeclarations(): VariableDeclarator[];
|
|
33
|
-
getKind(): "
|
|
34
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
31
|
+
getKind(): "const" | "let" | "var";
|
|
35
32
|
set(stack: Stack, value: any): void;
|
|
36
33
|
get(stack: Stack): void;
|
|
37
34
|
getDeclarationName(): string;
|
|
@@ -21,9 +21,6 @@ let VariableDeclarator = VariableDeclarator_1 = class VariableDeclarator extends
|
|
|
21
21
|
getInit() {
|
|
22
22
|
return this.init;
|
|
23
23
|
}
|
|
24
|
-
shareVariables(scopeList) {
|
|
25
|
-
this.init?.shareVariables(scopeList);
|
|
26
|
-
}
|
|
27
24
|
set(stack, value) {
|
|
28
25
|
throw new Error(`VariableNode#set() has no implementation.`);
|
|
29
26
|
}
|
|
@@ -88,9 +85,6 @@ let VariableDeclarationNode = VariableDeclarationNode_1 = class VariableDeclarat
|
|
|
88
85
|
getKind() {
|
|
89
86
|
return this.kind;
|
|
90
87
|
}
|
|
91
|
-
shareVariables(scopeList) {
|
|
92
|
-
this.declarations.forEach(declaration => declaration.shareVariables(scopeList));
|
|
93
|
-
}
|
|
94
88
|
set(stack, value) {
|
|
95
89
|
if (Array.isArray(value)) {
|
|
96
90
|
throw new Error(`VariableDeclarationNode#set() has no implementation.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declares.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/declarations/declares.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"declares.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/declarations/declares.ts"],"names":[],"mappings":";;AAMA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGzD,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,sBAAsB;IAW7D,YAAmB,EAAyB,EAAS,IAAqB;QACzE,KAAK,EAAE,CAAC;QADU,OAAE,GAAF,EAAE,CAAuB;QAAS,SAAI,GAAJ,IAAI,CAAiB;IAE1E,CAAC;IAZD,MAAM,CAAC,QAAQ,CAAC,IAAwB,EAAE,YAA8B;QACvE,OAAO,IAAI,oBAAkB,CAC5B,YAAY,CAAC,IAAI,CAAC,EAAE,CAA0B,EAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAC5C,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,SAAwB;QAC9D,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAID,KAAK;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC;IAChB,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,CAAC;IACD,GAAG,CAAC,KAAY;QACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,aAAmB;QAChD,IAAI,aAAa,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC9C,OAAO;SACP;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,KAAK,YAAY,YAAY,EAAE;YAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC1B;aAAM;YACN,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACtC;IACF,CAAC;IACD,kBAAkB;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAmB,EAAE,CAAC;IACtC,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IACD,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAChF,CAAC;IACD,MAAM;QACL,OAAO;YACN,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC;IACH,CAAC;CACD,CAAA;AA3DY,kBAAkB;IAD9B,YAAY,CAAC,oBAAoB,CAAC;;GACtB,kBAAkB,CA2D9B;SA3DY,kBAAkB;AA8DxB,IAAM,uBAAuB,+BAA7B,MAAM,uBAAwB,SAAQ,sBAAsB;IAUlE,YAAsB,YAAkC,EAAY,IAA6B;QAChG,KAAK,EAAE,CAAC;QADa,iBAAY,GAAZ,YAAY,CAAsB;QAAY,SAAI,GAAJ,IAAI,CAAyB;IAEjG,CAAC;IAXD,MAAM,CAAC,QAAQ,CAAC,IAA6B,EAAE,YAA8B;QAC5E,OAAO,IAAI,yBAAuB,CACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAyB,EAC3D,IAAI,CAAC,IAAI,CACT,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAA6B,EAAE,SAAwB;QACnE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAID,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;SACxE;QACD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,GAAG,CAAC,KAAY;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;YACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC5B;IACF,CAAC;IACD,kBAAkB;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAmB,EAAE,CAAC;IACnD,CAAC;IACD,eAAe,CAAC,KAAY,EAAE,aAAkB;QAC/C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IACD,UAAU,CAAC,QAAe;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,cAAc,CAAC,QAAe;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,QAAQ;QACP,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC/E,CAAC;IACD,MAAM;QACL,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACpD,CAAC;IACH,CAAC;CACD,CAAA;AAnDY,uBAAuB;IADnC,YAAY,CAAC,qBAAqB,CAAC;;GACvB,uBAAuB,CAmDnC;SAnDY,uBAAuB","sourcesContent":["\nimport type {\n\tNodeDeserializer, ExpressionNode, DeclarationExpression,\n\tExpressionEventPath, VisitNodeType\n} from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, AwaitPromise } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\n\n@Deserializer('VariableDeclarator')\nexport class VariableDeclarator extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: VariableDeclarator, deserializer: NodeDeserializer): VariableDeclarator {\n\t\treturn new VariableDeclarator(\n\t\t\tdeserializer(node.id) as DeclarationExpression,\n\t\t\tnode.init ? deserializer(node.init) : void 0\n\t\t);\n\t}\n\tstatic visit(node: VariableDeclarator, visitNode: VisitNodeType): void {\n\t\tvisitNode(node.id);\n\t\tnode.init && visitNode(node.init);\n\t}\n\tconstructor(public id: DeclarationExpression, public init?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetId() {\n\t\treturn this.id;\n\t}\n\tgetInit() {\n\t\treturn this.init;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`VariableNode#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tthis.declareVariable(stack);\n\t}\n\tdeclareVariable(stack: Stack, propertyValue?: any) {\n\t\tif (propertyValue !== undefined) {\n\t\t\tthis.id.declareVariable(stack, propertyValue);\n\t\t\treturn;\n\t\t}\n\t\tconst value = this.init?.get(stack);\n\t\tif (value instanceof AwaitPromise) {\n\t\t\tvalue.node = this.id;\n\t\t\tvalue.declareVariable = true;\n\t\t\tvalue.node.declareVariable(stack);\n\t\t\tstack.resolveAwait(value);\n\t\t} else {\n\t\t\tthis.id.declareVariable(stack, value);\n\t\t}\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.id.getDeclarationName!();\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.init?.dependency() || [];\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.init?.dependencyPath(computed) || [];\n\t}\n\ttoString() {\n\t\treturn `${this.id.toString()}${this.init ? ` = ${this.init.toString()}` : ''}`;\n\t}\n\ttoJson() {\n\t\treturn {\n\t\t\tid: this.id.toJSON(),\n\t\t\tinit: this.init?.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('VariableDeclaration')\nexport class VariableDeclarationNode extends AbstractExpressionNode implements DeclarationExpression {\n\tstatic fromJSON(node: VariableDeclarationNode, deserializer: NodeDeserializer): VariableDeclarationNode {\n\t\treturn new VariableDeclarationNode(\n\t\t\tnode.declarations.map(deserializer) as VariableDeclarator[],\n\t\t\tnode.kind\n\t\t);\n\t}\n\tstatic visit(node: VariableDeclarationNode, visitNode: VisitNodeType): void {\n\t\tnode.declarations.forEach(visitNode);\n\t}\n\tconstructor(protected declarations: VariableDeclarator[], protected kind: 'var' | 'let' | 'const') {\n\t\tsuper();\n\t}\n\tgetDeclarations() {\n\t\treturn this.declarations;\n\t}\n\tgetKind() {\n\t\treturn this.kind;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error(`VariableDeclarationNode#set() has no implementation.`);\n\t\t}\n\t\tthis.declarations[0].id.set(stack, value);\n\t}\n\tget(stack: Stack) {\n\t\tfor (const item of this.declarations) {\n\t\t\titem.declareVariable(stack);\n\t\t}\n\t}\n\tgetDeclarationName(): string {\n\t\treturn this.declarations[0].getDeclarationName!();\n\t}\n\tdeclareVariable(stack: Stack, propertyValue: any): any {\n\t\tthis.declarations[0].declareVariable(stack, propertyValue);\n\t}\n\tdependency(computed?: true): ExpressionNode[] {\n\t\treturn this.declarations.flatMap(declareVariable => declareVariable.dependency(computed));\n\t}\n\tdependencyPath(computed?: true): ExpressionEventPath[] {\n\t\treturn this.declarations.flatMap(declareVariable => declareVariable.dependencyPath(computed));\n\t}\n\ttoString(): string {\n\t\treturn `${this.kind} ${this.declarations.map(v => v.toString()).join(', ')};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkind: this.kind,\n\t\t\tdeclarations: this.declarations.map(v => v.toJSON()),\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeDeserializer, ExpressionNode, ExpressionEventPath, VisitNodeType } from '../../expression.js';
|
|
2
|
-
import type { Scope } from '../../../scope/scope.js';
|
|
3
2
|
import type { Stack } from '../../../scope/stack.js';
|
|
4
3
|
import { AbstractExpressionNode, ReturnValue } from '../../abstract.js';
|
|
5
4
|
import { VariableDeclarationNode } from '../declarations/declares.js';
|
|
@@ -22,7 +21,6 @@ export declare class ForNode extends AbstractExpressionNode {
|
|
|
22
21
|
getInit(): ExpressionNode | undefined;
|
|
23
22
|
getTest(): ExpressionNode | undefined;
|
|
24
23
|
getUpdate(): ExpressionNode | undefined;
|
|
25
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
26
24
|
set(stack: Stack, value: any): void;
|
|
27
25
|
get(stack: Stack): ReturnValue | undefined;
|
|
28
26
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -41,7 +39,6 @@ export declare class ForOfNode extends AbstractExpressionNode {
|
|
|
41
39
|
getLeft(): ForDeclaration;
|
|
42
40
|
getRight(): ExpressionNode;
|
|
43
41
|
getBody(): ExpressionNode;
|
|
44
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
45
42
|
set(stack: Stack, value: any): void;
|
|
46
43
|
get(stack: Stack): ReturnValue | undefined;
|
|
47
44
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -56,10 +53,9 @@ export declare class ForInNode extends AbstractExpressionNode {
|
|
|
56
53
|
static fromJSON(node: ForInNode, deserializer: NodeDeserializer): ForInNode;
|
|
57
54
|
static visit(node: ForInNode, visitNode: VisitNodeType): void;
|
|
58
55
|
constructor(left: VariableDeclarationNode | ObjectPattern | ArrayPattern, right: ExpressionNode, body: ExpressionNode);
|
|
59
|
-
getLeft():
|
|
56
|
+
getLeft(): ObjectPattern | ArrayPattern | VariableDeclarationNode;
|
|
60
57
|
getRight(): ExpressionNode;
|
|
61
58
|
getBody(): ExpressionNode;
|
|
62
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
63
59
|
set(stack: Stack, value: any): void;
|
|
64
60
|
get(stack: Stack): ReturnValue | undefined;
|
|
65
61
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -77,7 +73,6 @@ export declare class ForAwaitOfNode extends AbstractExpressionNode {
|
|
|
77
73
|
getLeft(): ForDeclaration;
|
|
78
74
|
getRight(): ExpressionNode;
|
|
79
75
|
getBody(): ExpressionNode;
|
|
80
|
-
shareVariables(scopeList: Scope<any>[]): void;
|
|
81
76
|
set(stack: Stack, value: any): void;
|
|
82
77
|
get(stack: Stack): void;
|
|
83
78
|
dependency(computed?: true): ExpressionNode[];
|
|
@@ -37,12 +37,6 @@ let ForNode = ForNode_1 = class ForNode extends AbstractExpressionNode {
|
|
|
37
37
|
getUpdate() {
|
|
38
38
|
return this.update;
|
|
39
39
|
}
|
|
40
|
-
shareVariables(scopeList) {
|
|
41
|
-
this.init?.shareVariables(scopeList);
|
|
42
|
-
this.test?.shareVariables(scopeList);
|
|
43
|
-
this.update?.shareVariables(scopeList);
|
|
44
|
-
this.body.shareVariables(scopeList);
|
|
45
|
-
}
|
|
46
40
|
set(stack, value) {
|
|
47
41
|
throw new Error(`ForNode#set() has no implementation.`);
|
|
48
42
|
}
|
|
@@ -123,10 +117,6 @@ let ForOfNode = ForOfNode_1 = class ForOfNode extends AbstractExpressionNode {
|
|
|
123
117
|
getBody() {
|
|
124
118
|
return this.body;
|
|
125
119
|
}
|
|
126
|
-
shareVariables(scopeList) {
|
|
127
|
-
this.right.shareVariables(scopeList);
|
|
128
|
-
this.body.shareVariables(scopeList);
|
|
129
|
-
}
|
|
130
120
|
set(stack, value) {
|
|
131
121
|
throw new Error(`ForOfNode#set() has no implementation.`);
|
|
132
122
|
}
|
|
@@ -201,10 +191,6 @@ let ForInNode = ForInNode_1 = class ForInNode extends AbstractExpressionNode {
|
|
|
201
191
|
getBody() {
|
|
202
192
|
return this.body;
|
|
203
193
|
}
|
|
204
|
-
shareVariables(scopeList) {
|
|
205
|
-
this.right.shareVariables(scopeList);
|
|
206
|
-
this.body.shareVariables(scopeList);
|
|
207
|
-
}
|
|
208
194
|
set(stack, value) {
|
|
209
195
|
throw new Error(`ForOfNode#set() has no implementation.`);
|
|
210
196
|
}
|
|
@@ -279,10 +265,6 @@ let ForAwaitOfNode = ForAwaitOfNode_1 = class ForAwaitOfNode extends AbstractExp
|
|
|
279
265
|
getBody() {
|
|
280
266
|
return this.body;
|
|
281
267
|
}
|
|
282
|
-
shareVariables(scopeList) {
|
|
283
|
-
this.right.shareVariables(scopeList);
|
|
284
|
-
this.body.shareVariables(scopeList);
|
|
285
|
-
}
|
|
286
268
|
set(stack, value) {
|
|
287
269
|
throw new Error(`ForAwaitOfNode#set() has no implementation.`);
|
|
288
270
|
}
|