From 70de4e10094bf798cfd7ee4c707fa7970dc384ce Mon Sep 17 00:00:00 2001 From: ChAoS_UnItY Date: Sat, 27 Aug 2022 04:11:23 +0800 Subject: [PATCH] checker: fix no error on plus-assigning array (fix #15544) (#15552) --- vlib/v/checker/assign.v | 2 +- vlib/v/checker/tests/array_plus_assign_err.out | 8 ++++++++ vlib/v/checker/tests/array_plus_assign_err.vv | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 vlib/v/checker/tests/array_plus_assign_err.out create mode 100644 vlib/v/checker/tests/array_plus_assign_err.vv diff --git a/vlib/v/checker/assign.v b/vlib/v/checker/assign.v index 1987f3485..56e999347 100644 --- a/vlib/v/checker/assign.v +++ b/vlib/v/checker/assign.v @@ -361,7 +361,7 @@ pub fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) { node.pos) } } - if left_sym.kind == .array && right_sym.kind == .array { + if left_sym.kind == .array && right_sym.kind == .array && node.op == .assign { // `mut arr := [u8(1),2,3]` // `arr = [byte(4),5,6]` left_info := left_sym.info as ast.Array diff --git a/vlib/v/checker/tests/array_plus_assign_err.out b/vlib/v/checker/tests/array_plus_assign_err.out new file mode 100644 index 000000000..fb1ed8b4c --- /dev/null +++ b/vlib/v/checker/tests/array_plus_assign_err.out @@ -0,0 +1,8 @@ +vlib/v/checker/tests/array_plus_assign_err.vv:1:5: warning: unused variable: `buffer` + 1 | mut buffer := []u8{cap: 1024} + | ~~~~~~ + 2 | buffer += "ipconfig && sudo apt-get install -y some_amazing_package name + command output".bytes() +vlib/v/checker/tests/array_plus_assign_err.vv:2:1: error: operator `+=` not defined on left operand type `[]u8` + 1 | mut buffer := []u8{cap: 1024} + 2 | buffer += "ipconfig && sudo apt-get install -y some_amazing_package name + command output".bytes() + | ~~~~~~ \ No newline at end of file diff --git a/vlib/v/checker/tests/array_plus_assign_err.vv b/vlib/v/checker/tests/array_plus_assign_err.vv new file mode 100644 index 000000000..12c5505fd --- /dev/null +++ b/vlib/v/checker/tests/array_plus_assign_err.vv @@ -0,0 +1,2 @@ +mut buffer := []u8{cap: 1024} +buffer += "ipconfig && sudo apt-get install -y some_amazing_package name + command output".bytes() \ No newline at end of file -- 2.30.2