Function getParamBody [src]

Prototype

pub fn getParamBody(zir: Zir, fn_inst: Inst.Index) []const Zir.Inst.Index

Parameters

zir: Zirfn_inst: Inst.Index

Source

pub fn getParamBody(zir: Zir, fn_inst: Inst.Index) []const Zir.Inst.Index { const tags = zir.instructions.items(.tag); const datas = zir.instructions.items(.data); const inst_data = datas[@intFromEnum(fn_inst)].pl_node; const param_block_index = switch (tags[@intFromEnum(fn_inst)]) { .func, .func_inferred => blk: { const extra = zir.extraData(Inst.Func, inst_data.payload_index); break :blk extra.data.param_block; }, .func_fancy => blk: { const extra = zir.extraData(Inst.FuncFancy, inst_data.payload_index); break :blk extra.data.param_block; }, else => unreachable, }; switch (tags[@intFromEnum(param_block_index)]) { .block, .block_comptime, .block_inline => { const param_block = zir.extraData(Inst.Block, datas[@intFromEnum(param_block_index)].pl_node.payload_index); return zir.bodySlice(param_block.end, param_block.data.body_len); }, .declaration => { return zir.getDeclaration(param_block_index).value_body.?; }, else => unreachable, } }