calcium-lang
Version:
Calcium language interpreter
27 lines • 743 B
JavaScript
import { evaluate } from "../util";
import { None } from "../factory";
import { Kind } from "../runtime/block";
/**
* return an expression, if any (default `None`)
*/
export default class Return {
constructor(expr) {
this.expr = expr;
}
execute(env) {
var _a;
env.returnedValue = evaluate((_a = this.expr) !== null && _a !== void 0 ? _a : None, env);
while (true) {
const block = env.lastBlock;
switch (block.kind) {
case Kind.Call:
block.exit(env);
return;
default:
env.blocks.pop();
continue;
}
}
}
}
//# sourceMappingURL=return.js.map