UNPKG

walt-compiler

Version:

Alternative syntax for WebAssembly text format

31 lines (24 loc) 772 B
// @flow import { i32 } from 'walt-syntax'; import generateExpression from './expression'; import { isBuiltinType } from './utils'; import opcode from '../emitter/opcode'; import { LOCAL_INDEX } from '../semantics/metadata'; import type { GeneratorType } from './flow/types'; const generateDeclaration: GeneratorType = (node, parent) => { const initNode = node.params[0]; if (initNode) { const metaIndex = node.meta[LOCAL_INDEX]; const type = isBuiltinType(node.type) ? node.type : i32; return [ ...generateExpression({ ...initNode, type }, parent), { kind: opcode.SetLocal, params: [metaIndex], debug: `${node.value}<${String(node.type)}>`, }, ]; } return []; }; export default generateDeclaration;