authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-03-06 00:04:24+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-03-06 00:06:45-05:00
logeaccfffe56655ab11a382685886492e5b9b0865c
tree47f1d393bb1cfbeb6060fb03a486a14cc31f9542
parent6b069f5c8c0f23099287ba340ddf8490c6cdc94d

translate-c: default initialize non-extern variables to undefined


2 files changed, 4 insertions(+), 2 deletions(-)

src-self-hosted/translate_c.zig+2-1
...@@ -609,7 +609,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {...@@ -609,7 +609,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void {
609 else609 else
610 try transCreateNodeUndefinedLiteral(c);610 try transCreateNodeUndefinedLiteral(c);
611 } else if (storage_class != .Extern) {611 } else if (storage_class != .Extern) {
612 return failDecl(c, var_decl_loc, checked_name, "non-extern variable has no initializer", .{});612 eq_tok = try appendToken(c, .Equal, "=");
613 init_node = try transCreateNodeTypeIdentifier(c, "undefined");
613 }614 }
614615
615 const linksection_expr = blk: {616 const linksection_expr = blk: {
test/translate_c.zig+2-1
...@@ -337,10 +337,11 @@ pub fn addCases(cases: *tests.TranslateCContext) void {...@@ -337,10 +337,11 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
337 cases.add("variables",337 cases.add("variables",
338 \\extern int extern_var;338 \\extern int extern_var;
339 \\static const int int_var = 13;339 \\static const int int_var = 13;
340 \\int foo;
340 , &[_][]const u8{341 , &[_][]const u8{
341 \\pub extern var extern_var: c_int;342 \\pub extern var extern_var: c_int;
342 ,
343 \\pub const int_var: c_int = 13;343 \\pub const int_var: c_int = 13;
344 \\pub export var foo: c_int = undefined;
344 });345 });
345346
346 cases.add("const ptr initializer",347 cases.add("const ptr initializer",