| author | |
| committer | |
| log | 06d0dac0fb58c2d20036e34f5c1a1bc9c386c189 |
| tree | be7a91b228dc4f385a9bce111857f905d7506af8 |
| parent | f90fe1f8f2be6ffa1c19997d123e12310d9e04b5 |
Anonymous containers have no struct_field->type AstNode set, let's
always use the field node itself to make the error messages consistent.
Closes #46912 files changed, 9 insertions(+), 4 deletions(-)
src/analyze.cpp+2-2| ... | ... | @@ -2893,7 +2893,7 @@ static Error resolve_struct_zero_bits(CodeGen *g, ZigType *struct_type) { |
| 2893 | 2893 | return ErrorSemanticAnalyzeFail; |
| 2894 | 2894 | } |
| 2895 | 2895 | if (field_is_opaque_type) { |
| 2896 | add_node_error(g, field_node->data.struct_field.type, | |
| 2896 | add_node_error(g, field_node, | |
| 2897 | 2897 | buf_sprintf("opaque types have unknown size and therefore cannot be directly embedded in structs")); |
| 2898 | 2898 | struct_type->data.structure.resolve_status = ResolveStatusInvalid; |
| 2899 | 2899 | return ErrorSemanticAnalyzeFail; |
| ... | ... | @@ -3185,7 +3185,7 @@ static Error resolve_union_zero_bits(CodeGen *g, ZigType *union_type) { |
| 3185 | 3185 | return ErrorSemanticAnalyzeFail; |
| 3186 | 3186 | } |
| 3187 | 3187 | if (field_is_opaque_type) { |
| 3188 | add_node_error(g, field_node->data.struct_field.type, | |
| 3188 | add_node_error(g, field_node, | |
| 3189 | 3189 | buf_create_from_str( |
| 3190 | 3190 | "opaque types have unknown size and therefore cannot be directly embedded in unions")); |
| 3191 | 3191 | union_type->data.unionation.resolve_status = ResolveStatusInvalid; |
test/compile_errors.zig+7-2| ... | ... | @@ -1610,9 +1610,14 @@ pub fn addCases(cases: *tests.CompileErrorContext) void { |
| 1610 | 1610 | \\export fn b() void { |
| 1611 | 1611 | \\ var bar: Bar = undefined; |
| 1612 | 1612 | \\} |
| 1613 | \\export fn c() void { | |
| 1614 | \\ var baz: *@OpaqueType() = undefined; | |
| 1615 | \\ const qux = .{baz.*}; | |
| 1616 | \\} | |
| 1613 | 1617 | , &[_][]const u8{ |
| 1614 | "tmp.zig:3:8: error: opaque types have unknown size and therefore cannot be directly embedded in structs", | |
| 1615 | "tmp.zig:7:10: error: opaque types have unknown size and therefore cannot be directly embedded in unions", | |
| 1618 | "tmp.zig:3:5: error: opaque types have unknown size and therefore cannot be directly embedded in structs", | |
| 1619 | "tmp.zig:7:5: error: opaque types have unknown size and therefore cannot be directly embedded in unions", | |
| 1620 | "tmp.zig:17:22: error: opaque types have unknown size and therefore cannot be directly embedded in structs", | |
| 1616 | 1621 | }); |
| 1617 | 1622 | |
| 1618 | 1623 | cases.add("implicit cast between C pointer and Zig pointer - bad const/align/child", |