// Issue 0010: inline if-else in struct literal field produces type error // The `null` branch is typed as `*void` instead of being coerced to `?f32` // // Error: narrowing conversion from '*void' to 'f32' requires explicit 'xx' cast #import "modules/std.sx"; Foo :: struct { width: ?f32; } main :: () -> void { x :f32: 10.0; // null in then branch, value in else f1 := Foo.{ width = if true then null else x }; print("{}\n", f1.width ?? 99.0); // value in then branch, null in else f2 := Foo.{ width = if true then x else null }; print("{}\n", f2.width ?? 99.0); // both branches are values f3 := Foo.{ width = if false then 5.0 else x }; print("{}\n", f3.width ?? 99.0); // standalone variable, not just struct fields val: ?f32 = if true then null else 42.0; print("{}\n", val ?? 0.0); val2: ?f32 = if false then null else 42.0; print("{}\n", val2 ?? 0.0); // negation in condition cond := false; val3: ?f32 = if !cond then null else 42.0; print("{}\n", val3 ?? 0.0); }