From c6d6690064bfe592d062a5f3fbb25adb99190223 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=C3=A4schle?= Date: Thu, 21 Jan 2021 12:42:24 +0100 Subject: [PATCH] checker: fix if expr infix (#8215) * checker: fix if expr infix * remove debugger code * fmt * remove debug * add test cases --- vlib/v/checker/checker.v | 1 - vlib/v/tests/if_expression_test.v | 10 ++++++++++ vlib/v/tests/match_test.v | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index b27352aebf..6a0af44a5e 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -704,7 +704,6 @@ pub fn (mut c Checker) infix_expr(mut infix_expr ast.InfixExpr) table.Type { defer { c.expected_type = former_expected_type } - c.expected_type = table.void_type left_type := c.expr(infix_expr.left) // left_type = c.unwrap_genric(c.expr(infix_expr.left)) infix_expr.left_type = left_type diff --git a/vlib/v/tests/if_expression_test.v b/vlib/v/tests/if_expression_test.v index b5b82faacb..7c0580d037 100644 --- a/vlib/v/tests/if_expression_test.v +++ b/vlib/v/tests/if_expression_test.v @@ -157,3 +157,13 @@ fn test_lots_of_if_expressions() { } assert a == 1 } + +fn test_if_expr_with_infix() { + a := if true { 1 } else { 0 } + 5 + assert a == 6 +} + +fn test_multi_if_expr_with_infix() { + a := if 1 == 0 { 1 } else if 1 == 0 { 2 } else { 3 } + 4 + assert a == 7 +} diff --git a/vlib/v/tests/match_test.v b/vlib/v/tests/match_test.v index 34d3efdd65..6d1d5530b4 100644 --- a/vlib/v/tests/match_test.v +++ b/vlib/v/tests/match_test.v @@ -268,3 +268,8 @@ fn test_sumtype_with_array() { } } } + +fn test_match_expression_add() { + a := match true { true {1} false {2} } + 3 + assert a == 4 +}