diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeCastFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeCastFix.java index a5104f1deb51..2721decd4281 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeCastFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeCastFix.java @@ -81,14 +81,14 @@ public class AddTypeCastFix extends LocalQuickFixAndIntentionActionOnPsiElement originalExpression.replace(typeCast); } - static PsiExpression createCastExpression(PsiExpression originalExpression, Project project, PsiType type) { + static PsiExpression createCastExpression(PsiExpression original, Project project, PsiType type) { // remove nested casts - PsiElement expression = PsiUtil.deparenthesizeExpression(originalExpression); + PsiElement expression = PsiUtil.deparenthesizeExpression(original); if (expression == null) return null; - PsiElementFactory factory = JavaPsiFacade.getInstance(originalExpression.getProject()).getElementFactory(); - PsiTypeCastExpression typeCast = (PsiTypeCastExpression)factory.createExpressionFromText("(Type)value", null); - assertNotNull(typeCast.getCastType()).replace(factory.createTypeElement(type)); + PsiElementFactory factory = JavaPsiFacade.getInstance(original.getProject()).getElementFactory(); + String text = "(" + type.getCanonicalText(false) + ")value"; + PsiTypeCastExpression typeCast = (PsiTypeCastExpression)factory.createExpressionFromText(text, original); typeCast = (PsiTypeCastExpression)CodeStyleManager.getInstance(project).reformat(typeCast); if (expression instanceof PsiConditionalExpression) { @@ -124,5 +124,4 @@ public class AddTypeCastFix extends LocalQuickFixAndIntentionActionOnPsiElement public boolean startInWriteAction() { return true; } - } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoArray.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoArray.java index 659a3bb0b844..dc9c06ca5329 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoArray.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoArray.java @@ -7,6 +7,6 @@ import static java.lang.annotation.ElementType.*; class C { { Object o = null; - @TA int @TA [] a = (@TA int @TA[]) o; + @TA int @TA [] a = (int[]) o; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoRefType.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoRefType.java index 28420d1f46ea..d1b92436866a 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoRefType.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/afterTypeAnnoRefType.java @@ -1,5 +1,6 @@ -// "Cast to 'java.lang.Integer'" "true" +// "Cast to 'java.util.List'" "true" import java.lang.annotation.*; +import java.util.*; import static java.lang.annotation.ElementType.*; @Target({TYPE_USE}) @interface TA { } @@ -7,6 +8,6 @@ import static java.lang.annotation.ElementType.*; class C { { Object o = null; - @TA Integer i = (@TA Integer) o; + @TA List<@TA Integer> i = (List) o; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/beforeTypeAnnoRefType.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/beforeTypeAnnoRefType.java index 7948738bb264..7c95d5eae896 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/beforeTypeAnnoRefType.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeCast/beforeTypeAnnoRefType.java @@ -1,5 +1,6 @@ -// "Cast to 'java.lang.Integer'" "true" +// "Cast to 'java.util.List'" "true" import java.lang.annotation.*; +import java.util.*; import static java.lang.annotation.ElementType.*; @Target({TYPE_USE}) @interface TA { } @@ -7,6 +8,6 @@ import static java.lang.annotation.ElementType.*; class C { { Object o = null; - @TA Integer i = o; + @TA List<@TA Integer> i = o; } }