This commit is contained in:
agra
2026-03-02 21:00:55 +02:00
parent 2f4f898d54
commit bbb5426777
42 changed files with 483 additions and 9023 deletions

View File

@@ -1,38 +0,0 @@
// 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);
}