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