Skip to content

Commit

Permalink
checker: disallow printing void (#17901)
Browse files Browse the repository at this point in the history
  • Loading branch information
Delta456 committed Apr 7, 2023
1 parent bb28012 commit 65abfa8
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
1 change: 1 addition & 0 deletions vlib/v/checker/fn.v
Expand Up @@ -2436,6 +2436,7 @@ fn (mut c Checker) array_builtin_method_call(mut node ast.CallExpr, left_type as
if method := c.table.find_method(unwrapped_left_sym, method_name) {
node.receiver_type = method.receiver_type
}
node.return_type = ast.void_type
}
return node.return_type
}
Expand Down
13 changes: 13 additions & 0 deletions vlib/v/checker/tests/array_delete_print_err.out
@@ -0,0 +1,13 @@
vlib/v/checker/tests/array_delete_print_err.vv:3:2: error: `println` can not print void expressions
1 | fn main() {
2 | a := []string{}
3 | println(a.delete(0))
| ~~~~~~~~~~~~~~~~~~~~
4 | println('${a.delete(0)}')
5 | }
vlib/v/checker/tests/array_delete_print_err.vv:4:15: error: expression does not return a value
2 | a := []string{}
3 | println(a.delete(0))
4 | println('${a.delete(0)}')
| ~~~~~~~~~
5 | }
5 changes: 5 additions & 0 deletions vlib/v/checker/tests/array_delete_print_err.vv
@@ -0,0 +1,5 @@
fn main() {
a := []string{}
println(a.delete(0))
println('${a.delete(0)}')
}

0 comments on commit 65abfa8

Please sign in to comment.