@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
34 lines (32 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConditionalExpressionCompiler = 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 ConditionalExpressionCompiler extends NodeCompiler_1.NodeCompiler {
constructor() {
super(...arguments);
this.kind = typescript_1.default.SyntaxKind.ConditionalExpression;
}
visitNode(sb, expr, options) {
sb.emitHelper(expr, options, sb.helpers.if({
condition: () => {
const condition = ts_utils_1.tsUtils.expression.getCondition(expr);
sb.visit(condition, sb.pushValueOptions(options));
sb.emitHelper(condition, sb.pushValueOptions(options), sb.helpers.toBoolean({
type: sb.context.analysis.getType(condition),
}));
},
whenTrue: () => {
sb.visit(ts_utils_1.tsUtils.expression.getWhenTrue(expr), options);
},
whenFalse: () => {
sb.visit(ts_utils_1.tsUtils.expression.getWhenFalse(expr), options);
},
}));
}
}
exports.ConditionalExpressionCompiler = ConditionalExpressionCompiler;
//# sourceMappingURL=ConditionalExpressionCompiler.js.map