@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
24 lines (22 loc) • 838 B
JavaScript
import { tsUtils } from '@neo-one/ts-utils';
import ts from 'typescript';
import { handleReturnTypeAssignment } from '../helper/types';
import { NodeCompiler } from '../NodeCompiler';
export class ReturnStatementCompiler extends NodeCompiler {
constructor() {
super(...arguments);
this.kind = ts.SyntaxKind.ReturnStatement;
}
visitNode(sb, node, options) {
const expr = tsUtils.expression.getExpression(node);
if (expr === undefined) {
sb.emitHelper(node, sb.pushValueOptions(options), sb.helpers.wrapUndefined);
}
else {
sb.visit(expr, sb.pushValueOptions(options));
handleReturnTypeAssignment(sb.context, expr);
}
sb.emitHelper(node, options, sb.helpers.return);
}
}
//# sourceMappingURL=ReturnStatementCompiler.js.map