( pr: &SyntaxPreresolved, stt: &CompileState, bytes: &mut Vec<u8>, )
| 1558 | name: type_name.pretty(), |
| 1559 | caller: format!("{who} @ compile_expr(Proj)"), |
| 1560 | } |
| 1561 | })?; |
| 1562 | |
| 1563 | let (ref_idx, _) = cache.refs.insert_full(type_addr.clone()); |
| 1564 | let name_addr = compile_name(type_name, stt); |
| 1565 | |
| 1566 | stack.push(Frame::BuildProj(ref_idx as u64, idx_u64, name_addr)); |
| 1567 | stack.push(Frame::Compile(struct_val.clone())); |
| 1568 | }, |
| 1569 | |
| 1570 | ExprData::Mdata(kv, inner, _) => { |
| 1571 | // Compile KV map |
| 1572 | let mut pairs = Vec::new(); |
| 1573 | for (k, v) in kv { |
| 1574 | let k_addr = compile_name(k, stt); |
| 1575 | let v_data = compile_data_value(v, stt); |
| 1576 | pairs.push((k_addr, v_data)); |
| 1577 | } |
| 1578 | // Mdata becomes a separate arena node wrapping inner |
| 1579 | stack.push(Frame::WrapMdata(vec![pairs])); |
| 1580 | stack.push(Frame::Compile(inner.clone())); |
| 1581 | }, |
| 1582 |
no test coverage detected