| ... | @@ -1294,36 +1294,21 @@ fn transBinaryOperator( | ... | @@ -1294,36 +1294,21 @@ fn transBinaryOperator( |
| 1294 | | 1294 | |
| 1295 | const rhs_node = try transExpr(rp, scope, ZigClangBinaryOperator_getRHS(stmt), .used, .r_value); | 1295 | const rhs_node = try transExpr(rp, scope, ZigClangBinaryOperator_getRHS(stmt), .used, .r_value); |
| 1296 | | 1296 | |
| 1297 | const is_lhs_bool = isBoolRes(lhs_node); | 1297 | const lhs = if (isBoolRes(lhs_node)) init: { |
| 1298 | const is_rhs_bool = isBoolRes(rhs_node); | | |
| 1299 | | | |
| 1300 | if (!is_lhs_bool and !is_rhs_bool) { | | |
| 1301 | return transCreateNodeInfixOp(rp, scope, lhs_node, op_id, op_token, rhs_node, result_used, true); | | |
| 1302 | } | | |
| 1303 | | | |
| 1304 | const lhs = if (is_lhs_bool) init: { | | |
| 1305 | const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@boolToInt"); | 1298 | const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@boolToInt"); |
| 1306 | try cast_node.params.push(lhs_node); | 1299 | try cast_node.params.push(lhs_node); |
| 1307 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); | 1300 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); |
| 1308 | break :init &cast_node.base; | 1301 | break :init &cast_node.base; |
| 1309 | } else lhs_node; | 1302 | } else lhs_node; |
| 1310 | | 1303 | |
| 1311 | const rhs = if (is_rhs_bool) init: { | 1304 | const rhs = if (isBoolRes(rhs_node)) init: { |
| 1312 | const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@boolToInt"); | 1305 | const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@boolToInt"); |
| 1313 | try cast_node.params.push(rhs_node); | 1306 | try cast_node.params.push(rhs_node); |
| 1314 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); | 1307 | cast_node.rparen_token = try appendToken(rp.c, .RParen, ")"); |
| 1315 | break :init &cast_node.base; | 1308 | break :init &cast_node.base; |
| 1316 | } else rhs_node; | 1309 | } else rhs_node; |
| 1317 | | 1310 | |
| 1318 | const node = try rp.c.a().create(ast.Node.InfixOp); | 1311 | return transCreateNodeInfixOp(rp, scope, lhs, op_id, op_token, rhs, result_used, true); |
| 1319 | | | |
| 1320 | node.* = .{ | | |
| 1321 | .op_token = op_token, | | |
| 1322 | .lhs = lhs, | | |
| 1323 | .op = op_id, | | |
| 1324 | .rhs = rhs, | | |
| 1325 | }; | | |
| 1326 | return maybeSuppressResult(rp, scope, result_used, &node.base); | | |
| 1327 | } | 1312 | } |
| 1328 | | 1313 | |
| 1329 | fn transCompoundStmtInline( | 1314 | fn transCompoundStmtInline( |