| ... | ... | @@ -2237,6 +2237,7 @@ fn transWhileLoop( |
| 2237 | 2237 | .id = .Loop, |
| 2238 | 2238 | }; |
| 2239 | 2239 | while_node.body = try transStmt(rp, &loop_scope, ZigClangWhileStmt_getBody(stmt), .unused, .r_value); |
| 2240 | _ = try appendToken(rp.c, .Semicolon, ";"); |
| 2240 | 2241 | return &while_node.base; |
| 2241 | 2242 | } |
| 2242 | 2243 | |
| ... | ... | @@ -2346,8 +2347,10 @@ fn transForLoop( |
| 2346 | 2347 | try block_scope.?.block_node.statements.push(&while_node.base); |
| 2347 | 2348 | block_scope.?.block_node.rbrace = try appendToken(rp.c, .RBrace, "}"); |
| 2348 | 2349 | return &block_scope.?.block_node.base; |
| 2349 | | } else |
| 2350 | } else { |
| 2351 | _ = try appendToken(rp.c, .Semicolon, ";"); |
| 2350 | 2352 | return &while_node.base; |
| 2353 | } |
| 2351 | 2354 | } |
| 2352 | 2355 | |
| 2353 | 2356 | fn transSwitch( |
| ... | ... | @@ -5576,14 +5579,7 @@ fn parseCSuffixOpExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5576 | 5579 | ); |
| 5577 | 5580 | return error.ParseError; |
| 5578 | 5581 | } |
| 5579 | | // deref is often used together with casts so we group the lhs expression |
| 5580 | | const group = try c.a().create(ast.Node.GroupedExpression); |
| 5581 | | group.* = .{ |
| 5582 | | .lparen = try appendToken(c, .LParen, "("), |
| 5583 | | .expr = node, |
| 5584 | | .rparen = try appendToken(c, .RParen, ")"), |
| 5585 | | }; |
| 5586 | | const deref = try transCreateNodePtrDeref(c, &group.base); |
| 5582 | const deref = try transCreateNodePtrDeref(c, node); |
| 5587 | 5583 | node = try transCreateNodeFieldAccess(c, deref, source[name_tok.start..name_tok.end]); |
| 5588 | 5584 | continue; |
| 5589 | 5585 | }, |
| ... | ... | @@ -5627,7 +5623,7 @@ fn parseCSuffixOpExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5627 | 5623 | }, |
| 5628 | 5624 | .Ampersand => { |
| 5629 | 5625 | op_token = try appendToken(c, .Ampersand, "&"); |
| 5630 | | op_id .BitAnd; |
| 5626 | op_id = .BitAnd; |
| 5631 | 5627 | }, |
| 5632 | 5628 | .Plus => { |
| 5633 | 5629 | op_token = try appendToken(c, .Plus, "+"); |
| ... | ... | @@ -5635,7 +5631,7 @@ fn parseCSuffixOpExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5635 | 5631 | }, |
| 5636 | 5632 | .Minus => { |
| 5637 | 5633 | op_token = try appendToken(c, .Minus, "-"); |
| 5638 | | op_id .Sub; |
| 5634 | op_id = .Sub; |
| 5639 | 5635 | }, |
| 5640 | 5636 | .AmpersandAmpersand => { |
| 5641 | 5637 | op_token = try appendToken(c, .Keyword_and, "and"); |
| ... | ... | @@ -5707,7 +5703,7 @@ fn parseCSuffixOpExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5707 | 5703 | }, |
| 5708 | 5704 | .BangEqual => { |
| 5709 | 5705 | op_token = try appendToken(c, .BangEqual, "!="); |
| 5710 | | op_id = .BangEqual; |
| 5706 | op_id = .BangEqual; |
| 5711 | 5707 | }, |
| 5712 | 5708 | .EqualEqual => { |
| 5713 | 5709 | op_token = try appendToken(c, .EqualEqual, "=="); |
| ... | ... | @@ -5760,25 +5756,12 @@ fn parseCPrefixOpExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8, |
| 5760 | 5756 | return &node.base; |
| 5761 | 5757 | }, |
| 5762 | 5758 | .Asterisk => { |
| 5763 | | // deref is often used together with casts so we group the lhs expression |
| 5764 | | const group = try c.a().create(ast.Node.GroupedExpression); |
| 5765 | | group.* = .{ |
| 5766 | | .lparen = try appendToken(c, .LParen, "("), |
| 5767 | | .expr = try parseCPrefixOpExpr(c, it, source, source_loc, scope), |
| 5768 | | .rparen = try appendToken(c, .RParen, ")"), |
| 5769 | | }; |
| 5770 | | return try transCreateNodePtrDeref(c, &group.base); |
| 5759 | const node = try parseCPrefixOpExpr(c, it, source, source_loc, scope); |
| 5760 | return try transCreateNodePtrDeref(c, node); |
| 5771 | 5761 | }, |
| 5772 | 5762 | .Ampersand => { |
| 5773 | | // address of is often used together with casts so we group the rhs expression |
| 5774 | 5763 | const node = try transCreateNodePrefixOp(c, .AddressOf, .Ampersand, "&"); |
| 5775 | | const group = try c.a().create(ast.Node.GroupedExpression); |
| 5776 | | group.* = .{ |
| 5777 | | .lparen = try appendToken(c, .LParen, "("), |
| 5778 | | .expr = try parseCPrefixOpExpr(c, it, source, source_loc, scope), |
| 5779 | | .rparen = try appendToken(c, .RParen, ")"), |
| 5780 | | }; |
| 5781 | | node.rhs = &group.base; |
| 5764 | node.rhs = try parseCPrefixOpExpr(c, it, source, source_loc, scope); |
| 5782 | 5765 | return &node.base; |
| 5783 | 5766 | }, |
| 5784 | 5767 | else => { |