UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

73 lines (71 loc) 2.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.add = void 0; const BuiltinInstanceOf_1 = require("../BuiltinInstanceOf"); const BuiltinInterface_1 = require("../BuiltinInterface"); const concat_1 = require("./concat"); const entries_1 = require("./entries"); const every_1 = require("./every"); const filter_1 = require("./filter"); const forEach_1 = require("./forEach"); const iterator_1 = require("./iterator"); const join_1 = require("./join"); const length_1 = require("./length"); const map_1 = require("./map"); const pop_1 = require("./pop"); const push_1 = require("./push"); const reduce_1 = require("./reduce"); const slice_1 = require("./slice"); const some_1 = require("./some"); const toString_1 = require("./toString"); class ArrayInterface extends BuiltinInterface_1.BuiltinInterface { } class ReadonlyArrayInterface extends BuiltinInterface_1.BuiltinInterface { } class ArrayValue extends BuiltinInstanceOf_1.BuiltinInstanceOf { constructor() { super(...arguments); this.type = 'ArrayConstructor'; } emitInstanceOf(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.visit(node, options); if (optionsIn.pushValue) { sb.emitHelper(node, options, sb.helpers.isArray); sb.emitHelper(node, options, sb.helpers.wrapBoolean); } else { sb.emitOp(node, 'DROP'); } } } class ArrayConstructorInterface extends BuiltinInterface_1.BuiltinInterface { } const COMMON = [ ['filter', new filter_1.ArrayFilter()], ['forEach', new forEach_1.ArrayForEach()], ['__@iterator', new iterator_1.ArrayIterator()], ['length', new length_1.ArrayLength()], ['map', new map_1.ArrayMap()], ['reduce', new reduce_1.ArrayReduce()], ['toString', new toString_1.ArrayToString()], ['concat', new concat_1.ArrayConcat()], ['join', new join_1.ArrayJoin()], ['slice', new slice_1.ArraySlice()], ['some', new some_1.ArraySome()], ['every', new every_1.ArrayEvery()], ['entries', new entries_1.ArrayEntries()], ]; exports.add = (builtins) => { builtins.addInterface('Array', new ArrayInterface()); builtins.addInterface('ReadonlyArray', new ReadonlyArrayInterface()); builtins.addValue('Array', new ArrayValue()); COMMON.forEach(([name, builtin]) => { builtins.addGlobalMember('Array', name, builtin); builtins.addGlobalMember('ReadonlyArray', name, builtin); }); builtins.addGlobalMember('Array', 'pop', new pop_1.ArrayPop()); builtins.addGlobalMember('Array', 'push', new push_1.ArrayPush()); builtins.addInterface('ArrayConstructor', new ArrayConstructorInterface()); }; //# sourceMappingURL=index.js.map