From 5495280e7ded0741ecca4c15852ddd90ac663fbf Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Tue, 29 Oct 2024 07:04:47 +0200 Subject: [PATCH] checker: allow for `f() or { T{} }` part 2, see also cc55aa5 (handle the case of an ignored result as well) (#22687) --- vlib/v/checker/checker.v | 3 +++ .../generics/generic_default_expression_in_or_block_test.v | 1 + 2 files changed, 4 insertions(+) diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 6d4f278e4..d16fd0b87 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -1472,6 +1472,9 @@ fn (mut c Checker) check_or_last_stmt(mut stmt ast.Stmt, ret_type ast.Type, expr return } } + if expr_return_type.has_flag(.generic) { + return + } // opt_returning_string() or { ... 123 } type_name := c.table.type_to_str(stmt.typ) expr_return_type_name := c.table.type_to_str(expr_return_type) diff --git a/vlib/v/tests/generics/generic_default_expression_in_or_block_test.v b/vlib/v/tests/generics/generic_default_expression_in_or_block_test.v index 21ca0f2ec..a00f91191 100644 --- a/vlib/v/tests/generics/generic_default_expression_in_or_block_test.v +++ b/vlib/v/tests/generics/generic_default_expression_in_or_block_test.v @@ -16,6 +16,7 @@ fn (mut s St[T]) peek_or_default() T { } fn (mut s St[T]) push(e T) { + s.peek() or { T{} } x := s.peek() or { T{} } // this is deliberate $if x is $array { dump(x) -- 2.39.5