Add tests for enums with explicit extern-allowed tag types in extern types

This commit is contained in:
Tadeo Kondrak 2020-09-26 08:06:14 -06:00
parent 61ce72a38c
commit cae49b1b9d
No known key found for this signature in database
GPG Key ID: D41E092CA43F1D8B
2 changed files with 19 additions and 0 deletions

View File

@ -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(.{

View File

@ -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;
}