Follow-up #1 from step 2b: pack-fns that mix a non-pack comptime param with the trailing pack (e.g. `tagged($tag: s32, ..$args)`). Today's `isPackFn` requires the pack to be the ONLY comptime param; mixed shapes fall through to the inline `lowerComptimeCall` path. That path adds non-string comptime params to `comptime_param_nodes` for #insert substitution but does NOT bind them as runtime locals, so the body's bare `tag` reference hits "unresolved 'tag'" at the call site. Next commit: - Relax `isPackFn` to "exactly one trailing pack + any number of non-pack comptime params" so the mono path takes over. - Fold comptime VALUES into the mangled name (`tagged(7, ...)` and `tagged(9, ...)` get distinct monos so each body sees its own comptime constants). - Bind comptime args as both `comptime_param_nodes` (for #insert substitution) AND runtime locals (for bare-name references). String literals stay as string locals; int/bool/float literals become typed locals of the appropriate primitive type. This is the load-bearing prerequisite for step 6 (stdlib `print`/`format` refactor to `(\$fmt, ..\$args)`) — without mixed-mode mono support, stdlib stays on the inline path forever. 203/203 example tests + `zig build test` green (the lock-in captures the wrong-shape diagnostic as the snapshot to flip).
2 lines
2 B
Plaintext
2 lines
2 B
Plaintext
1
|