AstGen: make layout specifiers on opaque containers a compile error

This commit is contained in:
David Rubin 2025-02-13 11:54:45 -08:00 committed by Andrew Kelley
parent 61ee9f9415
commit 36fc2d2607
2 changed files with 18 additions and 0 deletions

View File

@ -5913,6 +5913,10 @@ fn containerDecl(
var wip_members = try WipMembers.init(gpa, &astgen.scratch, decl_count, 0, 0, 0);
defer wip_members.deinit();
if (container_decl.layout_token) |layout_token| {
return astgen.failTok(layout_token, "opaque types do not support 'packed' or 'extern'", .{});
}
for (container_decl.ast.members) |member_node| {
const res = try containerMember(&block_scope, &namespace.base, &wip_members, member_node);
if (res == .field) {

View File

@ -0,0 +1,14 @@
const X = extern opaque {};
const Y = packed opaque {};
export fn foo(x: *X, y: *Y) void {
_ = x;
_ = y;
}
// error
// backend=stage2
// target=native
//
// :1:11: error: opaque types do not support 'packed' or 'extern'
// :2:11: error: opaque types do not support 'packed' or 'extern'