Step 2 of the variadic heterogeneous type packs feature: typed runtime indexing (`args[$i]` at comptime-known `$i`). Today's pack-fn body lowers `args[i]` through the `[]Any` slice path — the static type returned is `Any`, so any downstream field access / typed-coercion / further indexing fails the moment it needs more than primitive auto-unboxing. `examples/156-pack-typed-index.sx` pins the simplest visible failure: `args[0].x` on a struct-typed call arg trips "field 'x' not found on type 'Any'" at the field-access site because AST-level type inference for `args[0]` returns Any. Next commit teaches `lowerIndexExpr` (and `inferExprType` for the same shape) to detect an index_expr whose base is a pack-name binding from the enclosing comptime call AND whose index is a comptime int literal — substitutes the i-th call-site arg's lowered value directly, propagating the call arg's concrete type through field access, typed assignments, and further indexing. The `[]Any` slice path stays as the runtime-indexed fallback for `args[i]` where `i` is not a comptime constant. 195/195 example tests + `zig build test` green.
2 lines
2 B
Plaintext
2 lines
2 B
Plaintext
1
|