From a3180e5747f073db9ee8184bf3d8fc38da5bcac0 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Sun, 30 Mar 2025 09:39:47 -0300 Subject: [PATCH] cgen: fix `x in [...]!` operator with fixed arrays (fix #24082) (#24083) --- vlib/v/gen/c/infix.v | 3 +++ vlib/v/tests/in_op_array_fixed_test.v | 9 +++++++++ 2 files changed, 12 insertions(+) create mode 100644 vlib/v/tests/in_op_array_fixed_test.v diff --git a/vlib/v/gen/c/infix.v b/vlib/v/gen/c/infix.v index c1fa6a72a..84a268620 100644 --- a/vlib/v/gen/c/infix.v +++ b/vlib/v/gen/c/infix.v @@ -823,6 +823,9 @@ fn (mut g Gen) infix_expr_in_optimization(left ast.Expr, left_type ast.Type, rig g.expr(left) } g.write(' == ') + if elem_sym.kind == .array_fixed { + g.write('(${g.styp(right.elem_type)})') + } g.expr(array_expr) } } diff --git a/vlib/v/tests/in_op_array_fixed_test.v b/vlib/v/tests/in_op_array_fixed_test.v new file mode 100644 index 000000000..3dde20417 --- /dev/null +++ b/vlib/v/tests/in_op_array_fixed_test.v @@ -0,0 +1,9 @@ +fn test_main() { + arr := [u8(1), 2, 3, 4]! + if arr != [4]u8{} || arr != [4]u8{init: 255} { + println('success') + } + if arr !in [[4]u8{}, [4]u8{init: 255}] { + println('success') + } +} -- 2.39.5