translate-c fix increment rendering issues

This commit is contained in:
Vexu 2020-01-02 16:28:01 +02:00 committed by Andrew Kelley
parent de894f2bde
commit 3dd067fa2b
2 changed files with 6 additions and 4 deletions

View File

@ -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

View File

@ -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) {}
\\ }
\\}
});