UNPKG

@neo-one/smart-contract-compiler-esnext-esm

Version:

NEO•ONE TypeScript smart contract compiler.

66 lines (64 loc) 2.31 kB
import { TypedHelper } from '../TypedHelper'; export class ToBooleanHelper extends TypedHelper { emit(sb, node, options) { if (!options.pushValue) { sb.emitOp(node, 'DROP'); return; } const convertUndefinedOrNull = () => { sb.emitOp(node, 'DROP'); sb.emitPushBoolean(node, false); }; const convertBoolean = (innerOptions) => { sb.emitHelper(node, innerOptions, sb.helpers.unwrapBoolean); }; const convertNumber = (innerOptions) => { sb.emitHelper(node, innerOptions, sb.helpers.unwrapNumber); sb.emitPushInt(node, 0); sb.emitOp(node, 'NUMNOTEQUAL'); }; const convertString = (innerOptions) => { sb.emitHelper(node, innerOptions, sb.helpers.unwrapString); sb.emitPushString(node, ''); sb.emitOp(node, 'EQUAL'); sb.emitOp(node, 'NOT'); }; const convertOther = () => { sb.emitOp(node, 'DROP'); sb.emitPushBoolean(node, true); }; sb.emitHelper(node, options, sb.helpers.forBuiltinType({ type: this.type, knownType: this.knownType, array: convertOther, arrayStorage: convertOther, boolean: convertBoolean, buffer: convertOther, null: convertUndefinedOrNull, number: convertNumber, object: convertOther, string: convertString, symbol: convertOther, undefined: convertUndefinedOrNull, map: convertOther, mapStorage: convertOther, set: convertOther, setStorage: convertOther, error: convertOther, forwardValue: convertOther, iteratorResult: convertOther, iterable: convertOther, iterableIterator: convertOther, transaction: convertOther, output: convertOther, attribute: convertOther, input: convertOther, account: convertOther, asset: convertOther, contract: convertOther, header: convertOther, block: convertOther, })); } } //# sourceMappingURL=ToBooleanHelper.js.map