aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/translate_c/ast.zig29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/translate_c/ast.zig b/src/translate_c/ast.zig
index 307a7e9ea7..ce88a1a292 100644
--- a/src/translate_c/ast.zig
+++ b/src/translate_c/ast.zig
@@ -1550,14 +1550,27 @@ fn renderNode(c: *Context, node: Node) Allocator.Error!NodeIndex {
.main_token = try c.addToken(.identifier, "_"),
.data = undefined,
});
- return c.addNode(.{
- .tag = .assign,
- .main_token = try c.addToken(.equal, "="),
- .data = .{
- .lhs = lhs,
- .rhs = try renderNode(c, payload.value),
- },
- });
+ const main_token = try c.addToken(.equal, "=");
+ if (payload.value.tag() == .identifier) {
+ // Render as `_ = @TypeOf(foo);` to avoid tripping "pointless discard" error.
+ return c.addNode(.{
+ .tag = .assign,
+ .main_token = main_token,
+ .data = .{
+ .lhs = lhs,
+ .rhs = try renderBuiltinCall(c, "@TypeOf", &.{payload.value}),
+ },
+ });
+ } else {
+ return c.addNode(.{
+ .tag = .assign,
+ .main_token = main_token,
+ .data = .{
+ .lhs = lhs,
+ .rhs = try renderNode(c, payload.value),
+ },
+ });
+ }
},
.@"while" => {
const payload = node.castTag(.@"while").?.data;