From 69768cfa0ad72f8c456da7d920d3772688f24998 Mon Sep 17 00:00:00 2001 From: Hitalo Souza Date: Tue, 23 Jun 2026 05:18:45 -0300 Subject: [PATCH] encoding.cbor: build option payloads via comptime `$zero(field.typ.payload_type)` (#27536) --- vlib/encoding/cbor/generic.v | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/vlib/encoding/cbor/generic.v b/vlib/encoding/cbor/generic.v index ef37d1847..78e7c6c12 100644 --- a/vlib/encoding/cbor/generic.v +++ b/vlib/encoding/cbor/generic.v @@ -416,7 +416,7 @@ fn (mut u Unpacker) unpack_struct_into[T](mut result T) ! { u.pos++ result.$(field.name) = none } else { - mut inner := create_value_from_optional(result.$(field.name)) + mut inner := $zero(field.typ.payload_type) u.unpack_into(mut inner)! result.$(field.name) = inner } @@ -570,12 +570,6 @@ fn utf8_validate_slice(data []u8, start int, size int) bool { return true } -// create_value_from_optional returns a zero value of an Option's inner T. -// Exists so the comptime call site can infer T from a struct field. -fn create_value_from_optional[T](_val ?T) T { - return T{} -} - // unpack_into fills the target through a mutable reference. The mut // parameter exists so V's generic inferer picks up T from the // `u.unpack_into(mut result.$(field.name))!` call site. -- 2.39.5