UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

26 lines (24 loc) 4.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); const Helper_1 = require("../Helper"); class InvokeConstructHelper extends Helper_1.Helper { constructor(options = { noArgs: false }) { super(); this.noArgs = options.noArgs || false; } emit(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); sb.emitPushInt(node, constants_1.InternalObjectProperty.Construct); sb.emitHelper(node, options, sb.helpers.getInternalObjectProperty); sb.emitHelper(node, options, sb.helpers.bindFunctionThis({ overwrite: true })); if (this.noArgs) { sb.emitPushInt(node, 0); sb.emitOp(node, 'NEWARRAY'); sb.emitOp(node, 'SWAP'); } sb.emitHelper(node, optionsIn, sb.helpers.call); } } exports.InvokeConstructHelper = InvokeConstructHelper; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludm9rZUNvbnN0cnVjdEhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUF5RDtBQUd6RCxzQ0FBbUM7QUFRbkMsTUFBYSxxQkFBc0IsU0FBUSxlQUFNO0lBRy9DLFlBQW1CLFVBQXdDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUMxRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7SUFDeEMsQ0FBQztJQUVNLElBQUksQ0FBQyxFQUFpQixFQUFFLElBQWEsRUFBRSxTQUF1QjtRQUNuRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFL0MsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0NBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdkQsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUVuRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBRWYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFNUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7UUFFRCxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUEzQkQsc0RBMkJDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2Z1bmN0aW9uL0ludm9rZUNvbnN0cnVjdEhlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7IEludGVybmFsT2JqZWN0UHJvcGVydHkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyaXB0QnVpbGRlciB9IGZyb20gJy4uLy4uL3NiJztcbmltcG9ydCB7IFZpc2l0T3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4uL0hlbHBlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52b2tlQ29uc3RydWN0SGVscGVyT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG5vQXJncz86IGJvb2xlYW47XG59XG5cbi8vIElucHV0OiBbb2JqZWN0VmFsLCB0aGlzT2JqZWN0VmFsLCA/YXJnc2FycmF5XVxuLy8gT3V0cHV0OiBbXVxuZXhwb3J0IGNsYXNzIEludm9rZUNvbnN0cnVjdEhlbHBlciBleHRlbmRzIEhlbHBlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9BcmdzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBJbnZva2VDb25zdHJ1Y3RIZWxwZXJPcHRpb25zID0geyBub0FyZ3M6IGZhbHNlIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubm9BcmdzID0gb3B0aW9ucy5ub0FyZ3MgfHwgZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZW1pdChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSwgb3B0aW9uc0luOiBWaXNpdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2IucHVzaFZhbHVlT3B0aW9ucyhvcHRpb25zSW4pO1xuICAgIC8vIFsnY29uc3RydWN0Jywgb2JqZWN0VmFsLCB0aGlzT2JqZWN0VmFsLCA/YXJnc2FycmF5XVxuICAgIHNiLmVtaXRQdXNoSW50KG5vZGUsIEludGVybmFsT2JqZWN0UHJvcGVydHkuQ29uc3RydWN0KTtcbiAgICAvLyBbZnVuYywgdGhpc09iamVjdFZhbCwgP2FyZ3NhcnJheV1cbiAgICBzYi5lbWl0SGVscGVyKG5vZGUsIG9wdGlvbnMsIHNiLmhlbHBlcnMuZ2V0SW50ZXJuYWxPYmplY3RQcm9wZXJ0eSk7XG4gICAgLy8gW2Z1bmMsID9hcmdzYXJyYXldXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLmJpbmRGdW5jdGlvblRoaXMoeyBvdmVyd3JpdGU6IHRydWUgfSkpO1xuICAgIGlmICh0aGlzLm5vQXJncykge1xuICAgICAgLy8gWzAsIGZ1bmNdXG4gICAgICBzYi5lbWl0UHVzaEludChub2RlLCAwKTtcbiAgICAgIC8vIFthcmdzYXJyYXksIGZ1bmNdXG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ05FV0FSUkFZJyk7XG4gICAgICAvLyBbZnVuYywgYXJnc2FycmF5XVxuICAgICAgc2IuZW1pdE9wKG5vZGUsICdTV0FQJyk7XG4gICAgfVxuICAgIC8vIFtdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zSW4sIHNiLmhlbHBlcnMuY2FsbCk7XG4gIH1cbn1cbiJdfQ==