diff --git a/src/translate_c.cpp b/src/translate_c.cpp index d50cc1d31562c89b5c92b10371b9e6ddcd59b684..3295560af398c2cf759592887e905e93206d70bb 100644 --- a/src/translate_c.cpp +++ b/src/translate_c.cpp @@ -400,6 +400,9 @@ static AstNode *get_global(Context *c, Buf *name) { if (entry) return entry->value; } + if (c->codegen->primitive_type_table.maybe_get(name) != nullptr) { + return trans_create_node_symbol(c, name); + } return nullptr; } diff --git a/test/translate_c.zig b/test/translate_c.zig index 2fe4944de62968a9f4df50848e5ba990b47203c1..8a8d1d334bbf5255af2ecfc580c996697b2669b1 100644 --- a/test/translate_c.zig +++ b/test/translate_c.zig @@ -1162,4 +1162,14 @@ pub fn addCases(cases: &tests.TranslateCContext) { \\ return ~x; \\} ); + + cases.add("primitive types included in defined symbols", + \\int foo(int u32) { + \\ return u32; + \\} + , + \\pub fn foo(u32_0: c_int) -> c_int { + \\ return u32_0; + \\} + ); }