@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
28 lines (26 loc) • 4.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ts_utils_1 = require("@neo-one/ts-utils");
const BuiltinInstanceMemberCall_1 = require("../../BuiltinInstanceMemberCall");
class StorageForEach extends BuiltinInstanceMemberCall_1.BuiltinInstanceMemberCall {
constructor(type) {
super();
this.type = type;
}
canCall(_sb, _func, node) {
return ts_utils_1.tsUtils.argumented.getArguments(node).length === 1;
}
emitCall(sb, func, node, optionsIn, visited) {
const options = sb.pushValueOptions(optionsIn);
if (!visited) {
sb.visit(ts_utils_1.tsUtils.expression.getExpression(func), options);
}
if (ts_utils_1.tsUtils.argumented.getArguments(node).length < 1) {
return;
}
sb.visit(ts_utils_1.tsUtils.argumented.getArguments(node)[0], options);
sb.emitHelper(node, optionsIn, sb.helpers.forEachFuncStructuredStorage({ type: this.type }));
}
}
exports.StorageForEach = StorageForEach;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZvckVhY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBNEM7QUFLNUMsK0VBQTRFO0FBSTVFLE1BQWEsY0FBZSxTQUFRLHFEQUF5QjtJQUMzRCxZQUFvQyxJQUFtQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUQwQixTQUFJLEdBQUosSUFBSSxDQUFlO0lBRXZELENBQUM7SUFFTSxPQUFPLENBQUMsR0FBa0IsRUFBRSxLQUErQixFQUFFLElBQXVCO1FBQ3pGLE9BQU8sa0JBQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLFFBQVEsQ0FDYixFQUFpQixFQUNqQixJQUE4QixFQUM5QixJQUF1QixFQUN2QixTQUF1QixFQUN2QixPQUFnQjtRQUVoQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUVaLEVBQUUsQ0FBQyxLQUFLLENBQUMsa0JBQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxrQkFBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUVwRCxPQUFPO1NBQ1I7UUFHRCxFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU1RCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FDRjtBQWhDRCx3Q0FnQ0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9jb250cmFjdC9zdG9yYWdlL2ZvckVhY2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgV3JhcHBhYmxlVHlwZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQnVpbHRpbkluc3RhbmNlTWVtYmVyQ2FsbCB9IGZyb20gJy4uLy4uL0J1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwnO1xuaW1wb3J0IHsgQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgZXhwb3J0LW5hbWVcbmV4cG9ydCBjbGFzcyBTdG9yYWdlRm9yRWFjaCBleHRlbmRzIEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlOiBXcmFwcGFibGVUeXBlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5DYWxsKF9zYjogU2NyaXB0QnVpbGRlciwgX2Z1bmM6IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbiwgbm9kZTogdHMuQ2FsbEV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHNVdGlscy5hcmd1bWVudGVkLmdldEFyZ3VtZW50cyhub2RlKS5sZW5ndGggPT09IDE7XG4gIH1cblxuICBwdWJsaWMgZW1pdENhbGwoXG4gICAgc2I6IFNjcmlwdEJ1aWxkZXIsXG4gICAgZnVuYzogQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uLFxuICAgIG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLFxuICAgIG9wdGlvbnNJbjogVmlzaXRPcHRpb25zLFxuICAgIHZpc2l0ZWQ6IGJvb2xlYW4sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG4gICAgaWYgKCF2aXNpdGVkKSB7XG4gICAgICAvLyBbYXJyYXlWYWxdXG4gICAgICBzYi52aXNpdCh0c1V0aWxzLmV4cHJlc3Npb24uZ2V0RXhwcmVzc2lvbihmdW5jKSwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKHRzVXRpbHMuYXJndW1lbnRlZC5nZXRBcmd1bWVudHMobm9kZSkubGVuZ3RoIDwgMSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBbb2JqZWN0VmFsLCB2YWxdXG4gICAgc2IudmlzaXQodHNVdGlscy5hcmd1bWVudGVkLmdldEFyZ3VtZW50cyhub2RlKVswXSwgb3B0aW9ucyk7XG4gICAgLy8gW11cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnNJbiwgc2IuaGVscGVycy5mb3JFYWNoRnVuY1N0cnVjdHVyZWRTdG9yYWdlKHsgdHlwZTogdGhpcy50eXBlIH0pKTtcbiAgfVxufVxuIl19