@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
29 lines (27 loc) • 1.07 kB
JavaScript
import { tsUtils } from '@neo-one/ts-utils';
import ts from 'typescript';
import { NodeCompiler } from '../NodeCompiler';
export class ConditionalExpressionCompiler extends NodeCompiler {
constructor() {
super(...arguments);
this.kind = ts.SyntaxKind.ConditionalExpression;
}
visitNode(sb, expr, options) {
sb.emitHelper(expr, options, sb.helpers.if({
condition: () => {
const condition = 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(tsUtils.expression.getWhenTrue(expr), options);
},
whenFalse: () => {
sb.visit(tsUtils.expression.getWhenFalse(expr), options);
},
}));
}
}
//# sourceMappingURL=ConditionalExpressionCompiler.js.map