aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-08-03 20:13:07 -0700
committerGitHub <noreply@github.com>2022-08-03 20:13:07 -0700
commite483336ba454743e65fd72a5d4dd74732dc1ef0f (patch)
tree51f5ee800c4c423fe5224fbc9c2ff9d2dc576ba3 /test/cases/compile_errors
parent4c750016eb9b1c0831cbb0398a4d6ee9dbdc932e (diff)
parent4ab60dc18b44cffad88d470c567920bcc34b1214 (diff)
downloadzig-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.zig9
-rw-r--r--test/cases/compile_errors/for_loop_body_expression_ignored.zig35
-rw-r--r--test/cases/compile_errors/indirect_struct_loop.zig13
-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.zig16
-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.zig8
-rw-r--r--test/cases/compile_errors/stage1/obj/for_loop_body_expression_ignored.zig18
-rw-r--r--test/cases/compile_errors/stage1/obj/indirect_struct_loop.zig10
-rw-r--r--test/cases/compile_errors/stage1/obj/while_loop_body_expression_ignored.zig22
-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.zig43
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 '_'