diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-08-03 20:13:07 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-03 20:13:07 -0700 |
| commit | e483336ba454743e65fd72a5d4dd74732dc1ef0f (patch) | |
| tree | 51f5ee800c4c423fe5224fbc9c2ff9d2dc576ba3 /test/cases/compile_errors | |
| parent | 4c750016eb9b1c0831cbb0398a4d6ee9dbdc932e (diff) | |
| parent | 4ab60dc18b44cffad88d470c567920bcc34b1214 (diff) | |
| download | zig-e483336ba454743e65fd72a5d4dd74732dc1ef0f.tar.gz zig-e483336ba454743e65fd72a5d4dd74732dc1ef0f.zip | |
Merge pull request #12318 from Vexu/stage2-compile-errors
Stage2: misc compile error improvements
Diffstat (limited to 'test/cases/compile_errors')
| -rw-r--r-- | test/cases/compile_errors/accessing_runtime_parameter_from_outer_function.zig (renamed from test/cases/compile_errors/stage1/obj/accessing_runtime_parameter_from_outer_function.zig) | 9 | ||||
| -rw-r--r-- | test/cases/compile_errors/cannot_break_out_of_defer_expression.zig (renamed from test/cases/compile_errors/stage1/obj/cannot_break_out_of_defer_expression.zig) | 5 | ||||
| -rw-r--r-- | test/cases/compile_errors/cannot_continue_out_of_defer_expression.zig (renamed from test/cases/compile_errors/stage1/obj/cannot_continue_out_of_defer_expression.zig) | 5 | ||||
| -rw-r--r-- | test/cases/compile_errors/direct_struct_loop.zig | 9 | ||||
| -rw-r--r-- | test/cases/compile_errors/for_loop_body_expression_ignored.zig | 35 | ||||
| -rw-r--r-- | test/cases/compile_errors/indirect_struct_loop.zig | 13 | ||||
| -rw-r--r-- | test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_struct_that_contains_itself.zig (renamed from test/cases/compile_errors/stage1/obj/instantiating_an_undefined_value_for_an_invalid_struct_that_contains_itself.zig) | 5 | ||||
| -rw-r--r-- | test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_union_that_contains_itself.zig | 16 | ||||
| -rw-r--r-- | test/cases/compile_errors/packed_union_given_enum_tag_type.zig (renamed from test/cases/compile_errors/stage1/obj/packed_union_given_enum_tag_type.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/packed_union_with_automatic_layout_field.zig (renamed from test/cases/compile_errors/stage1/obj/packed_union_with_automatic_layout_field.zig) | 6 | ||||
| -rw-r--r-- | test/cases/compile_errors/specify_non-integer_enum_tag_type.zig (renamed from test/cases/compile_errors/stage1/obj/specify_non-integer_enum_tag_type.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/stage1/obj/direct_struct_loop.zig | 8 | ||||
| -rw-r--r-- | test/cases/compile_errors/stage1/obj/for_loop_body_expression_ignored.zig | 18 | ||||
| -rw-r--r-- | test/cases/compile_errors/stage1/obj/indirect_struct_loop.zig | 10 | ||||
| -rw-r--r-- | test/cases/compile_errors/stage1/obj/while_loop_body_expression_ignored.zig | 22 | ||||
| -rw-r--r-- | test/cases/compile_errors/struct_depends_on_itself_via_optional_field.zig (renamed from test/cases/compile_errors/stage1/obj/struct_depends_on_itself_via_optional_field.zig) | 8 | ||||
| -rw-r--r-- | test/cases/compile_errors/top_level_decl_dependency_loop.zig (renamed from test/cases/compile_errors/stage1/obj/top_level_decl_dependency_loop.zig) | 5 | ||||
| -rw-r--r-- | test/cases/compile_errors/unused_variable_error_on_errdefer.zig (renamed from test/cases/compile_errors/stage1/obj/unused_variable_error_on_errdefer.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/vector_index_out_of_bounds.zig (renamed from test/cases/compile_errors/stage1/obj/vector_index_out_of_bounds.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/while_expected_error_union_got_bool.zig (renamed from test/cases/compile_errors/stage1/obj/while_expected_error_union_got_bool.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/while_expected_error_union_got_optional.zig (renamed from test/cases/compile_errors/stage1/obj/while_expected_error_union_got_optional.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/while_expected_optional_got_bool.zig (renamed from test/cases/compile_errors/stage1/obj/while_expected_optional_got_bool.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/while_expected_optional_got_error_union.zig (renamed from test/cases/compile_errors/stage1/obj/while_expected_optional_got_error_union.zig) | 4 | ||||
| -rw-r--r-- | test/cases/compile_errors/while_loop_body_expression_ignored.zig | 43 |
24 files changed, 156 insertions, 93 deletions
diff --git a/test/cases/compile_errors/stage1/obj/accessing_runtime_parameter_from_outer_function.zig b/test/cases/compile_errors/accessing_runtime_parameter_from_outer_function.zig index 73a9e94d44..49ef3b4d4d 100644 --- a/test/cases/compile_errors/stage1/obj/accessing_runtime_parameter_from_outer_function.zig +++ b/test/cases/compile_errors/accessing_runtime_parameter_from_outer_function.zig @@ -1,4 +1,4 @@ -fn outer(y: u32) fn (u32) u32 { +fn outer(y: u32) *const fn (u32) u32 { const st = struct { fn get(z: u32) u32 { return z + y; @@ -13,9 +13,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:24: error: 'y' not accessible from inner function -// tmp.zig:3:28: note: crossed function definition here -// tmp.zig:1:10: note: declared here +// :4:24: error: 'y' not accessible from inner function +// :3:9: note: crossed function definition here diff --git a/test/cases/compile_errors/stage1/obj/cannot_break_out_of_defer_expression.zig b/test/cases/compile_errors/cannot_break_out_of_defer_expression.zig index 3c7ae4fa2f..454309eb89 100644 --- a/test/cases/compile_errors/stage1/obj/cannot_break_out_of_defer_expression.zig +++ b/test/cases/compile_errors/cannot_break_out_of_defer_expression.zig @@ -7,7 +7,8 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:13: error: cannot break out of defer expression +// :4:13: error: cannot break out of defer expression +// :3:9: note: defer expression here diff --git a/test/cases/compile_errors/stage1/obj/cannot_continue_out_of_defer_expression.zig b/test/cases/compile_errors/cannot_continue_out_of_defer_expression.zig index 56b8ced05b..74d11528eb 100644 --- a/test/cases/compile_errors/stage1/obj/cannot_continue_out_of_defer_expression.zig +++ b/test/cases/compile_errors/cannot_continue_out_of_defer_expression.zig @@ -7,7 +7,8 @@ export fn foo() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:4:13: error: cannot continue out of defer expression +// :4:13: error: cannot continue out of defer expression +// :3:9: note: defer expression here diff --git a/test/cases/compile_errors/direct_struct_loop.zig b/test/cases/compile_errors/direct_struct_loop.zig new file mode 100644 index 0000000000..0abc1a4f73 --- /dev/null +++ b/test/cases/compile_errors/direct_struct_loop.zig @@ -0,0 +1,9 @@ +const A = struct { a : A, }; +export fn entry() usize { return @sizeOf(A); } + +// error +// backend=stage2 +// target=native +// +// :1:11: error: struct 'tmp.A' depends on itself +// :1:20: note: while checking this field diff --git a/test/cases/compile_errors/for_loop_body_expression_ignored.zig b/test/cases/compile_errors/for_loop_body_expression_ignored.zig new file mode 100644 index 0000000000..3ce73a9fab --- /dev/null +++ b/test/cases/compile_errors/for_loop_body_expression_ignored.zig @@ -0,0 +1,35 @@ +fn returns() usize { + return 2; +} +export fn f1() void { + for ("hello") |_| returns(); +} +export fn f2() void { + var x: anyerror!i32 = error.Bad; + for ("hello") |_| returns() else unreachable; + _ = x; +} +export fn f3() void { + for ("hello") |_| {} else true; +} +export fn f4() void { + const foo = for ("hello") |_| returns() else true; + _ = foo; +} + +// error +// backend=stage2 +// target=native +// +// :5:30: error: value of type 'usize' ignored +// :5:30: note: all non-void values must be used +// :5:30: note: this error can be suppressed by assigning the value to '_' +// :9:30: error: value of type 'usize' ignored +// :9:30: note: all non-void values must be used +// :9:30: note: this error can be suppressed by assigning the value to '_' +// :13:31: error: value of type 'bool' ignored +// :13:31: note: all non-void values must be used +// :13:31: note: this error can be suppressed by assigning the value to '_' +// :16:42: error: value of type 'usize' ignored +// :16:42: note: all non-void values must be used +// :16:42: note: this error can be suppressed by assigning the value to '_' diff --git a/test/cases/compile_errors/indirect_struct_loop.zig b/test/cases/compile_errors/indirect_struct_loop.zig new file mode 100644 index 0000000000..dca2b9c3f6 --- /dev/null +++ b/test/cases/compile_errors/indirect_struct_loop.zig @@ -0,0 +1,13 @@ +const A = struct { b : B, }; +const B = struct { c : C, }; +const C = struct { a : A, }; +export fn entry() usize { return @sizeOf(A); } + +// error +// backend=stage2 +// target=native +// +// :1:11: error: struct 'tmp.A' depends on itself +// :3:20: note: while checking this field +// :2:20: note: while checking this field +// :1:20: note: while checking this field diff --git a/test/cases/compile_errors/stage1/obj/instantiating_an_undefined_value_for_an_invalid_struct_that_contains_itself.zig b/test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_struct_that_contains_itself.zig index dd6909b1c2..74cafabe7c 100644 --- a/test/cases/compile_errors/stage1/obj/instantiating_an_undefined_value_for_an_invalid_struct_that_contains_itself.zig +++ b/test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_struct_that_contains_itself.zig @@ -9,7 +9,8 @@ export fn entry() usize { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:13: error: struct 'Foo' depends on itself +// :1:13: error: struct 'tmp.Foo' depends on itself +// :2:5: note: while checking this field diff --git a/test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_union_that_contains_itself.zig b/test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_union_that_contains_itself.zig new file mode 100644 index 0000000000..6030ca4d3e --- /dev/null +++ b/test/cases/compile_errors/instantiating_an_undefined_value_for_an_invalid_union_that_contains_itself.zig @@ -0,0 +1,16 @@ +const Foo = union { + x: Foo, +}; + +var foo: Foo = undefined; + +export fn entry() usize { + return @sizeOf(@TypeOf(foo.x)); +} + +// error +// backend=stage2 +// target=native +// +// :1:13: error: union 'tmp.Foo' depends on itself +// :2:5: note: while checking this field diff --git a/test/cases/compile_errors/stage1/obj/packed_union_given_enum_tag_type.zig b/test/cases/compile_errors/packed_union_given_enum_tag_type.zig index fceb7af65c..03aaef0d8c 100644 --- a/test/cases/compile_errors/stage1/obj/packed_union_given_enum_tag_type.zig +++ b/test/cases/compile_errors/packed_union_given_enum_tag_type.zig @@ -14,7 +14,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:30: error: packed union does not support enum tag type +// :6:30: error: packed union does not support enum tag type diff --git a/test/cases/compile_errors/stage1/obj/packed_union_with_automatic_layout_field.zig b/test/cases/compile_errors/packed_union_with_automatic_layout_field.zig index 99ad6ca306..97771e9b78 100644 --- a/test/cases/compile_errors/stage1/obj/packed_union_with_automatic_layout_field.zig +++ b/test/cases/compile_errors/packed_union_with_automatic_layout_field.zig @@ -12,7 +12,9 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:6:5: error: non-packed, non-extern struct 'Foo' not allowed in packed union; no guaranteed in-memory representation +// :6:5: error: packed unions cannot contain fields of type 'tmp.Foo' +// :6:5: note: only packed structs layout are allowed in packed types +// :1:13: note: struct declared here diff --git a/test/cases/compile_errors/stage1/obj/specify_non-integer_enum_tag_type.zig b/test/cases/compile_errors/specify_non-integer_enum_tag_type.zig index 333647e1e3..f2ff3e2cd1 100644 --- a/test/cases/compile_errors/stage1/obj/specify_non-integer_enum_tag_type.zig +++ b/test/cases/compile_errors/specify_non-integer_enum_tag_type.zig @@ -10,7 +10,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:21: error: expected integer, found 'f32' +// :1:21: error: expected integer tag type, found 'f32' diff --git a/test/cases/compile_errors/stage1/obj/direct_struct_loop.zig b/test/cases/compile_errors/stage1/obj/direct_struct_loop.zig deleted file mode 100644 index 3062e617d6..0000000000 --- a/test/cases/compile_errors/stage1/obj/direct_struct_loop.zig +++ /dev/null @@ -1,8 +0,0 @@ -const A = struct { a : A, }; -export fn entry() usize { return @sizeOf(A); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:11: error: struct 'A' depends on itself diff --git a/test/cases/compile_errors/stage1/obj/for_loop_body_expression_ignored.zig b/test/cases/compile_errors/stage1/obj/for_loop_body_expression_ignored.zig deleted file mode 100644 index 6281d4b276..0000000000 --- a/test/cases/compile_errors/stage1/obj/for_loop_body_expression_ignored.zig +++ /dev/null @@ -1,18 +0,0 @@ -fn returns() usize { - return 2; -} -export fn f1() void { - for ("hello") |_| returns(); -} -export fn f2() void { - var x: anyerror!i32 = error.Bad; - for ("hello") |_| returns() else unreachable; - _ = x; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:30: error: expression value is ignored -// tmp.zig:9:30: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/indirect_struct_loop.zig b/test/cases/compile_errors/stage1/obj/indirect_struct_loop.zig deleted file mode 100644 index 12214923d0..0000000000 --- a/test/cases/compile_errors/stage1/obj/indirect_struct_loop.zig +++ /dev/null @@ -1,10 +0,0 @@ -const A = struct { b : B, }; -const B = struct { c : C, }; -const C = struct { a : A, }; -export fn entry() usize { return @sizeOf(A); } - -// error -// backend=stage1 -// target=native -// -// tmp.zig:1:11: error: struct 'A' depends on itself diff --git a/test/cases/compile_errors/stage1/obj/while_loop_body_expression_ignored.zig b/test/cases/compile_errors/stage1/obj/while_loop_body_expression_ignored.zig deleted file mode 100644 index 9542cbc62f..0000000000 --- a/test/cases/compile_errors/stage1/obj/while_loop_body_expression_ignored.zig +++ /dev/null @@ -1,22 +0,0 @@ -fn returns() usize { - return 2; -} -export fn f1() void { - while (true) returns(); -} -export fn f2() void { - var x: ?i32 = null; - while (x) |_| returns(); -} -export fn f3() void { - var x: anyerror!i32 = error.Bad; - while (x) |_| returns() else |_| unreachable; -} - -// error -// backend=stage1 -// target=native -// -// tmp.zig:5:25: error: expression value is ignored -// tmp.zig:9:26: error: expression value is ignored -// tmp.zig:13:26: error: expression value is ignored diff --git a/test/cases/compile_errors/stage1/obj/struct_depends_on_itself_via_optional_field.zig b/test/cases/compile_errors/struct_depends_on_itself_via_optional_field.zig index 46086172f7..cad779e3d7 100644 --- a/test/cases/compile_errors/stage1/obj/struct_depends_on_itself_via_optional_field.zig +++ b/test/cases/compile_errors/struct_depends_on_itself_via_optional_field.zig @@ -11,9 +11,9 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:1:17: error: struct 'LhsExpr' depends on itself -// tmp.zig:5:5: note: while checking this field -// tmp.zig:2:5: note: while checking this field +// :1:17: error: struct 'tmp.LhsExpr' depends on itself +// :5:5: note: while checking this field +// :2:5: note: while checking this field diff --git a/test/cases/compile_errors/stage1/obj/top_level_decl_dependency_loop.zig b/test/cases/compile_errors/top_level_decl_dependency_loop.zig index ac70285c9c..3b0e60ac02 100644 --- a/test/cases/compile_errors/stage1/obj/top_level_decl_dependency_loop.zig +++ b/test/cases/compile_errors/top_level_decl_dependency_loop.zig @@ -6,7 +6,8 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:19: error: dependency loop detected +// :1:1: error: dependency loop detected +// :2:19: note: referenced here diff --git a/test/cases/compile_errors/stage1/obj/unused_variable_error_on_errdefer.zig b/test/cases/compile_errors/unused_variable_error_on_errdefer.zig index b85d5729dc..4c37af04eb 100644 --- a/test/cases/compile_errors/stage1/obj/unused_variable_error_on_errdefer.zig +++ b/test/cases/compile_errors/unused_variable_error_on_errdefer.zig @@ -7,7 +7,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: unused variable: 'a' +// :2:15: error: unused capture diff --git a/test/cases/compile_errors/stage1/obj/vector_index_out_of_bounds.zig b/test/cases/compile_errors/vector_index_out_of_bounds.zig index fdffd8b455..ed1a25a321 100644 --- a/test/cases/compile_errors/stage1/obj/vector_index_out_of_bounds.zig +++ b/test/cases/compile_errors/vector_index_out_of_bounds.zig @@ -4,7 +4,7 @@ export fn entry() void { } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:62: error: index 3 outside vector of size 3 +// :2:49: error: expected 3 vector elements; found 4 diff --git a/test/cases/compile_errors/stage1/obj/while_expected_error_union_got_bool.zig b/test/cases/compile_errors/while_expected_error_union_got_bool.zig index b8a72e9793..f7960437ec 100644 --- a/test/cases/compile_errors/stage1/obj/while_expected_error_union_got_bool.zig +++ b/test/cases/compile_errors/while_expected_error_union_got_bool.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() bool { return true; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected error union type, found 'bool' +// :2:15: error: expected error union type, found 'bool' diff --git a/test/cases/compile_errors/stage1/obj/while_expected_error_union_got_optional.zig b/test/cases/compile_errors/while_expected_error_union_got_optional.zig index c933dc9509..5cabd76fce 100644 --- a/test/cases/compile_errors/stage1/obj/while_expected_error_union_got_optional.zig +++ b/test/cases/compile_errors/while_expected_error_union_got_optional.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() ?i32 { return 1; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected error union type, found '?i32' +// :2:15: error: expected error union type, found '?i32' diff --git a/test/cases/compile_errors/stage1/obj/while_expected_optional_got_bool.zig b/test/cases/compile_errors/while_expected_optional_got_bool.zig index 0458d1ba01..22b8c1e58c 100644 --- a/test/cases/compile_errors/stage1/obj/while_expected_optional_got_bool.zig +++ b/test/cases/compile_errors/while_expected_optional_got_bool.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() bool { return true; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected optional type, found 'bool' +// :2:15: error: expected optional type, found 'bool' diff --git a/test/cases/compile_errors/stage1/obj/while_expected_optional_got_error_union.zig b/test/cases/compile_errors/while_expected_optional_got_error_union.zig index 7cdbd2cccf..38a8a0dd20 100644 --- a/test/cases/compile_errors/stage1/obj/while_expected_optional_got_error_union.zig +++ b/test/cases/compile_errors/while_expected_optional_got_error_union.zig @@ -4,7 +4,7 @@ export fn foo() void { fn bar() anyerror!i32 { return 1; } // error -// backend=stage1 +// backend=stage2 // target=native // -// tmp.zig:2:15: error: expected optional type, found 'anyerror!i32' +// :2:15: error: expected optional type, found 'anyerror!i32' diff --git a/test/cases/compile_errors/while_loop_body_expression_ignored.zig b/test/cases/compile_errors/while_loop_body_expression_ignored.zig new file mode 100644 index 0000000000..e33f48e6a5 --- /dev/null +++ b/test/cases/compile_errors/while_loop_body_expression_ignored.zig @@ -0,0 +1,43 @@ +fn returns() usize { + return 2; +} +export fn f1() void { + while (true) returns(); +} +export fn f2() void { + var x: ?i32 = null; + while (x) |_| returns(); +} +export fn f3() void { + var x: anyerror!i32 = error.Bad; + while (x) |_| returns() else |_| unreachable; +} +export fn f4() void { + var a = true; + while (a) {} else true; +} +export fn f5() void { + var a = true; + const foo = while (a) returns() else true; + _ = foo; +} + +// error +// backend=stage2 +// target=native +// +// :5:25: error: value of type 'usize' ignored +// :5:25: note: all non-void values must be used +// :5:25: note: this error can be suppressed by assigning the value to '_' +// :9:26: error: value of type 'usize' ignored +// :9:26: note: all non-void values must be used +// :9:26: note: this error can be suppressed by assigning the value to '_' +// :13:26: error: value of type 'usize' ignored +// :13:26: note: all non-void values must be used +// :13:26: note: this error can be suppressed by assigning the value to '_' +// :17:23: error: value of type 'bool' ignored +// :17:23: note: all non-void values must be used +// :17:23: note: this error can be suppressed by assigning the value to '_' +// :21:34: error: value of type 'usize' ignored +// :21:34: note: all non-void values must be used +// :21:34: note: this error can be suppressed by assigning the value to '_' |
