aboutsummaryrefslogtreecommitdiff
path: root/test/cases/compile_errors
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-07-19 01:25:10 +0300
committerAndrew Kelley <andrew@ziglang.org>2022-07-21 12:21:30 -0700
commit1705a21f804a79d5267a198dc28d8a91dc0dc201 (patch)
treeb3877b15738f30261ee8a4255dfe5ad42f841568 /test/cases/compile_errors
parent8feb3987608945040c955bd7b24be3841ebf74ac (diff)
downloadzig-1705a21f804a79d5267a198dc28d8a91dc0dc201.tar.gz
zig-1705a21f804a79d5267a198dc28d8a91dc0dc201.zip
Sema: more union and enum tag type validation
Diffstat (limited to 'test/cases/compile_errors')
-rw-r--r--test/cases/compile_errors/extern_union_given_enum_tag_type.zig (renamed from test/cases/compile_errors/stage1/obj/extern_union_given_enum_tag_type.zig)4
-rw-r--r--test/cases/compile_errors/non-enum_tag_type_passed_to_union.zig (renamed from test/cases/compile_errors/stage1/obj/non-enum_tag_type_passed_to_union.zig)4
-rw-r--r--test/cases/compile_errors/non-integer_tag_type_to_automatic_union_enum.zig (renamed from test/cases/compile_errors/stage1/obj/non-integer_tag_type_to_automatic_union_enum.zig)4
-rw-r--r--test/cases/compile_errors/non-integer_tag_type_to_enum.zig13
-rw-r--r--test/cases/compile_errors/stage2/union_enum_field_missing.zig2
-rw-r--r--test/cases/compile_errors/stage2/union_extra_field.zig2
-rw-r--r--test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig2
-rw-r--r--test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig2
-rw-r--r--test/cases/compile_errors/switching_with_non-exhaustive_enums.zig2
-rw-r--r--test/cases/compile_errors/union_with_specified_enum_omits_field.zig2
10 files changed, 25 insertions, 12 deletions
diff --git a/test/cases/compile_errors/stage1/obj/extern_union_given_enum_tag_type.zig b/test/cases/compile_errors/extern_union_given_enum_tag_type.zig
index 86ac42cccf..6a691eb2e2 100644
--- a/test/cases/compile_errors/stage1/obj/extern_union_given_enum_tag_type.zig
+++ b/test/cases/compile_errors/extern_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: extern union does not support enum tag type
+// :6:30: error: extern union does not support enum tag type
diff --git a/test/cases/compile_errors/stage1/obj/non-enum_tag_type_passed_to_union.zig b/test/cases/compile_errors/non-enum_tag_type_passed_to_union.zig
index e188a3f819..addc970425 100644
--- a/test/cases/compile_errors/stage1/obj/non-enum_tag_type_passed_to_union.zig
+++ b/test/cases/compile_errors/non-enum_tag_type_passed_to_union.zig
@@ -7,7 +7,7 @@ export fn entry() void {
}
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:1:19: error: expected enum tag type, found 'u32'
+// :1:19: error: expected enum tag type, found 'u32'
diff --git a/test/cases/compile_errors/stage1/obj/non-integer_tag_type_to_automatic_union_enum.zig b/test/cases/compile_errors/non-integer_tag_type_to_automatic_union_enum.zig
index 41d5e14163..3483ea8a5c 100644
--- a/test/cases/compile_errors/stage1/obj/non-integer_tag_type_to_automatic_union_enum.zig
+++ b/test/cases/compile_errors/non-integer_tag_type_to_automatic_union_enum.zig
@@ -7,7 +7,7 @@ export fn entry() void {
}
// error
-// backend=stage1
+// backend=stage2
// target=native
//
-// tmp.zig:1:24: error: expected integer tag type, found 'f32'
+// :1:24: error: expected integer tag type, found 'f32'
diff --git a/test/cases/compile_errors/non-integer_tag_type_to_enum.zig b/test/cases/compile_errors/non-integer_tag_type_to_enum.zig
new file mode 100644
index 0000000000..85ffc5b4b6
--- /dev/null
+++ b/test/cases/compile_errors/non-integer_tag_type_to_enum.zig
@@ -0,0 +1,13 @@
+const Foo = enum(f32) {
+ A,
+};
+export fn entry() void {
+ var f: Foo = undefined;
+ _ = f;
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :1:18: error: expected integer tag type, found 'f32'
diff --git a/test/cases/compile_errors/stage2/union_enum_field_missing.zig b/test/cases/compile_errors/stage2/union_enum_field_missing.zig
index 25ec477894..81bc83cf18 100644
--- a/test/cases/compile_errors/stage2/union_enum_field_missing.zig
+++ b/test/cases/compile_errors/stage2/union_enum_field_missing.zig
@@ -16,6 +16,6 @@ export fn entry() usize {
// error
// target=native
//
-// :7:1: error: enum field(s) missing in union
+// :7:11: error: enum field(s) missing in union
// :4:5: note: field 'c' missing, declared here
// :1:11: note: enum declared here
diff --git a/test/cases/compile_errors/stage2/union_extra_field.zig b/test/cases/compile_errors/stage2/union_extra_field.zig
index e3bc0deb33..0488ce183c 100644
--- a/test/cases/compile_errors/stage2/union_extra_field.zig
+++ b/test/cases/compile_errors/stage2/union_extra_field.zig
@@ -16,5 +16,5 @@ export fn entry() usize {
// error
// target=native
//
-// :6:1: error: enum 'tmp.E' has no field named 'd'
+// :10:5: error: enum 'tmp.E' has no field named 'd'
// :1:11: note: enum declared here
diff --git a/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig b/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig
index 20b373f6b7..1075b837de 100644
--- a/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig
+++ b/test/cases/compile_errors/switch_expression-missing_enumeration_prong.zig
@@ -19,5 +19,5 @@ export fn entry() usize { return @sizeOf(@TypeOf(&f)); }
// target=native
//
// :8:5: error: switch must handle all possibilities
-// :8:5: note: unhandled enumeration value: 'Four'
+// :5:5: note: unhandled enumeration value: 'Four'
// :1:16: note: enum 'tmp.Number' declared here
diff --git a/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig b/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig
index dbf1cd948f..cf6fc141de 100644
--- a/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig
+++ b/test/cases/compile_errors/switch_on_enum_with_1_field_with_no_prongs.zig
@@ -10,5 +10,5 @@ export fn entry() void {
// target=native
//
// :5:5: error: switch must handle all possibilities
-// :5:5: note: unhandled enumeration value: 'M'
+// :1:20: note: unhandled enumeration value: 'M'
// :1:13: note: enum 'tmp.Foo' declared here
diff --git a/test/cases/compile_errors/switching_with_non-exhaustive_enums.zig b/test/cases/compile_errors/switching_with_non-exhaustive_enums.zig
index e33d686d86..435d409dd4 100644
--- a/test/cases/compile_errors/switching_with_non-exhaustive_enums.zig
+++ b/test/cases/compile_errors/switching_with_non-exhaustive_enums.zig
@@ -35,7 +35,7 @@ pub export fn entry3() void {
// target=native
//
// :12:5: error: switch must handle all possibilities
-// :12:5: note: unhandled enumeration value: 'b'
+// :3:5: note: unhandled enumeration value: 'b'
// :1:11: note: enum 'tmp.E' declared here
// :19:5: error: switch on non-exhaustive enum must include 'else' or '_' prong
// :26:5: error: '_' prong only allowed when switching on non-exhaustive enums
diff --git a/test/cases/compile_errors/union_with_specified_enum_omits_field.zig b/test/cases/compile_errors/union_with_specified_enum_omits_field.zig
index 3033feb376..5c2b735875 100644
--- a/test/cases/compile_errors/union_with_specified_enum_omits_field.zig
+++ b/test/cases/compile_errors/union_with_specified_enum_omits_field.zig
@@ -15,6 +15,6 @@ export fn entry() usize {
// backend=stage2
// target=native
//
-// :6:1: error: enum field(s) missing in union
+// :6:17: error: enum field(s) missing in union
// :4:5: note: field 'C' missing, declared here
// :1:16: note: enum declared here