Commit cae49b1b9d

Tadeo Kondrak <me@tadeo.ca>
2020-09-26 16:06:14
Add tests for enums with explicit extern-allowed tag types in extern types
1 parent 61ce72a
Changed files (2)
test
stage1
behavior
test/stage1/behavior/bugs/1467.zig
@@ -0,0 +1,7 @@
+pub const E = enum(u32) { A, B, C };
+pub const S = extern struct {
+    e: E,
+};
+test "bug 1467" {
+    const s: S = undefined;
+}
test/compile_errors.zig
@@ -20,6 +20,18 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
         "tmp.zig:2:20: error: use of undefined value here causes undefined behavior",
     });
 
+    cases.add("extern struct with non-extern-compatible integer tag type",
+        \\pub const E = enum(u31) { A, B, C };
+        \\pub const S = extern struct {
+        \\    e: E,
+        \\};
+        \\export fn entry() void {
+        \\    const s: S = undefined;
+        \\}
+    , &[_][]const u8{
+        "tmp.zig:3:5: error: extern structs cannot contain fields of type 'E'",
+    });
+
     cases.add("@Type for exhaustive enum with non-integer tag type",
         \\const TypeInfo = @import("builtin").TypeInfo;
         \\const Tag = @Type(.{