mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
Tests for zero-bit field compiler error
This commit is contained in:
parent
7ac44037db
commit
c828c23f71
@ -15223,10 +15223,10 @@ static TypeTableEntry *ir_analyze_instruction_offset_of(IrAnalyze *ira,
|
||||
}
|
||||
|
||||
if (field->type_entry->zero_bits) {
|
||||
ir_add_error(ira, field_name_value,
|
||||
buf_sprintf("zero-bit field '%s' in struct '%s' has no offset",
|
||||
buf_ptr(field_name), buf_ptr(&container_type->name)));
|
||||
return ira->codegen->builtin_types.entry_invalid;
|
||||
ir_add_error(ira, field_name_value,
|
||||
buf_sprintf("zero-bit field '%s' in struct '%s' has no offset",
|
||||
buf_ptr(field_name), buf_ptr(&container_type->name)));
|
||||
return ira->codegen->builtin_types.entry_invalid;
|
||||
}
|
||||
size_t byte_offset = LLVMOffsetOfElement(ira->codegen->target_data_ref, container_type->type_ref, field->gen_index);
|
||||
ConstExprValue *out_val = ir_build_const_from(ira, &instruction->base);
|
||||
|
||||
@ -3141,4 +3141,14 @@ pub fn addCases(cases: &tests.CompileErrorContext) void {
|
||||
\\}
|
||||
,
|
||||
".tmp_source.zig:4:9: error: type 'S' is not copyable; cannot pass by value");
|
||||
|
||||
cases.add("taking offset of void field in struct",
|
||||
\\const Empty = struct {
|
||||
\\ val: void,
|
||||
\\};
|
||||
\\export fn foo() void {
|
||||
\\ const fieldOffset = @offsetOf(Empty, "val");
|
||||
\\}
|
||||
,
|
||||
".tmp_source.zig:5:42: error: zero-bit field 'val' has no offset in struct 'Empty'");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user