Commit 3dd067fa2b

Vexu <git@vexu.eu>
2020-01-02 15:28:01
translate-c fix increment rendering issues
1 parent de894f2
Changed files (2)
src-self-hosted
test
src-self-hosted/translate_c.zig
@@ -2478,7 +2478,8 @@ fn transCreatePreCrement(
         const expr = try transExpr(rp, scope, op_expr, .used, .r_value);
         const token = try appendToken(rp.c, op_tok_id, bytes);
         const one = try transCreateNodeInt(rp.c, 1);
-        _ = try appendToken(rp.c, .Semicolon, ";");
+        if (scope.id != .Condition)
+            _ = try appendToken(rp.c, .Semicolon, ";");
         return transCreateNodeInfixOp(rp, scope, expr, op, token, one, .used, false);
     }
     // worst case
@@ -2542,7 +2543,8 @@ fn transCreatePostCrement(
         const expr = try transExpr(rp, scope, op_expr, .used, .r_value);
         const token = try appendToken(rp.c, op_tok_id, bytes);
         const one = try transCreateNodeInt(rp.c, 1);
-        _ = try appendToken(rp.c, .Semicolon, ";");
+        if (scope.id != .Condition)
+            _ = try appendToken(rp.c, .Semicolon, ";");
         return transCreateNodeInfixOp(rp, scope, expr, op, token, one, .used, false);
     }
     // worst case
test/translate_c.zig
@@ -585,13 +585,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
 
     cases.add("for loop",
         \\void foo(void) {
-        \\    for (int i = 0; i; i = i + 1) { }
+        \\    for (int i = 0; i; i++) { }
         \\}
     , &[_][]const u8{
         \\pub export fn foo() void {
         \\    {
         \\        var i: c_int = 0;
-        \\        while (i != 0) : (i = (i + @as(c_int, 1))) {}
+        \\        while (i != 0) : (i += 1) {}
         \\    }
         \\}
     });