diff options
| author | hryx <codroid@gmail.com> | 2019-06-22 17:29:10 -0700 |
|---|---|---|
| committer | hryx <codroid@gmail.com> | 2019-06-22 17:29:10 -0700 |
| commit | 6325ffc3f1e5f61caab6d554a760c1b5d061b0d4 (patch) | |
| tree | 7e7e767f107b0a22d4fd95089155c67475f695e4 /src-self-hosted | |
| parent | 0f545e5a2b664d340fe33fe0a8fbc44956485e18 (diff) | |
| download | zig-6325ffc3f1e5f61caab6d554a760c1b5d061b0d4.tar.gz zig-6325ffc3f1e5f61caab6d554a760c1b5d061b0d4.zip | |
Assign undefined literal (instead of null) when no init value
Diffstat (limited to 'src-self-hosted')
| -rw-r--r-- | src-self-hosted/translate_c.zig | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig index 7de834b4f0..4d339fe259 100644 --- a/src-self-hosted/translate_c.zig +++ b/src-self-hosted/translate_c.zig @@ -357,7 +357,7 @@ fn transCompoundStmtInline( const end_it = ZigClangCompoundStmt_body_end(stmt); var scope = parent_scope; while (it != end_it) : (it += 1) { - const result = try transStmt(rp, scope, it.*, .unused, .r_value); + const result = try transStmt(rp, parent_scope, it.*, .unused, .r_value); scope = result.child_scope; try block_node.statements.push(result.node); } @@ -438,11 +438,22 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe }; scope = &var_scope.base; + const colon_token = try appendToken(c, .Colon, ":"); + const loc = ZigClangStmt_getBeginLoc(@ptrCast(*const ZigClangStmt, stmt)); + const type_node = try transQualType(rp, qual_type, loc); + const eq_token = try appendToken(c, .Equal, "="); const init_node = if (ZigClangVarDecl_getInit(var_decl)) |expr| (try transExpr(rp, scope, expr, .used, .r_value)).node - else - null; + else blk: { + const undefined_token = try appendToken(c, .Keyword_undefined, "undefined"); + const undefined_node = try rp.c.a().create(ast.Node.UndefinedLiteral); + undefined_node.* = ast.Node.UndefinedLiteral{ + .base = ast.Node{ .id = .UndefinedLiteral }, + .token = undefined_token, + }; + break :blk &undefined_node.base; + }; const semicolon_token = try appendToken(c, .Semicolon, ";"); const node = try c.a().create(ast.Node.VarDecl); @@ -457,7 +468,7 @@ fn transDeclStmt(rp: RestorePoint, parent_scope: *Scope, stmt: *const ZigClangDe .comptime_token = null, .extern_export_token = null, // TODO ?TokenIndex, .lib_name = null, // TODO ?*Node, - .type_node = null, // TODO ?*Node, + .type_node = type_node, .align_node = null, // TODO ?*Node, .section_node = null, // TODO ?*Node, .init_node = init_node, |
