UNPKG

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

Version:

NEO•ONE TypeScript smart contract compiler.

47 lines (45 loc) 1.61 kB
import { tsUtils } from '@neo-one/ts-utils-esnext-esm'; import { Helper } from '../../Helper'; export class InObjectPropertyHelper extends Helper { constructor({ propType }) { super(); this.propType = propType; } emit(sb, node, options) { if (!options.pushValue) { sb.emitOp(node, 'DROP'); sb.emitOp(node, 'DROP'); return; } const handleSymbol = () => { sb.emitHelper(node, options, sb.helpers.unwrapSymbol); sb.emitHelper(node, options, sb.helpers.inSymbolObjectProperty); }; const handleString = () => { sb.emitHelper(node, options, sb.helpers.toString({ type: this.propType })); sb.emitHelper(node, options, sb.helpers.inPropertyObjectProperty); }; if (this.propType === undefined || (tsUtils.type_.hasSymbolish(this.propType) && !tsUtils.type_.isOnlySymbolish(this.propType))) { sb.emitHelper(node, options, sb.helpers.if({ condition: () => { sb.emitOp(node, 'DUP'); sb.emitHelper(node, options, sb.helpers.isSymbol); }, whenTrue: () => { handleSymbol(); }, whenFalse: () => { handleString(); }, })); } else if (tsUtils.type_.isOnlySymbolish(this.propType)) { handleSymbol(); } else { handleString(); } } } //# sourceMappingURL=InObjectPropertyHelper.js.map