checker: add error for `print( voidfn() )`
							parent
							
								
									62ccd740f0
								
							
						
					
					
						commit
						d0e8e8f178
					
				|  | @ -1901,6 +1901,9 @@ pub fn (mut c Checker) call_fn(mut call_expr ast.CallExpr) table.Type { | |||
| 		c.inside_println_arg = true | ||||
| 		c.expected_type = table.string_type | ||||
| 		call_expr.args[0].typ = c.expr(call_expr.args[0].expr) | ||||
| 		if call_expr.args[0].typ.is_void() { | ||||
| 			c.error('`$fn_name` can not print void expressions', call_expr.pos) | ||||
| 		} | ||||
| 		if call_expr.args[0].typ.has_flag(.shared_f) { | ||||
| 			c.fail_if_not_rlocked(call_expr.args[0].expr, 'argument to print') | ||||
| 		} | ||||
|  |  | |||
|  | @ -4,3 +4,10 @@ vlib/v/checker/tests/for_in_index_type.vv:2:11: error: for in: cannot index `int | |||
|       |              ~~ | ||||
|     3 |         println(a) | ||||
|     4 |     } | ||||
| vlib/v/checker/tests/for_in_index_type.vv:3:3: error: `println` can not print void expressions | ||||
|     1 | fn main() { | ||||
|     2 |     for a in 52 { | ||||
|     3 |         println(a) | ||||
|       |         ~~~~~~~~~~ | ||||
|     4 |     } | ||||
|     5 | } | ||||
|  |  | |||
|  | @ -0,0 +1,27 @@ | |||
| vlib/v/checker/tests/println_can_not_print_void_expressions.vv:3:2: error: `print` can not print void expressions | ||||
|     1 | fn blabla() {} | ||||
|     2 | fn main() { | ||||
|     3 |     print(blabla()) | ||||
|       |     ~~~~~~~~~~~~~~~ | ||||
|     4 |     println(blabla()) | ||||
|     5 |     eprint(blabla()) | ||||
| vlib/v/checker/tests/println_can_not_print_void_expressions.vv:4:2: error: `println` can not print void expressions | ||||
|     2 | fn main() { | ||||
|     3 |     print(blabla()) | ||||
|     4 |     println(blabla()) | ||||
|       |     ~~~~~~~~~~~~~~~~~ | ||||
|     5 |     eprint(blabla()) | ||||
|     6 |     eprintln(blabla()) | ||||
| vlib/v/checker/tests/println_can_not_print_void_expressions.vv:5:2: error: `eprint` can not print void expressions | ||||
|     3 |     print(blabla()) | ||||
|     4 |     println(blabla()) | ||||
|     5 |     eprint(blabla()) | ||||
|       |     ~~~~~~~~~~~~~~~~ | ||||
|     6 |     eprintln(blabla()) | ||||
|     7 | } | ||||
| vlib/v/checker/tests/println_can_not_print_void_expressions.vv:6:2: error: `eprintln` can not print void expressions | ||||
|     4 |     println(blabla()) | ||||
|     5 |     eprint(blabla()) | ||||
|     6 |     eprintln(blabla()) | ||||
|       |     ~~~~~~~~~~~~~~~~~~ | ||||
|     7 | } | ||||
|  | @ -0,0 +1,7 @@ | |||
| fn blabla() {} | ||||
| fn main() { | ||||
| 	print(blabla()) | ||||
| 	println(blabla()) | ||||
| 	eprint(blabla()) | ||||
| 	eprintln(blabla()) | ||||
| } | ||||
		Loading…
	
		Reference in New Issue