@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
41 lines (39 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IfStatementCompiler = void 0;
const tslib_1 = require("tslib");
const ts_utils_1 = require("@neo-one/ts-utils");
const typescript_1 = tslib_1.__importDefault(require("typescript"));
const NodeCompiler_1 = require("../NodeCompiler");
class IfStatementCompiler extends NodeCompiler_1.NodeCompiler {
constructor() {
super(...arguments);
this.kind = typescript_1.default.SyntaxKind.IfStatement;
}
visitNode(sb, node, options) {
const condition = () => {
const cond = ts_utils_1.tsUtils.expression.getExpression(node);
sb.visit(cond, sb.pushValueOptions(options));
sb.emitHelper(cond, sb.pushValueOptions(options), sb.helpers.toBoolean({
type: sb.context.analysis.getType(cond),
}));
};
const whenTrue = () => {
sb.visit(ts_utils_1.tsUtils.statement.getThenStatement(node), options);
};
let whenFalse;
const nodeWhenFalse = ts_utils_1.tsUtils.statement.getElseStatement(node);
if (nodeWhenFalse !== undefined) {
whenFalse = () => {
sb.visit(nodeWhenFalse, options);
};
}
sb.emitHelper(node, options, sb.helpers.if({
condition,
whenTrue,
whenFalse,
}));
}
}
exports.IfStatementCompiler = IfStatementCompiler;
//# sourceMappingURL=IfStatementCompiler.js.map