agra
097d23d909
fix: presence-preserving optional->optional coercion (issue 0180)
...
The generic-?? wrong-fallback was not in lowerNullCoalesce: coercing
?A -> ?B (differing payload, e.g. the ?i32->?i64 call-arg coercion when
instantiating unwrap_or(99, ?i32)) routed through .optional_wrap, which
unconditionally unwrapped the source and re-wrapped as ALWAYS-PRESENT, so
a null became present-zero everywhere (args, returns, field init,
var-decl, ??). Add a CoercionPlan.optional_to_optional (conversions.zig)
+ a presence-preserving arm in coerceMode (coerce.zig): has_value ->
present: unwrap+coerce-child+wrap-present; absent: constNull(dst); merge
via a dst_ty block param. lowerVarDecl gains a !src_is_optional guard so
an annotated x : ?B = <?A> routes through the same arm (also makes
aggregate-payload var-decl ?[3]i64->?[]i64 / ?Concrete->?Protocol work).
Alias-optional struct-literal default already works (grouping + 0166);
a 1-tuple default ?(i32,) ?? 5 now emits a clean diagnostic instead of an
LLVM PHI abort (no implicit scalar->1-tuple coercion per spec).
Regressions: optionals/0916 (generic ??), 0917 (alias struct default),
0918 (var-decl optional->optional), diagnostics/1202 (1-tuple default) +
a conversions.test.zig unit test. Verified by 3 adversarial reviews,
suite 798/0.
2026-06-23 16:16:47 +03:00
..
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-22 21:54:12 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-22 11:55:19 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-22 09:45:17 +03:00
2026-06-22 09:45:17 +03:00
2026-06-22 09:45:17 +03:00
2026-06-22 10:15:18 +03:00
2026-06-22 10:15:18 +03:00
2026-06-22 10:15:18 +03:00
2026-06-22 17:55:18 +03:00
2026-06-22 17:55:18 +03:00
2026-06-22 17:55:18 +03:00
2026-06-22 21:04:05 +03:00
2026-06-22 21:04:05 +03:00
2026-06-22 21:04:05 +03:00
2026-06-23 00:25:28 +03:00
2026-06-23 00:25:28 +03:00
2026-06-23 00:25:28 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:13:30 +03:00
2026-06-23 02:47:51 +03:00
2026-06-23 02:47:51 +03:00
2026-06-23 02:47:51 +03:00
2026-06-23 03:31:58 +03:00
2026-06-23 03:31:58 +03:00
2026-06-23 03:31:58 +03:00
2026-06-23 08:48:31 +03:00
2026-06-23 08:48:31 +03:00
2026-06-23 08:48:31 +03:00
2026-06-23 16:16:47 +03:00
2026-06-23 16:16:47 +03:00
2026-06-23 16:16:47 +03:00