Skip to content

Commit

Permalink
checker: disallow invalid prefix on left side of assign stmt (#18750)
Browse files Browse the repository at this point in the history
  • Loading branch information
Delta456 committed Jul 3, 2023
1 parent df3c85e commit ab258ae
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 1 deletion.
5 changes: 5 additions & 0 deletions vlib/v/checker/assign.v
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,11 @@ fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) {
left.right.obj.is_used = true
}
}
} else if left.op == .amp {
c.error('cannot use a reference on the left side of `${node.op}`',
left.pos)
} else {
c.error('cannot use `${left.op}` on the left of `${node.op}`', left.pos)
}
if is_decl {
c.error('non-name on the left side of `:=`', left.pos)
Expand Down
14 changes: 14 additions & 0 deletions vlib/v/checker/tests/invalid_prefix_left_side_assign_stmt_err.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
vlib/v/checker/tests/invalid_prefix_left_side_assign_stmt_err.vv:3:2: error: cannot use `~` on the left of `=`
1 | fn main() {
2 | mut x := 0
3 | ~x = 34
| ^
4 | &x = unsafe { nil }
5 | println(x)
vlib/v/checker/tests/invalid_prefix_left_side_assign_stmt_err.vv:4:2: error: cannot use a reference on the left side of `=`
2 | mut x := 0
3 | ~x = 34
4 | &x = unsafe { nil }
| ^
5 | println(x)
6 | }
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
fn main() {
mut x := 0
~x = 34
&x = unsafe { nil }
println(x)
}
2 changes: 1 addition & 1 deletion vlib/v/checker/tests/prefix_expr_decl_assign_err.out
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
vlib/v/checker/tests/prefix_expr_decl_assign_err.vv:2:5: error: non-name on the left side of `:=`
vlib/v/checker/tests/prefix_expr_decl_assign_err.vv:2:5: error: cannot use a reference on the left side of `:=`
1 | fn main() {
2 | &a := 12
| ^
Expand Down

0 comments on commit ab258ae

Please sign in to comment.