diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-07-19 01:25:10 +0300 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-07-21 12:21:30 -0700 |
| commit | 1705a21f804a79d5267a198dc28d8a91dc0dc201 (patch) | |
| tree | b3877b15738f30261ee8a4255dfe5ad42f841568 /test/cases | |
| parent | 8feb3987608945040c955bd7b24be3841ebf74ac (diff) | |
| download | zig-1705a21f804a79d5267a198dc28d8a91dc0dc201.tar.gz zig-1705a21f804a79d5267a198dc28d8a91dc0dc201.zip | |
Sema: more union and enum tag type validation
Diffstat (limited to 'test/cases')
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 |
