From ec92d467d1801510fee9f9faa5653b2aa10e3a0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=C3=A4schle?= Date: Sat, 30 Apr 2022 16:31:28 +0200 Subject: [PATCH] cgen: fix unsafe return error (#14233) --- vlib/v/gen/c/cgen.v | 2 +- vlib/v/tests/results_test.v | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 78e41a4b7d..97b144f096 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -5181,7 +5181,7 @@ fn c_name(name_ string) string { fn (mut g Gen) type_default(typ_ ast.Type) string { typ := g.unwrap_generic(typ_) - if typ.has_flag(.optional) { + if typ.has_flag(.optional) || typ.has_flag(.result) { return '{0}' } // Always set pointers to 0 diff --git a/vlib/v/tests/results_test.v b/vlib/v/tests/results_test.v index ab4c047987..e8d20a67c9 100644 --- a/vlib/v/tests/results_test.v +++ b/vlib/v/tests/results_test.v @@ -63,3 +63,13 @@ fn util_error_propagation() ! { fn test_return_on_error_propagation() { util_error_propagation() or { assert err.msg() == 'abc' } } + +fn unsafe_return_error() !int { + unsafe { + return error('abc') + } +} + +fn test_unsafe_return_error() { + unsafe_return_error() or { assert err.msg() == 'abc' } +}