builtin: allow passing any argument type to `panic` (#9020)
							parent
							
								
									d63b7bc35a
								
							
						
					
					
						commit
						d7252f4474
					
				|  | @ -1896,8 +1896,8 @@ pub fn (mut c Checker) call_fn(mut call_expr ast.CallExpr) table.Type { | |||
| 			unexpected_arguments_pos) | ||||
| 		return f.return_type | ||||
| 	} | ||||
| 	// println / eprintln can print anything
 | ||||
| 	if fn_name in ['println', 'print', 'eprintln', 'eprint'] && call_expr.args.len > 0 { | ||||
| 	// println / eprintln / panic can print anything
 | ||||
| 	if fn_name in ['println', 'print', 'eprintln', 'eprint', 'panic'] && call_expr.args.len > 0 { | ||||
| 		c.inside_println_arg = true | ||||
| 		c.expected_type = table.string_type | ||||
| 		call_expr.args[0].typ = c.expr(call_expr.args[0].expr) | ||||
|  |  | |||
|  | @ -1513,7 +1513,7 @@ fn (mut g Gen) expr_with_cast(expr ast.Expr, got_type_raw table.Type, expected_t | |||
| 	got_sym := g.table.get_type_symbol(got_type) | ||||
| 	// allow using the new Error struct as a string, to avoid a breaking change
 | ||||
| 	// TODO: temporary to allow people to migrate their code; remove soon
 | ||||
| 	if (got_type == table.error_type_idx && expected_type == table.string_type_idx) || false { | ||||
| 	if got_type == table.error_type_idx && expected_type == table.string_type_idx { | ||||
| 		g.expr(expr) | ||||
| 		g.write('.msg') | ||||
| 		return | ||||
|  |  | |||
|  | @ -734,7 +734,7 @@ fn (mut g Gen) fn_call(node ast.CallExpr) { | |||
| 	if node.name == 'error_with_code' { | ||||
| 		name = 'error_with_code2' | ||||
| 	} | ||||
| 	is_print := name in ['print', 'println', 'eprint', 'eprintln'] | ||||
| 	is_print := name in ['print', 'println', 'eprint', 'eprintln', 'panic'] | ||||
| 	print_method := name | ||||
| 	is_json_encode := name == 'json.encode' | ||||
| 	is_json_encode_pretty := name == 'json.encode_pretty' | ||||
|  | @ -838,9 +838,9 @@ fn (mut g Gen) fn_call(node ast.CallExpr) { | |||
| 				// tmps << tmp
 | ||||
| 				g.write('string $tmp = ') | ||||
| 				g.gen_expr_to_string(expr, typ) | ||||
| 				g.writeln('; ${print_method}($tmp); string_free(&$tmp);') | ||||
| 				g.writeln('; ${c_name(print_method)}($tmp); string_free(&$tmp);') | ||||
| 			} else { | ||||
| 				g.write('${print_method}(') | ||||
| 				g.write('${c_name(print_method)}(') | ||||
| 				g.gen_expr_to_string(expr, typ) | ||||
| 				g.write(')') | ||||
| 			} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue