UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

32 lines (30 loc) 4.87 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 NodeCompiler_1 = require("../NodeCompiler"); class VariableStatementCompiler extends NodeCompiler_1.NodeCompiler { constructor() { super(...arguments); this.kind = typescript_1.default.SyntaxKind.VariableStatement; } visitNode(sb, node, optionsIn) { sb.visit(ts_utils_1.tsUtils.variable.getDeclarationList(node), optionsIn); if (ts_utils_1.tsUtils.modifier.isNamedExport(node)) { const options = sb.pushValueOptions(optionsIn); sb.emitHelper(node, options, sb.helpers.getCurrentModule); ts_utils_1.tsUtils.variable.getDeclarations(ts_utils_1.tsUtils.variable.getDeclarationList(node)).forEach((decl) => { const name = ts_utils_1.tsUtils.node.getName(decl); if (name !== undefined) { sb.emitOp(node, 'DUP'); sb.scope.get(sb, node, options, name); sb.emitHelper(node, options, sb.helpers.export({ name: ts_utils_1.tsUtils.node.getName(decl) })); } }); sb.emitOp(node, 'DROP'); } } } exports.VariableStatementCompiler = VariableStatementCompiler; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlZhcmlhYmxlU3RhdGVtZW50Q29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQTRDO0FBQzVDLG9FQUE0QjtBQUM1QixrREFBK0M7QUFJL0MsTUFBYSx5QkFBMEIsU0FBUSwyQkFBa0M7SUFBakY7O1FBQ2tCLFNBQUksR0FBRyxvQkFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztJQXlCekQsQ0FBQztJQXZCUSxTQUFTLENBQUMsRUFBaUIsRUFBRSxJQUEwQixFQUFFLFNBQXVCO1FBQ3JGLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFL0QsSUFBSSxrQkFBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRy9DLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDMUQsa0JBQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGtCQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQzNGLE1BQU0sSUFBSSxHQUFHLGtCQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO29CQUV0QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFdkIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBRXRDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZGO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7Q0FDRjtBQTFCRCw4REEwQkMiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9zdGF0ZW1lbnQvVmFyaWFibGVTdGF0ZW1lbnRDb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRzVXRpbHMgfSBmcm9tICdAbmVvLW9uZS90cy11dGlscyc7XG5pbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBOb2RlQ29tcGlsZXIgfSBmcm9tICcuLi9Ob2RlQ29tcGlsZXInO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlU3RhdGVtZW50Q29tcGlsZXIgZXh0ZW5kcyBOb2RlQ29tcGlsZXI8dHMuVmFyaWFibGVTdGF0ZW1lbnQ+IHtcbiAgcHVibGljIHJlYWRvbmx5IGtpbmQgPSB0cy5TeW50YXhLaW5kLlZhcmlhYmxlU3RhdGVtZW50O1xuXG4gIHB1YmxpYyB2aXNpdE5vZGUoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLlZhcmlhYmxlU3RhdGVtZW50LCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIHNiLnZpc2l0KHRzVXRpbHMudmFyaWFibGUuZ2V0RGVjbGFyYXRpb25MaXN0KG5vZGUpLCBvcHRpb25zSW4pO1xuXG4gICAgaWYgKHRzVXRpbHMubW9kaWZpZXIuaXNOYW1lZEV4cG9ydChub2RlKSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHNiLnB1c2hWYWx1ZU9wdGlvbnMob3B0aW9uc0luKTtcblxuICAgICAgLy8gW2V4cG9ydHNdXG4gICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZ2V0Q3VycmVudE1vZHVsZSk7XG4gICAgICB0c1V0aWxzLnZhcmlhYmxlLmdldERlY2xhcmF0aW9ucyh0c1V0aWxzLnZhcmlhYmxlLmdldERlY2xhcmF0aW9uTGlzdChub2RlKSkuZm9yRWFjaCgoZGVjbCkgPT4ge1xuICAgICAgICBjb25zdCBuYW1lID0gdHNVdGlscy5ub2RlLmdldE5hbWUoZGVjbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBbZXhwb3J0cywgZXhwb3J0c11cbiAgICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RVUCcpO1xuICAgICAgICAgIC8vIFt2YWwsIGV4cG9ydHMsIGV4cG9ydHNdXG4gICAgICAgICAgc2Iuc2NvcGUuZ2V0KHNiLCBub2RlLCBvcHRpb25zLCBuYW1lKTtcbiAgICAgICAgICAvLyBbZXhwb3J0c11cbiAgICAgICAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZXhwb3J0KHsgbmFtZTogdHNVdGlscy5ub2RlLmdldE5hbWUoZGVjbCkgfSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIFtdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==