From d46ac407584e4a19a9a24fe9a714bf86277073ad Mon Sep 17 00:00:00 2001 From: Vincenzo Palazzo Date: Sun, 6 Feb 2022 15:08:23 +0100 Subject: [PATCH] checker: add error for assigning `none` values (#13383) --- vlib/v/checker/assign.v | 3 +++ vlib/v/checker/tests/assing_none.out | 6 ++++++ vlib/v/checker/tests/assing_none.vv | 4 ++++ 3 files changed, 13 insertions(+) create mode 100644 vlib/v/checker/tests/assing_none.out create mode 100644 vlib/v/checker/tests/assing_none.vv diff --git a/vlib/v/checker/assign.v b/vlib/v/checker/assign.v index 887c49f757..ddc7cfaecb 100644 --- a/vlib/v/checker/assign.v +++ b/vlib/v/checker/assign.v @@ -47,6 +47,9 @@ pub fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) { c.error('unexpected `mut` on right-hand side of assignment', right.mut_pos) } } + if right is ast.None { + c.error('you can not assign a `none` value to a variable', right.pos) + } } if node.left.len != right_len { if right_first is ast.CallExpr { diff --git a/vlib/v/checker/tests/assing_none.out b/vlib/v/checker/tests/assing_none.out new file mode 100644 index 0000000000..d913002ccc --- /dev/null +++ b/vlib/v/checker/tests/assing_none.out @@ -0,0 +1,6 @@ +vlib/v/checker/tests/assing_none.vv:2:9: error: you can not assign a `none` value to a variable + 1 | fn main() { + 2 | val := none + | ~~~~ + 3 | println(val) + 4 | } diff --git a/vlib/v/checker/tests/assing_none.vv b/vlib/v/checker/tests/assing_none.vv new file mode 100644 index 0000000000..c4617cc680 --- /dev/null +++ b/vlib/v/checker/tests/assing_none.vv @@ -0,0 +1,4 @@ +fn main() { + val := none + println(val) +}