mirror of
https://github.com/ziglang/zig.git
synced 2026-01-21 06:45:24 +00:00
Merge pull request #4973 from SuperAuguste/nameless-fields
Nameless fields
This commit is contained in:
commit
1b1cbd9358
@ -811,7 +811,7 @@ fn transRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) Error!?*
|
||||
|
||||
var is_anon = false;
|
||||
var raw_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, field_decl)));
|
||||
if (ZigClangFieldDecl_isAnonymousStructOrUnion(field_decl)) {
|
||||
if (ZigClangFieldDecl_isAnonymousStructOrUnion(field_decl) or raw_name.len == 0) {
|
||||
raw_name = try std.fmt.allocPrint(c.a(), "unnamed_{}", .{c.getMangle()});
|
||||
is_anon = true;
|
||||
}
|
||||
|
||||
@ -2879,7 +2879,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
|
||||
, &[_][]const u8{
|
||||
\\pub const FOO = 0x61626364;
|
||||
});
|
||||
|
||||
|
||||
cases.add("Make sure casts are grouped",
|
||||
\\typedef struct
|
||||
\\{
|
||||
@ -2910,4 +2910,49 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
|
||||
,
|
||||
\\pub const GPIO_2_MEM_MAP = @intToPtr([*c]c_uint, 0x8008);
|
||||
});
|
||||
|
||||
if (std.Target.current.abi == .msvc) {
|
||||
cases.add("nameless struct fields",
|
||||
\\typedef struct NAMED
|
||||
\\{
|
||||
\\ long name;
|
||||
\\} NAMED;
|
||||
\\
|
||||
\\typedef struct ONENAMEWITHSTRUCT
|
||||
\\{
|
||||
\\ NAMED;
|
||||
\\ long b;
|
||||
\\} ONENAMEWITHSTRUCT;
|
||||
, &[_][]const u8{
|
||||
\\pub const struct_NAMED = extern struct {
|
||||
\\ name: c_long,
|
||||
\\};
|
||||
\\pub const NAMED = struct_NAMED;
|
||||
\\pub const struct_ONENAMEWITHSTRUCT = extern struct {
|
||||
\\ unnamed_1: struct_NAMED,
|
||||
\\ b: c_long,
|
||||
\\};
|
||||
});
|
||||
} else {
|
||||
cases.add("nameless struct fields",
|
||||
\\typedef struct NAMED
|
||||
\\{
|
||||
\\ long name;
|
||||
\\} NAMED;
|
||||
\\
|
||||
\\typedef struct ONENAMEWITHSTRUCT
|
||||
\\{
|
||||
\\ NAMED;
|
||||
\\ long b;
|
||||
\\} ONENAMEWITHSTRUCT;
|
||||
, &[_][]const u8{
|
||||
\\pub const struct_NAMED = extern struct {
|
||||
\\ name: c_long,
|
||||
\\};
|
||||
\\pub const NAMED = struct_NAMED;
|
||||
\\pub const struct_ONENAMEWITHSTRUCT = extern struct {
|
||||
\\ b: c_long,
|
||||
\\};
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user