UNPKG

walt-compiler

Version:

Alternative syntax for WebAssembly text format

23 lines (19 loc) 674 B
// @flow import mapSyntax from './map-syntax'; import mergeBlock from './merge-block'; import opcode from '../emitter/opcode'; import type { GeneratorType } from './flow/types'; const generateTernary: GeneratorType = (node, parent) => { // TernaryExpression has a param layout of 3(TWO) total parameters. // [truthy, falsy, condition] // The whole thing is encoded as an Select opcode // // NOTE: The use of select means both "branches" are evaluated, even if not selected const block = node.params.map(mapSyntax(parent)).reduce(mergeBlock, []); block.push({ kind: opcode.Select, params: [], }); return block; }; export default generateTernary;