UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

28 lines (26 loc) 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ts_utils_1 = require("@neo-one/ts-utils"); const BuiltinInstanceMemberCall_1 = require("../BuiltinInstanceMemberCall"); class SetIterator extends BuiltinInstanceMemberCall_1.BuiltinInstanceMemberCall { canCall() { return true; } emitCall(sb, func, node, options, visited) { if (!options.pushValue) { if (visited) { sb.emitOp(node, 'DROP'); } return; } if (!visited) { sb.visit(ts_utils_1.tsUtils.expression.getExpression(func), options); } sb.emitHelper(node, options, sb.helpers.unwrapMap); sb.emitSysCall(node, 'Neo.Iterator.Create'); sb.emitSysCall(node, 'Neo.Iterator.Keys'); sb.emitHelper(node, options, sb.helpers.createEnumeratorIterableIterator({})); } } exports.SetIterator = SetIterator; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0RBQTRDO0FBSTVDLDRFQUF5RTtBQUl6RSxNQUFhLFdBQVksU0FBUSxxREFBeUI7SUFDakQsT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLFFBQVEsQ0FDYixFQUFpQixFQUNqQixJQUE4QixFQUM5QixJQUF1QixFQUN2QixPQUFxQixFQUNyQixPQUFnQjtRQUVoQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN0QixJQUFJLE9BQU8sRUFBRTtnQkFFWCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQzthQUN6QjtZQUVELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFFWixFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMzRDtRQUdELEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5ELEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFFNUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUUxQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7Q0FDRjtBQWxDRCxrQ0FrQ0MiLCJmaWxlIjoibmVvLW9uZS1zbWFydC1jb250cmFjdC1jb21waWxlci9zcmMvY29tcGlsZS9idWlsdGlucy9zZXQvaXRlcmF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1aWx0aW5JbnN0YW5jZU1lbWJlckNhbGwgfSBmcm9tICcuLi9CdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsJztcbmltcG9ydCB7IENhbGxNZW1iZXJMaWtlRXhwcmVzc2lvbiB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIGV4cG9ydC1uYW1lXG5leHBvcnQgY2xhc3MgU2V0SXRlcmF0b3IgZXh0ZW5kcyBCdWlsdGluSW5zdGFuY2VNZW1iZXJDYWxsIHtcbiAgcHVibGljIGNhbkNhbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZW1pdENhbGwoXG4gICAgc2I6IFNjcmlwdEJ1aWxkZXIsXG4gICAgZnVuYzogQ2FsbE1lbWJlckxpa2VFeHByZXNzaW9uLFxuICAgIG5vZGU6IHRzLkNhbGxFeHByZXNzaW9uLFxuICAgIG9wdGlvbnM6IFZpc2l0T3B0aW9ucyxcbiAgICB2aXNpdGVkOiBib29sZWFuLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMucHVzaFZhbHVlKSB7XG4gICAgICBpZiAodmlzaXRlZCkge1xuICAgICAgICAvLyBbXVxuICAgICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXZpc2l0ZWQpIHtcbiAgICAgIC8vIFthcnJheVZhbF1cbiAgICAgIHNiLnZpc2l0KHRzVXRpbHMuZXhwcmVzc2lvbi5nZXRFeHByZXNzaW9uKGZ1bmMpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBbbWFwXVxuICAgIHNiLmVtaXRIZWxwZXIobm9kZSwgb3B0aW9ucywgc2IuaGVscGVycy51bndyYXBNYXApO1xuICAgIC8vIFtpdGVyYXRvcl1cbiAgICBzYi5lbWl0U3lzQ2FsbChub2RlLCAnTmVvLkl0ZXJhdG9yLkNyZWF0ZScpO1xuICAgIC8vIFtlbnVtZXJhdG9yXVxuICAgIHNiLmVtaXRTeXNDYWxsKG5vZGUsICdOZW8uSXRlcmF0b3IuS2V5cycpO1xuICAgIC8vIFt2YWxdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmNyZWF0ZUVudW1lcmF0b3JJdGVyYWJsZUl0ZXJhdG9yKHt9KSk7XG4gIH1cbn1cbiJdfQ==