mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 07:32:44 +00:00
stage1: improve packed struct array padding error message
This commit is contained in:
parent
ed70f9981c
commit
065f40a3c5
@ -1777,11 +1777,12 @@ static Error emit_error_unless_type_allowed_in_packed_container(CodeGen *g, ZigT
|
||||
if ((err = emit_error_unless_type_allowed_in_packed_container(g, elem_type, source_node, container_name)))
|
||||
return err;
|
||||
// TODO revisit this when doing https://github.com/ziglang/zig/issues/1512
|
||||
if (type_size(g, type_entry) * 8 == type_size_bits(g, type_entry))
|
||||
return ErrorNone;
|
||||
size_t abi_size_in_bits = type_size(g, type_entry) * 8;
|
||||
size_t size_in_bits = type_size_bits(g, type_entry);
|
||||
if (abi_size_in_bits == size_in_bits) return ErrorNone;
|
||||
add_node_error(g, source_node,
|
||||
buf_sprintf("array of '%s' not allowed in packed %s due to padding bits",
|
||||
buf_ptr(&elem_type->name), container_name));
|
||||
buf_sprintf("array of '%s' not allowed in packed %s due to padding bits (must be padded from %zu to %zu bits)",
|
||||
buf_ptr(&elem_type->name), container_name, size_in_bits, abi_size_in_bits));
|
||||
return ErrorSemanticAnalyzeFail;
|
||||
}
|
||||
case ZigTypeIdStruct:
|
||||
|
@ -2995,7 +2995,7 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
\\};
|
||||
, &[_][]const u8{
|
||||
"tmp.zig:2:5: error: type 'anyerror' not allowed in packed struct; no guaranteed in-memory representation",
|
||||
"tmp.zig:5:5: error: array of 'u24' not allowed in packed struct due to padding bits",
|
||||
"tmp.zig:5:5: error: array of 'u24' not allowed in packed struct due to padding bits (must be padded from 48 to 64 bits)",
|
||||
"tmp.zig:8:5: error: type 'anyerror' not allowed in packed struct; no guaranteed in-memory representation",
|
||||
"tmp.zig:11:5: error: non-packed, non-extern struct 'S' not allowed in packed struct; no guaranteed in-memory representation",
|
||||
"tmp.zig:14:5: error: non-packed, non-extern struct 'U' not allowed in packed struct; no guaranteed in-memory representation",
|
||||
|
Loading…
Reference in New Issue
Block a user