From 7725214e6b86434cafe55665c3c25f007542a3d0 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 9 Mar 2011 12:59:08 +0300 Subject: [PATCH] made getText() work even for invalid action --- .../impl/quickfix/ChangeMethodSignatureFromUsageFix.java | 1 + .../daemon/impl/quickfix/GeneralizeCatchFix.java | 2 +- .../codeInsight/daemon/impl/quickfix/ModifierFix.java | 5 +++-- .../impl/quickfix/ReplaceAddAllArrayToCollectionFix.java | 8 +++----- .../daemon/impl/quickfix/StaticImportMethodFix.java | 9 ++++++--- .../impl/quickfix/VariableAccessFromInnerClassFix.java | 1 - .../daemon/impl/quickfix/WrapExpressionFix.java | 6 +++--- .../codeInsight/intention/impl/BaseIntentionAction.java | 5 +++++ 8 files changed, 22 insertions(+), 15 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java index 04543c0dc731..c446d083b469 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ChangeMethodSignatureFromUsageFix.java @@ -91,6 +91,7 @@ public class ChangeMethodSignatureFromUsageFix implements IntentionAction { } private static String formatTypesList(ParameterInfoImpl[] infos, PsiElement context) { + if (infos == null) return null; String result = ""; try { for (ParameterInfoImpl info : infos) { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/GeneralizeCatchFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/GeneralizeCatchFix.java index 33953721c035..78300d1bcf5b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/GeneralizeCatchFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/GeneralizeCatchFix.java @@ -40,7 +40,7 @@ public class GeneralizeCatchFix implements IntentionAction { @NotNull public String getText() { return QuickFixBundle.message("generalize.catch.text", - HighlightUtil.formatType(myCatchParameter.getType()), + HighlightUtil.formatType(myCatchParameter == null ? null : myCatchParameter.getType()), HighlightUtil.formatType(myUnhandledException)); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java index df081d7e7cb0..06b80346c053 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ModifierFix.java @@ -30,6 +30,7 @@ import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.search.PsiElementProcessorAdapter; import com.intellij.psi.search.searches.OverridingMethodsSearch; import com.intellij.psi.util.PsiFormatUtil; +import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.psi.util.PsiUtil; import com.intellij.util.VisibilityUtil; import com.intellij.util.IncorrectOperationException; @@ -65,12 +66,12 @@ public class ModifierFix extends IntentionAndQuickFixAction { @NotNull public String getName() { String name = null; - PsiElement parent = myVariable == null ? myModifierList.getParent() : myVariable; + PsiElement parent = myVariable == null ? myModifierList == null ? null : myModifierList.getParent() : myVariable; if (parent instanceof PsiClass) { name = ((PsiClass)parent).getName(); } else { - int options = PsiFormatUtil.SHOW_NAME | (myShowContainingClass ? PsiFormatUtil.SHOW_CONTAINING_CLASS : 0); + int options = PsiFormatUtilBase.SHOW_NAME | (myShowContainingClass ? PsiFormatUtilBase.SHOW_CONTAINING_CLASS : 0); if (parent instanceof PsiMethod) { name = PsiFormatUtil.formatMethod((PsiMethod)parent, PsiSubstitutor.EMPTY, options, 0); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceAddAllArrayToCollectionFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceAddAllArrayToCollectionFix.java index 96804cdc70dc..009754d48537 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceAddAllArrayToCollectionFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplaceAddAllArrayToCollectionFix.java @@ -101,15 +101,13 @@ public class ReplaceAddAllArrayToCollectionFix implements IntentionAction { @NonNls private String getCollectionsMethodCall() { final PsiExpression qualifierExpression = myMethodCall.getMethodExpression().getQualifierExpression(); + PsiExpression[] expressions = myMethodCall.getArgumentList().getExpressions(); return "java.util.Collections.addAll(" + (qualifierExpression != null ? qualifierExpression.getText() : "this") + - ", " + - myMethodCall.getArgumentList().getExpressions()[0] - .getText() + - ")"; + ", " + (expressions.length == 0 ? "" : expressions[0].getText()) + ")"; } public boolean startInWriteAction() { return true; } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java index cc5d211ae100..cc2a3d8a1a9d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/StaticImportMethodFix.java @@ -35,6 +35,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiShortNamesCache; import com.intellij.psi.util.PsiFormatUtil; +import com.intellij.psi.util.PsiFormatUtilBase; import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.proximity.PsiProximityComparator; import com.intellij.ui.popup.list.ListPopupImpl; @@ -62,8 +63,10 @@ public class StaticImportMethodFix implements IntentionAction { @NotNull public String getText() { String text = QuickFixBundle.message("static.import.method.text"); - if (candidates.size() == 1) { - text += " '" + PsiFormatUtil.formatMethod(candidates.get(0), PsiSubstitutor.EMPTY, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_CONTAINING_CLASS | PsiFormatUtil.SHOW_FQ_NAME, 0)+"'"; + if (candidates != null && candidates.size() == 1) { + text += " '" + PsiFormatUtil.formatMethod(candidates.get(0), PsiSubstitutor.EMPTY, PsiFormatUtilBase.SHOW_NAME | + PsiFormatUtilBase.SHOW_CONTAINING_CLASS | + PsiFormatUtilBase.SHOW_FQ_NAME, 0)+"'"; } else { text += "..."; @@ -243,7 +246,7 @@ public class StaticImportMethodFix implements IntentionAction { final PopupListElementRenderer rightArrow = new PopupListElementRenderer(this); @Override protected ListCellRenderer getListElementRenderer() { - return new MethodCellRenderer(true, PsiFormatUtil.SHOW_NAME){ + return new MethodCellRenderer(true, PsiFormatUtilBase.SHOW_NAME){ @Override protected DefaultListCellRenderer getRightCellRenderer() { final DefaultListCellRenderer moduleRenderer = super.getRightCellRenderer(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassFix.java index 56b34711ed8b..ddc5e9fb58db 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableAccessFromInnerClassFix.java @@ -70,7 +70,6 @@ public class VariableAccessFromInnerClassFix implements IntentionAction { case COPY_TO_FINAL: return QuickFixBundle.message("make.final.copy.to.temp", myVariable.getName()); default: - LOG.error("invalid type "+myFixType); return ""; } Collection vars = getVariablesToFix(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapExpressionFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapExpressionFix.java index d4c85df105fb..ff3112b69525 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapExpressionFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapExpressionFix.java @@ -56,13 +56,13 @@ public class WrapExpressionFix implements IntentionAction { @NotNull public String getText() { - final PsiMethod wrapper = myExpression.isValid() ? findWrapper(myExpression.getType(), myExpectedType, myPrimitiveExpected) : null; - final String methodPresentation = wrapper != null ? (wrapper.getContainingClass().getName() + "." + wrapper.getName()) : ""; + final PsiMethod wrapper = myExpression.isValid() && myExpectedType != null ? findWrapper(myExpression.getType(), myExpectedType, myPrimitiveExpected) : null; + final String methodPresentation = wrapper != null ? wrapper.getContainingClass().getName() + "." + wrapper.getName() : ""; return QuickFixBundle.message("wrap.expression.using.static.accessor.text", methodPresentation); } @Nullable - private static PsiMethod findWrapper(PsiType type, PsiClassType expectedType, boolean primitiveExpected) { + private static PsiMethod findWrapper(PsiType type, @NotNull PsiClassType expectedType, boolean primitiveExpected) { PsiClass aClass = expectedType.resolve(); if (aClass != null) { PsiType expectedReturnType = expectedType; diff --git a/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java b/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java index 98c1d0e23d12..31c89570a388 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java +++ b/platform/lang-api/src/com/intellij/codeInsight/intention/impl/BaseIntentionAction.java @@ -37,4 +37,9 @@ public abstract class BaseIntentionAction implements IntentionAction { public boolean startInWriteAction() { return true; } + + @Override + public String toString() { + return getText(); + } }