| author | |
| committer | |
| log | b9c4857ed64fb18fa8cbc69112fd4fb4f8a5ac68 |
| tree | 48f6dde6a95bf44cadca07492f92fad5aca2ec85 |
| parent | 17e12960b5c12dd1dfb68940e70e9541dda856a2 |
Before:
assign_local_bad_coercion.zig:5:1: error: expected type 'u32', found 'u64'
export fn constEntry() u32 {
^~~~~~
assign_local_bad_coercion.zig:11:19: error: expected type 'u32', found 'u64'
var x: u32 = g();
~^~
After:
assign_local_bad_coercion.zig:6:21: error: expected type 'u32', found 'u64'
const x: u32 = g();
~^~
assign_local_bad_coercion.zig:11:19: error: expected type 'u32', found 'u64'
var x: u32 = g();
~^~5 files changed, 31 insertions(+), 6 deletions(-)
src/AstGen.zig+4-1| ... | ... | @@ -3209,7 +3209,10 @@ fn varDecl( |
| 3209 | 3209 | // In case the result location did not do the coercion |
| 3210 | 3210 | // for us so we must do it here. |
| 3211 | 3211 | const coerced_init = if (opt_type_inst != .none) |
| 3212 | try gz.addBin(.as, opt_type_inst, init_inst) | |
| 3212 | try gz.addPlNode(.as_node, var_decl.ast.init_node, Zir.Inst.As{ | |
| 3213 | .dest_type = opt_type_inst, | |
| 3214 | .operand = init_inst, | |
| 3215 | }) | |
| 3213 | 3216 | else |
| 3214 | 3217 | init_inst; |
| 3215 | 3218 |
test/cases/compile_errors/assign_local_bad_coercion.zig created+22| ... | ... | @@ -0,0 +1,22 @@ |
| 1 | fn g() u64 { | |
| 2 | return 0; | |
| 3 | } | |
| 4 | ||
| 5 | export fn constEntry() u32 { | |
| 6 | const x: u32 = g(); | |
| 7 | return x; | |
| 8 | } | |
| 9 | ||
| 10 | export fn varEntry() u32 { | |
| 11 | var x: u32 = g(); | |
| 12 | return x; | |
| 13 | } | |
| 14 | ||
| 15 | // error | |
| 16 | // backend=stage2 | |
| 17 | // target=native | |
| 18 | // | |
| 19 | // :6:21: error: expected type 'u32', found 'u64' | |
| 20 | // :6:21: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values | |
| 21 | // :11:19: error: expected type 'u32', found 'u64' | |
| 22 | // :11:19: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values |
test/cases/compile_errors/break_void_result_location.zig+1-1| ... | ... | @@ -29,4 +29,4 @@ export fn f4() void { |
| 29 | 29 | // :2:22: error: expected type 'usize', found 'void' |
| 30 | 30 | // :7:9: error: expected type 'usize', found 'void' |
| 31 | 31 | // :14:9: error: expected type 'usize', found 'void' |
| 32 | // :18:1: error: expected type 'usize', found 'void' | |
| 32 | // :19:27: error: expected type 'usize', found 'void' |
test/cases/compile_errors/nested_error_set_mismatch.zig+3-3| ... | ... | @@ -14,6 +14,6 @@ fn foo() ?OtherError!i32 { |
| 14 | 14 | // backend=llvm |
| 15 | 15 | // target=native |
| 16 | 16 | // |
| 17 | // :4:1: error: expected type '?error{NextError}!i32', found '?error{OutOfMemory}!i32' | |
| 18 | // :4:1: note: optional type child 'error{OutOfMemory}!i32' cannot cast into optional type child 'error{NextError}!i32' | |
| 19 | // :4:1: note: 'error.OutOfMemory' not a member of destination error set | |
| 17 | // :5:34: error: expected type '?error{NextError}!i32', found '?error{OutOfMemory}!i32' | |
| 18 | // :5:34: note: optional type child 'error{OutOfMemory}!i32' cannot cast into optional type child 'error{NextError}!i32' | |
| 19 | // :5:34: note: 'error.OutOfMemory' not a member of destination error set |
test/cases/compile_errors/union_init_with_none_or_multiple_fields.zig+1-1| ... | ... | @@ -27,7 +27,7 @@ export fn u2m() void { |
| 27 | 27 | // backend=stage2 |
| 28 | 28 | // target=native |
| 29 | 29 | // |
| 30 | // :9:1: error: union initializer must initialize one field | |
| 30 | // :10:20: error: union initializer must initialize one field | |
| 31 | 31 | // :1:12: note: union declared here |
| 32 | 32 | // :14:20: error: cannot initialize multiple union fields at once; unions can only have one active field |
| 33 | 33 | // :14:31: note: additional initializer here |