Bug 120389 [quick fix] replace conditional with if-else removes + from +=
Using Build I20051102-1600. I create a class [snip] package bla; class Bla { void bla() { boolean cond = true; int i = 42; i += ( cond ) ? 1 : 2; } } [snap] Now I move the cursor over the second cond and trigger the Quickfix 'Replace conditional with if-else'. This results in [snip] int i = 42; if (cond) i = 1; else i = 2; [snap] i.e. replaces the '+=' with '='. (Credit to Jordi Boehme for finding this.)
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java
if (parenthesizedExpression.getParent() instanceof Expression) {
						Expression parentExpression= (Expression) parenthesizedExpression.getParent();
						int expressionPrecedence= getExpressionPrecedence(expression);
						int parentPrecedence= getExpressionPrecedence(parentExpression);
						if ((expressionPrecedence > parentPrecedence)
							&& !(parenthesizedExpression.getParent() instanceof ParenthesizedExpression)) {
							return;
						}
						
						if ((expressionPrecedence == parentPrecedence) && (parentExpression instanceof InfixExpression)) {
							InfixExpression parentInfix= (InfixExpression) parentExpression;
							Operator parentOperator= parentInfix.getOperator();
							
							if (parentOperator == InfixExpression.Operator.PLUS) {
								if (isStringExpression(parentInfix.getLeftOperand())
									|| isStringExpression(parentInfix.getRightOperand())) {
									return;
								}
								for (Iterator J= parentInfix.extendedOperands().iterator(); J.hasNext();) {
									Expression operand= (Expression) J.next();
									if (isStringExpression(operand)) {
										return;
									}
								}
							}
							
							if ((parentOperator == InfixExpression.Operator.DIVIDE)
								|| (parentOperator == InfixExpression.Operator.REMAINDER)
								|| parentOperator == InfixExpression.Operator.MINUS) {