UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

31 lines (29 loc) 1.34 kB
import { tsUtils } from '@neo-one/ts-utils'; import { Helper } from '../Helper'; import { handleReturnTypeAssignment } from '../types'; export class CreateCallArrayHelper extends Helper { emit(sb, node, outerOptions) { if (!outerOptions.pushValue) { return; } sb.emitHelper(node, outerOptions, sb.helpers.createFunctionArray({ body: (innerOptions) => { sb.withScope(node, innerOptions, (options) => { sb.emitHelper(node, options, sb.helpers.parameters({ params: tsUtils.parametered.getParameters(node) })); const body = tsUtils.body.getBodyOrThrow(node); if (tsUtils.guards.isExpression(body)) { sb.visit(body, sb.pushValueOptions(options)); handleReturnTypeAssignment(sb.context, body); sb.emitHelper(node, options, sb.helpers.return); } else { sb.visit(body, options); sb.emitHelper(node, sb.pushValueOptions(options), sb.helpers.wrapUndefined); sb.emitHelper(node, options, sb.helpers.return); } }); }, })); } } //# sourceMappingURL=CreateCallArrayHelper.js.map