diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig index 68d1dabb0e..a65c1b9fb4 100644 --- a/src-self-hosted/translate_c.zig +++ b/src-self-hosted/translate_c.zig @@ -5881,7 +5881,7 @@ fn parseCPrimaryExpr(c: *Context, m: *MacroCtx, scope: *Scope) ParseError!*ast.N }, .Identifier => { const mangled_name = scope.getAlias(slice); - return transCreateNodeIdentifier(c, mangled_name); + return transCreateNodeIdentifier(c, checkForBuiltinTypedef(mangled_name) orelse mangled_name); }, .LParen => { const inner_node = try parseCExpr(c, m, scope); diff --git a/test/translate_c.zig b/test/translate_c.zig index 41f1e78294..83fdda8d81 100644 --- a/test/translate_c.zig +++ b/test/translate_c.zig @@ -2761,12 +2761,15 @@ pub fn addCases(cases: *tests.TranslateCContext) void { cases.add("macro cast", \\#define FOO(bar) baz((void *)(baz)) \\#define BAR (void*) a + \\#define BAZ (uint32_t)(2) , &[_][]const u8{ \\pub inline fn FOO(bar: anytype) @TypeOf(baz((@import("std").meta.cast(?*c_void, baz)))) { \\ return baz((@import("std").meta.cast(?*c_void, baz))); \\} , \\pub const BAR = (@import("std").meta.cast(?*c_void, a)); + , + \\pub const BAZ = (@import("std").meta.cast(u32, 2)); }); cases.add("macro with cast to unsigned short, long, and long long",