following IDEA-CR-5506: process ''+" priority operations the same way

This commit is contained in:
Anna Kozlova
2015-10-05 22:18:34 +02:00
parent 9e5da70d34
commit 5f788d7c13
@@ -25,6 +25,7 @@ import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.search.LocalSearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.RedundantCastUtil;
import com.intellij.psi.util.TypeConversionUtil;
@@ -55,14 +56,15 @@ public class InlineUtil {
boolean insertCastWhenUnchecked = parent instanceof PsiForeachStatement;
final PsiType varType = variable.getType();
initializer = RefactoringUtil.convertInitializerToNormalExpression(initializer, varType);
if (initializer instanceof PsiPolyadicExpression &&
((PsiPolyadicExpression)initializer).getOperationTokenType() == JavaTokenType.PLUS &&
parent instanceof PsiPolyadicExpression &&
((PsiPolyadicExpression)parent).getOperationTokenType() == JavaTokenType.PLUS) {
final PsiType type = ((PsiPolyadicExpression)parent).getType();
if (type != null && (type.equalsToText(CommonClassNames.JAVA_LANG_STRING) ^ varType.equalsToText(CommonClassNames.JAVA_LANG_STRING))) {
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(initializer.getProject());
initializer = factory.createExpressionFromText("(" + initializer.getText() + ")", initializer);
if (initializer instanceof PsiPolyadicExpression) {
final IElementType operationTokenType = ((PsiPolyadicExpression)initializer).getOperationTokenType();
if ((operationTokenType == JavaTokenType.PLUS || operationTokenType == JavaTokenType.MINUS) &&
parent instanceof PsiPolyadicExpression && ((PsiPolyadicExpression)parent).getOperationTokenType() == JavaTokenType.PLUS) {
final PsiType type = ((PsiPolyadicExpression)parent).getType();
if (type != null && type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) {
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(initializer.getProject());
initializer = factory.createExpressionFromText("(" + initializer.getText() + ")", initializer);
}
}
}
solveVariableNameConflicts(initializer, ref, initializer);