UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

41 lines (39 loc) 5.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const Helper_1 = require("../Helper"); class ProcessStatementsHelper extends Helper_1.Helper { constructor({ createScope }) { super(); this.createScope = createScope; } emit(sb, node, options) { if (this.createScope) { sb.withScope(node, options, (innerOptions) => { this.emitStatements(sb, node, innerOptions); }); } else { this.emitStatements(sb, node, options); } } emitStatements(sb, node, options) { ts_utils_1.tsUtils.statement.getFunctions(node).forEach((func) => { const name = ts_utils_1.tsUtils.node.getName(func); if (name !== undefined) { sb.scope.add(name); } }); ts_utils_1.tsUtils.statement.getVariableDeclarations(node).forEach((decl) => { const name = ts_utils_1.tsUtils.node.getName(decl); if (name !== undefined) { sb.scope.add(name); } }); ts_utils_1.tsUtils.statement.getStatements(node).forEach((statement) => { sb.visit(statement, sb.noValueOptions(options)); }); } } exports.ProcessStatementsHelper = ProcessStatementsHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2Nlc3NTdGF0ZW1lbnRzSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsZ0RBQTZEO0FBRzdELHNDQUFtQztBQU1uQyxNQUFhLHVCQUF3QixTQUFRLGVBQXVCO0lBRWxFLFlBQW1CLEVBQUUsV0FBVyxFQUFrQztRQUNoRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFDTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFxQixFQUFFLE9BQXFCO1FBQ3pFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsRUFBaUIsRUFBRSxJQUFxQixFQUFFLE9BQXFCO1FBQ3BGLGtCQUFPLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNwRCxNQUFNLElBQUksR0FBRyxrQkFBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUN0QixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsa0JBQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0QsTUFBTSxJQUFJLEdBQUcsa0JBQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtnQkFDdEIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILGtCQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMxRCxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQ0QsMERBaUNDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL3N0YXRlbWVudC9Qcm9jZXNzU3RhdGVtZW50c0hlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlIG5vLWFueVxuaW1wb3J0IHsgU3RhdGVtZW50ZWROb2RlLCB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL0hlbHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1N0YXRlbWVudHNIZWxwZXJPcHRpb25zIHtcbiAgcmVhZG9ubHkgY3JlYXRlU2NvcGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9jZXNzU3RhdGVtZW50c0hlbHBlciBleHRlbmRzIEhlbHBlcjxTdGF0ZW1lbnRlZE5vZGU+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjcmVhdGVTY29wZTogYm9vbGVhbjtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHsgY3JlYXRlU2NvcGUgfTogUHJvY2Vzc1N0YXRlbWVudHNIZWxwZXJPcHRpb25zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNyZWF0ZVNjb3BlID0gY3JlYXRlU2NvcGU7XG4gIH1cbiAgcHVibGljIGVtaXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IFN0YXRlbWVudGVkTm9kZSwgb3B0aW9uczogVmlzaXRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3JlYXRlU2NvcGUpIHtcbiAgICAgIHNiLndpdGhTY29wZShub2RlLCBvcHRpb25zLCAoaW5uZXJPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdFN0YXRlbWVudHMoc2IsIG5vZGUsIGlubmVyT3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0U3RhdGVtZW50cyhzYiwgbm9kZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U3RhdGVtZW50cyhzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogU3RhdGVtZW50ZWROb2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICB0c1V0aWxzLnN0YXRlbWVudC5nZXRGdW5jdGlvbnMobm9kZSkuZm9yRWFjaCgoZnVuYykgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRzVXRpbHMubm9kZS5nZXROYW1lKGZ1bmMpO1xuICAgICAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzYi5zY29wZS5hZGQobmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdHNVdGlscy5zdGF0ZW1lbnQuZ2V0VmFyaWFibGVEZWNsYXJhdGlvbnMobm9kZSkuZm9yRWFjaCgoZGVjbCkgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRzVXRpbHMubm9kZS5nZXROYW1lKGRlY2wpO1xuICAgICAgaWYgKG5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzYi5zY29wZS5hZGQobmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdHNVdGlscy5zdGF0ZW1lbnQuZ2V0U3RhdGVtZW50cyhub2RlKS5mb3JFYWNoKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIHNiLnZpc2l0KHN0YXRlbWVudCwgc2Iubm9WYWx1ZU9wdGlvbnMob3B0aW9ucykpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=