From 4e87a1ba092b0446b9f8e9929093c67b012d33a7 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Tue, 11 Mar 2025 13:34:06 -0300 Subject: [PATCH] checker: add missing `any` type validation on assignment (fix #23905) (#23906) --- vlib/v/checker/assign.v | 5 +++++ vlib/v/checker/tests/assign_any_err.out | 7 +++++++ vlib/v/checker/tests/assign_any_err.vv | 9 +++++++++ 3 files changed, 21 insertions(+) create mode 100644 vlib/v/checker/tests/assign_any_err.out create mode 100644 vlib/v/checker/tests/assign_any_err.vv diff --git a/vlib/v/checker/assign.v b/vlib/v/checker/assign.v index 55e8b67cf..82afc3212 100644 --- a/vlib/v/checker/assign.v +++ b/vlib/v/checker/assign.v @@ -329,6 +329,11 @@ fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) { } node.left_types << left_type + if right is ast.StructInit { + right_sym := c.table.sym(right_type) + c.check_any_type(right_type, right_sym, right.pos()) + } + if left is ast.ParExpr && is_decl { c.error('parentheses are not supported on the left side of `:=`', left.pos()) } diff --git a/vlib/v/checker/tests/assign_any_err.out b/vlib/v/checker/tests/assign_any_err.out new file mode 100644 index 000000000..d66b794d7 --- /dev/null +++ b/vlib/v/checker/tests/assign_any_err.out @@ -0,0 +1,7 @@ +vlib/v/checker/tests/assign_any_err.vv:3:8: error: cannot use type `any` here + 1 | fn g[T](x T) { + 2 | for _ in 0 .. 10 { + 3 | _ := any{} + | ~~~~~ + 4 | } + 5 | } diff --git a/vlib/v/checker/tests/assign_any_err.vv b/vlib/v/checker/tests/assign_any_err.vv new file mode 100644 index 000000000..77f642257 --- /dev/null +++ b/vlib/v/checker/tests/assign_any_err.vv @@ -0,0 +1,9 @@ +fn g[T](x T) { + for _ in 0 .. 10 { + _ := any{} + } +} + +fn main() { + g[int](1) +} -- 2.39.5