From 16f5f45d5f6b511508c6b42dbcb2589fd1fef69b Mon Sep 17 00:00:00 2001 From: CreeperFace <165158232+dy-tea@users.noreply.github.com> Date: Sun, 14 Dec 2025 11:27:48 +0000 Subject: [PATCH] cgen: correct T{} init for []Type aliases (fix #25962) (#25963) --- vlib/v/gen/c/struct.v | 2 +- vlib/v/tests/aliases/modules/value/value.v | 11 +++++++++++ vlib/v/tests/aliases/modules/value/value_test.v | 11 +++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/aliases/modules/value/value.v create mode 100644 vlib/v/tests/aliases/modules/value/value_test.v diff --git a/vlib/v/gen/c/struct.v b/vlib/v/gen/c/struct.v index b654f94f6..a4db3765b 100644 --- a/vlib/v/gen/c/struct.v +++ b/vlib/v/gen/c/struct.v @@ -52,7 +52,7 @@ fn (mut g Gen) struct_init(node ast.StructInit) { g.write(g.type_default_sumtype(unwrapped_typ, sym)) } return - } else if sym.kind == .map { + } else if sym.kind == .map || (sym.kind == .array && node.init_fields.len == 0) { g.write(g.type_default(unwrapped_typ)) return } diff --git a/vlib/v/tests/aliases/modules/value/value.v b/vlib/v/tests/aliases/modules/value/value.v new file mode 100644 index 000000000..c128bfb2f --- /dev/null +++ b/vlib/v/tests/aliases/modules/value/value.v @@ -0,0 +1,11 @@ +module value + +pub interface Value { + str() string +} + +pub type List = []Value + +pub fn (x List) str() string { + return x.str() +} diff --git a/vlib/v/tests/aliases/modules/value/value_test.v b/vlib/v/tests/aliases/modules/value/value_test.v new file mode 100644 index 000000000..547383c4f --- /dev/null +++ b/vlib/v/tests/aliases/modules/value/value_test.v @@ -0,0 +1,11 @@ +module value + +fn test_list() { + mut list := make_list()! + assert (list as List).len == 0 +} + +fn make_list() !Value { + mut list := List{} + return list +} -- 2.39.5