more fixes
This commit is contained in:
parent
f21ac0220a
commit
882aa86843
|
@ -811,7 +811,7 @@ fn transRecordDecl(c: *Context, record_decl: *const ZigClangRecordDecl) Error!?*
|
||||||
|
|
||||||
var is_anon = false;
|
var is_anon = false;
|
||||||
var raw_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, field_decl)));
|
var raw_name = try c.str(ZigClangNamedDecl_getName_bytes_begin(@ptrCast(*const ZigClangNamedDecl, field_decl)));
|
||||||
if (ZigClangFieldDecl_isAnonymousStructOrUnion(field_decl) or (std.Target.current.abi == .msvc and raw_name.len == 0)) {
|
if (ZigClangFieldDecl_isAnonymousStructOrUnion(field_decl) or raw_name.len == 0) {
|
||||||
raw_name = try std.fmt.allocPrint(c.a(), "unnamed_{}", .{c.getMangle()});
|
raw_name = try std.fmt.allocPrint(c.a(), "unnamed_{}", .{c.getMangle()});
|
||||||
is_anon = true;
|
is_anon = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2853,4 +2853,28 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
|
||||||
, &[_][]const u8{
|
, &[_][]const u8{
|
||||||
\\pub const FOO = 0x61626364;
|
\\pub const FOO = 0x61626364;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (std.Target.current.abi == .msvc) {
|
||||||
|
cases.add("nameless struct fields on msvc",
|
||||||
|
\\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,
|
||||||
|
\\};
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user