UNPKG

@ibyar/expressions

Version:

Aurora expression, an template expression and evaluation, An 100% spec compliant ES2022 JavaScript toolchain,

165 lines 6.43 kB
import { __esDecorate, __runInitializers } from "tslib"; import { AbstractExpressionNode } from '../../abstract.js'; import { Deserializer } from '../../deserialize/deserialize.js'; export class TerminateReturnType { type; label; constructor(type, label) { this.type = type; this.label = label; } } ; /** * The break statement terminates the current loop, switch, or label statement * and transfers program control to the statement following the terminated statement. * * The continue statement terminates execution of the statements in the current iteration of the current or labeled loop, * and continues execution of the loop with the next iteration. * */ class TerminateStatement extends AbstractExpressionNode { label; constructor(label, range, loc) { super(range, loc); this.label = label; } getLabel() { this.label; } set(stack, value) { throw new Error(`TerminateStatement#set() has no implementation.`); } get(stack) { return new TerminateReturnType(this.getType(), this.label?.get(stack)); } dependency(computed) { return []; } dependencyPath(computed) { return []; } toString() { return `${this.getType()}${this.label ? ` ${this.label.toString()}` : ''};`; } toJson() { return { label: this.label?.toJSON() }; } } let BreakStatement = (() => { let _classDecorators = [Deserializer('BreakStatement')]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = TerminateStatement; var BreakStatement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); BreakStatement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } static fromJSON(node, deserializer) { return new BreakStatement(node.label ? deserializer(node.label) : void 0, node.range, node.loc); } static visit(node, visitNode) { node.label && visitNode(node.label); } getType() { return 'break'; } }; return BreakStatement = _classThis; })(); export { BreakStatement }; let ContinueStatement = (() => { let _classDecorators = [Deserializer('ContinueStatement')]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = TerminateStatement; var ContinueStatement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); ContinueStatement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } static fromJSON(node, deserializer) { return new ContinueStatement(node.label && deserializer(node.label), node.range, node.loc); } static visit(node, visitNode) { node.label && visitNode(node.label); } getType() { return 'continue'; } }; return ContinueStatement = _classThis; })(); export { ContinueStatement }; let LabeledStatement = (() => { let _classDecorators = [Deserializer('LabeledStatement')]; let _classDescriptor; let _classExtraInitializers = []; let _classThis; let _classSuper = AbstractExpressionNode; var LabeledStatement = class extends _classSuper { static { _classThis = this; } static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0; __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers); LabeledStatement = _classThis = _classDescriptor.value; if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); __runInitializers(_classThis, _classExtraInitializers); } label; body; static fromJSON(node, deserializer) { return new LabeledStatement(deserializer(node.label), deserializer(node.body), node.range, node.loc); } static visit(node, visitNode) { visitNode(node.label); visitNode(node.body); } constructor(label, body, range, loc) { super(range, loc); this.label = label; this.body = body; } getLabel() { return this.label; } getBody() { return this.body; } set(stack, value) { throw new Error('LabeledStatement#set() not implemented.'); } get(stack) { return this.body.get(stack); } dependency(computed) { return this.body.dependency(computed); } dependencyPath(computed) { return this.body.dependencyPath(computed); } toString() { return `${this.label.toString()}:\n${this.body.toString()}`; } toJson() { return { label: this.label.toJSON(), body: this.body.toJSON() }; } }; return LabeledStatement = _classThis; })(); export { LabeledStatement }; //# sourceMappingURL=terminate.js.map