UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

61 lines (59 loc) 7.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ts_utils_1 = require("@neo-one/ts-utils"); const typescript_1 = tslib_1.__importDefault(require("typescript")); const NodeCompiler_1 = require("../NodeCompiler"); class TypeOfExpressionCompiler extends NodeCompiler_1.NodeCompiler { constructor() { super(...arguments); this.kind = typescript_1.default.SyntaxKind.TypeOfExpression; } visitNode(sb, node, optionsIn) { const options = sb.pushValueOptions(optionsIn); const expr = ts_utils_1.tsUtils.expression.getExpression(node); const createPushString = (value) => () => { sb.emitOp(node, 'DROP'); sb.emitPushString(node, value); }; const pushObject = createPushString('object'); sb.visit(expr, options); sb.emitHelper(node, options, sb.helpers.forBuiltinType({ type: sb.context.analysis.getType(expr), array: pushObject, arrayStorage: pushObject, boolean: createPushString('boolean'), buffer: pushObject, null: createPushString('null'), number: createPushString('number'), object: pushObject, string: createPushString('string'), symbol: createPushString('symbol'), undefined: createPushString('undefined'), map: pushObject, mapStorage: pushObject, set: pushObject, setStorage: pushObject, error: pushObject, forwardValue: pushObject, iteratorResult: pushObject, iterable: pushObject, iterableIterator: pushObject, transaction: pushObject, output: pushObject, attribute: pushObject, input: pushObject, account: pushObject, asset: pushObject, contract: pushObject, header: pushObject, block: pushObject, })); sb.emitHelper(node, options, sb.helpers.wrapString); if (!optionsIn.pushValue) { sb.emitOp(node, 'DROP'); } } } exports.TypeOfExpressionCompiler = TypeOfExpressionCompiler; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlR5cGVPZkV4cHJlc3Npb25Db21waWxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnREFBNEM7QUFDNUMsb0VBQTRCO0FBQzVCLGtEQUErQztBQUkvQyxNQUFhLHdCQUF5QixTQUFRLDJCQUFpQztJQUEvRTs7UUFDa0IsU0FBSSxHQUFHLG9CQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0lBeUR4RCxDQUFDO0lBdkRRLFNBQVMsQ0FBQyxFQUFpQixFQUFFLElBQXlCLEVBQUUsU0FBdUI7UUFDcEYsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sSUFBSSxHQUFHLGtCQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDeEIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFHOUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEIsRUFBRSxDQUFDLFVBQVUsQ0FDWCxJQUFJLEVBQ0osT0FBTyxFQUNQLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1lBQ3hCLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3ZDLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFlBQVksRUFBRSxVQUFVO1lBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDcEMsTUFBTSxFQUFFLFVBQVU7WUFDbEIsSUFBSSxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztZQUM5QixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBQ2xDLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDbEMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztZQUNsQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1lBQ3hDLEdBQUcsRUFBRSxVQUFVO1lBQ2YsVUFBVSxFQUFFLFVBQVU7WUFDdEIsR0FBRyxFQUFFLFVBQVU7WUFDZixVQUFVLEVBQUUsVUFBVTtZQUN0QixLQUFLLEVBQUUsVUFBVTtZQUNqQixZQUFZLEVBQUUsVUFBVTtZQUN4QixjQUFjLEVBQUUsVUFBVTtZQUMxQixRQUFRLEVBQUUsVUFBVTtZQUNwQixnQkFBZ0IsRUFBRSxVQUFVO1lBQzVCLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLEtBQUssRUFBRSxVQUFVO1NBQ2xCLENBQUMsQ0FDSCxDQUFDO1FBRUYsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDeEIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDekI7SUFDSCxDQUFDO0NBQ0Y7QUExREQsNERBMERDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvZXhwcmVzc2lvbi9UeXBlT2ZFeHByZXNzaW9uQ29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0c1V0aWxzIH0gZnJvbSAnQG5lby1vbmUvdHMtdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuaW1wb3J0IHsgTm9kZUNvbXBpbGVyIH0gZnJvbSAnLi4vTm9kZUNvbXBpbGVyJztcbmltcG9ydCB7IFNjcmlwdEJ1aWxkZXIgfSBmcm9tICcuLi9zYic7XG5pbXBvcnQgeyBWaXNpdE9wdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBUeXBlT2ZFeHByZXNzaW9uQ29tcGlsZXIgZXh0ZW5kcyBOb2RlQ29tcGlsZXI8dHMuVHlwZU9mRXhwcmVzc2lvbj4ge1xuICBwdWJsaWMgcmVhZG9ubHkga2luZCA9IHRzLlN5bnRheEtpbmQuVHlwZU9mRXhwcmVzc2lvbjtcblxuICBwdWJsaWMgdmlzaXROb2RlKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5UeXBlT2ZFeHByZXNzaW9uLCBvcHRpb25zSW46IFZpc2l0T3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBzYi5wdXNoVmFsdWVPcHRpb25zKG9wdGlvbnNJbik7XG5cbiAgICBjb25zdCBleHByID0gdHNVdGlscy5leHByZXNzaW9uLmdldEV4cHJlc3Npb24obm9kZSk7XG4gICAgY29uc3QgY3JlYXRlUHVzaFN0cmluZyA9ICh2YWx1ZTogc3RyaW5nKSA9PiAoKSA9PiB7XG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICAgIHNiLmVtaXRQdXNoU3RyaW5nKG5vZGUsIHZhbHVlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcHVzaE9iamVjdCA9IGNyZWF0ZVB1c2hTdHJpbmcoJ29iamVjdCcpO1xuXG4gICAgLy8gW2V4cHJdXG4gICAgc2IudmlzaXQoZXhwciwgb3B0aW9ucyk7XG4gICAgc2IuZW1pdEhlbHBlcihcbiAgICAgIG5vZGUsXG4gICAgICBvcHRpb25zLFxuICAgICAgc2IuaGVscGVycy5mb3JCdWlsdGluVHlwZSh7XG4gICAgICAgIHR5cGU6IHNiLmNvbnRleHQuYW5hbHlzaXMuZ2V0VHlwZShleHByKSxcbiAgICAgICAgYXJyYXk6IHB1c2hPYmplY3QsXG4gICAgICAgIGFycmF5U3RvcmFnZTogcHVzaE9iamVjdCxcbiAgICAgICAgYm9vbGVhbjogY3JlYXRlUHVzaFN0cmluZygnYm9vbGVhbicpLFxuICAgICAgICBidWZmZXI6IHB1c2hPYmplY3QsXG4gICAgICAgIG51bGw6IGNyZWF0ZVB1c2hTdHJpbmcoJ251bGwnKSxcbiAgICAgICAgbnVtYmVyOiBjcmVhdGVQdXNoU3RyaW5nKCdudW1iZXInKSxcbiAgICAgICAgb2JqZWN0OiBwdXNoT2JqZWN0LFxuICAgICAgICBzdHJpbmc6IGNyZWF0ZVB1c2hTdHJpbmcoJ3N0cmluZycpLFxuICAgICAgICBzeW1ib2w6IGNyZWF0ZVB1c2hTdHJpbmcoJ3N5bWJvbCcpLFxuICAgICAgICB1bmRlZmluZWQ6IGNyZWF0ZVB1c2hTdHJpbmcoJ3VuZGVmaW5lZCcpLFxuICAgICAgICBtYXA6IHB1c2hPYmplY3QsXG4gICAgICAgIG1hcFN0b3JhZ2U6IHB1c2hPYmplY3QsXG4gICAgICAgIHNldDogcHVzaE9iamVjdCxcbiAgICAgICAgc2V0U3RvcmFnZTogcHVzaE9iamVjdCxcbiAgICAgICAgZXJyb3I6IHB1c2hPYmplY3QsXG4gICAgICAgIGZvcndhcmRWYWx1ZTogcHVzaE9iamVjdCxcbiAgICAgICAgaXRlcmF0b3JSZXN1bHQ6IHB1c2hPYmplY3QsXG4gICAgICAgIGl0ZXJhYmxlOiBwdXNoT2JqZWN0LFxuICAgICAgICBpdGVyYWJsZUl0ZXJhdG9yOiBwdXNoT2JqZWN0LFxuICAgICAgICB0cmFuc2FjdGlvbjogcHVzaE9iamVjdCxcbiAgICAgICAgb3V0cHV0OiBwdXNoT2JqZWN0LFxuICAgICAgICBhdHRyaWJ1dGU6IHB1c2hPYmplY3QsXG4gICAgICAgIGlucHV0OiBwdXNoT2JqZWN0LFxuICAgICAgICBhY2NvdW50OiBwdXNoT2JqZWN0LFxuICAgICAgICBhc3NldDogcHVzaE9iamVjdCxcbiAgICAgICAgY29udHJhY3Q6IHB1c2hPYmplY3QsXG4gICAgICAgIGhlYWRlcjogcHVzaE9iamVjdCxcbiAgICAgICAgYmxvY2s6IHB1c2hPYmplY3QsXG4gICAgICB9KSxcbiAgICApO1xuICAgIC8vIFt2YWxdXG4gICAgc2IuZW1pdEhlbHBlcihub2RlLCBvcHRpb25zLCBzYi5oZWxwZXJzLndyYXBTdHJpbmcpO1xuXG4gICAgaWYgKCFvcHRpb25zSW4ucHVzaFZhbHVlKSB7XG4gICAgICBzYi5lbWl0T3Aobm9kZSwgJ0RST1AnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==