IDEA-82925 ('Surround with cast' for conditional, polyadic and assignment expressions should parenthesize those expressions)

This commit is contained in:
Bas Leijdekkers
2012-03-16 13:14:21 +01:00
parent 9d2aeb18a6
commit ec1f3e7655
8 changed files with 57 additions and 6 deletions
@@ -25,9 +25,7 @@ import com.intellij.openapi.editor.RangeMarker;
import com.intellij.openapi.editor.ScrollType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiBinaryExpression;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiType;
import com.intellij.psi.*;
import com.intellij.refactoring.introduceField.ElementToWorkOn;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
@@ -45,7 +43,10 @@ class JavaWithCastSurrounder extends JavaExpressionSurrounder {
public TextRange surroundExpression(final Project project, final Editor editor, PsiExpression expr) throws IncorrectOperationException {
assert expr.isValid();
PsiType[] types = GuessManager.getInstance(project).guessTypeToCast(expr);
String exprText = expr instanceof PsiBinaryExpression ? "(" + expr.getText() + ")" : expr.getText();
final boolean parenthesesNeeded = expr instanceof PsiPolyadicExpression ||
expr instanceof PsiConditionalExpression ||
expr instanceof PsiAssignmentExpression;
String exprText = parenthesesNeeded ? "(" + expr.getText() + ")" : expr.getText();
final Template template = generateTemplate(project, exprText, types);
TextRange range;
if (expr.isPhysical()) {