From 43ce09804362fd470a01d79e0196722ed0d5309d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=C3=A4schle?= Date: Wed, 11 Nov 2020 18:56:13 +0100 Subject: [PATCH] cgen: fix default value init for union sum types (#6795) --- vlib/v/gen/cgen.v | 2 +- vlib/v/tests/union_sum_type_test.v | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index 761fec83e7..e691ac5ad6 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -5295,7 +5295,7 @@ fn (mut g Gen) type_default(typ_ table.Type) string { else {} } return match sym.kind { - .interface_, .sum_type, .array_fixed, .multi_return { '{0}' } + .interface_, .union_sum_type, .sum_type, .array_fixed, .multi_return { '{0}' } .alias { g.type_default((sym.info as table.Alias).parent_type) } else { '0' } } diff --git a/vlib/v/tests/union_sum_type_test.v b/vlib/v/tests/union_sum_type_test.v index b9fbf16ed0..bf41a08bc6 100644 --- a/vlib/v/tests/union_sum_type_test.v +++ b/vlib/v/tests/union_sum_type_test.v @@ -432,6 +432,15 @@ fn test_match_multi_branch() { } } +struct Outer2 { + e Expr4 +} + +fn test_zero_value_init() { + // no c compiler error then it's successful + o := Outer2{} +} + fn test_sum_type_match() { // TODO: Remove these casts assert is_gt_simple('3', int(2))