From eaccfffe56655ab11a382685886492e5b9b0865c Mon Sep 17 00:00:00 2001 From: Vexu Date: Fri, 6 Mar 2020 00:04:24 +0200 Subject: [PATCH] translate-c: default initialize non-extern variables to undefined --- src-self-hosted/translate_c.zig | 3 ++- test/translate_c.zig | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig index 0fc2feba7..25cbea1cc 100644 --- a/src-self-hosted/translate_c.zig +++ b/src-self-hosted/translate_c.zig @@ -609,7 +609,8 @@ fn visitVarDecl(c: *Context, var_decl: *const ZigClangVarDecl) Error!void { else try transCreateNodeUndefinedLiteral(c); } else if (storage_class != .Extern) { - return failDecl(c, var_decl_loc, checked_name, "non-extern variable has no initializer", .{}); + eq_tok = try appendToken(c, .Equal, "="); + init_node = try transCreateNodeTypeIdentifier(c, "undefined"); } const linksection_expr = blk: { diff --git a/test/translate_c.zig b/test/translate_c.zig index 3e7d15a23..29a65c862 100644 --- a/test/translate_c.zig +++ b/test/translate_c.zig @@ -337,10 +337,11 @@ pub fn addCases(cases: *tests.TranslateCContext) void { cases.add("variables", \\extern int extern_var; \\static const int int_var = 13; + \\int foo; , &[_][]const u8{ \\pub extern var extern_var: c_int; - , \\pub const int_var: c_int = 13; + \\pub export var foo: c_int = undefined; }); cases.add("const ptr initializer",