default struct fields

This commit is contained in:
2026-07-18 16:23:47 +02:00
parent e889a99e55
commit 9eb7476522
10 changed files with 191 additions and 11 deletions
+41
View File
@@ -13325,3 +13325,44 @@ main func() void {
testing.expect(t, unresolved_ok)
testing.expect_value(t, unresolved, types.U64)
}
@(test)
milestone_44_struct_field_defaults_compile_and_run :: proc(t: ^testing.T) {
directory := "/tmp/brolang-test-struct-field-defaults"
main_path := "/tmp/brolang-test-struct-field-defaults/main.bro"
output := "/tmp/brolang-test-struct-field-defaults-output"
text := `Config :: struct {
count int = 7
enabled bool = true
name []u8 = "bro"
required i32
}
Lists :: struct { items [][]u8 = &[] }
read func(value Config) i32 {
return value.required + value.count
}
ANSWER :: $read(Config{required = 35})
main func() i32 {
defaults Config = Config{required = 35}
overridden Config = Config{count = 1, enabled = false, name = "x", required = 40}
lists Lists = Lists{}
if (ANSWER != 42) return 1
if (defaults.count != 7 or defaults.enabled == false) return 2
if (defaults.name.len != 3 or lists.items.len != 0) return 3
if (overridden.count != 1 or overridden.enabled or overridden.name.len != 1) return 4
return 0
}
`
_ = os2.remove_all(directory)
defer _ = os2.remove_all(directory)
defer _ = os.remove(output)
testing.expect(t, os.make_directory(directory) == nil)
testing.expect(t, os.write_entire_file(main_path, transmute([]byte)text))
testing.expect_value(t, compiler_core.compile_package(directory, output), 0)
state := run_executable(output)
testing.expect_value(t, state.exit_code, 0)
}