@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
32 lines (30 loc) • 4.87 kB
JavaScript
;
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==