UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

28 lines (26 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ts_utils_1 = require("@neo-one/ts-utils"); const typescript_1 = tslib_1.__importDefault(require("typescript")); const types_1 = require("../helper/types"); const NodeCompiler_1 = require("../NodeCompiler"); class ReturnStatementCompiler extends NodeCompiler_1.NodeCompiler { constructor() { super(...arguments); this.kind = typescript_1.default.SyntaxKind.ReturnStatement; } visitNode(sb, node, options) { const expr = ts_utils_1.tsUtils.expression.getExpression(node); if (expr === undefined) { sb.emitHelper(node, sb.pushValueOptions(options), sb.helpers.wrapUndefined); } else { sb.visit(expr, sb.pushValueOptions(options)); types_1.handleReturnTypeAssignment(sb.context, expr); } sb.emitHelper(node, options, sb.helpers.return); } } exports.ReturnStatementCompiler = ReturnStatementCompiler; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlJldHVyblN0YXRlbWVudENvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUE0QztBQUM1QyxvRUFBNEI7QUFDNUIsMkNBQTZEO0FBQzdELGtEQUErQztBQUkvQyxNQUFhLHVCQUF3QixTQUFRLDJCQUFnQztJQUE3RTs7UUFDa0IsU0FBSSxHQUFHLG9CQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQWF2RCxDQUFDO0lBWFEsU0FBUyxDQUFDLEVBQWlCLEVBQUUsSUFBd0IsRUFBRSxPQUFxQjtRQUNqRixNQUFNLElBQUksR0FBRyxrQkFBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzdFO2FBQU07WUFDTCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM3QyxrQ0FBMEIsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzlDO1FBRUQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBZEQsMERBY0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9zdGF0ZW1lbnQvUmV0dXJuU3RhdGVtZW50Q29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgaGFuZGxlUmV0dXJuVHlwZUFzc2lnbm1lbnQgfSBmcm9tICcuLi9oZWxwZXIvdHlwZXMnO1xuaW1wb3J0IHsgTm9kZUNvbXBpbGVyIH0gZnJvbSAnLi4vTm9kZUNvbXBpbGVyJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXR1cm5TdGF0ZW1lbnRDb21waWxlciBleHRlbmRzIE5vZGVDb21waWxlcjx0cy5SZXR1cm5TdGF0ZW1lbnQ+IHtcbiAgcHVibGljIHJlYWRvbmx5IGtpbmQgPSB0cy5TeW50YXhLaW5kLlJldHVyblN0YXRlbWVudDtcblxuICBwdWJsaWMgdmlzaXROb2RlKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5SZXR1cm5TdGF0ZW1lbnQsIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGV4cHIgPSB0c1V0aWxzLmV4cHJlc3Npb24uZ2V0RXhwcmVzc2lvbihub2RlKTtcbiAgICBpZiAoZXhwciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9ucyksIHNiLmhlbHBlcnMud3JhcFVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNiLnZpc2l0KGV4cHIsIHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9ucykpO1xuICAgICAgaGFuZGxlUmV0dXJuVHlwZUFzc2lnbm1lbnQoc2IuY29udGV4dCwgZXhwcik7XG4gICAgfVxuXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLnJldHVybik7XG4gIH1cbn1cbiJdfQ==