From f32b1c91d78c7df607a2721ede67f68071dd5b93 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 24 Nov 2017 19:01:26 +0300 Subject: [PATCH] removed unnecessary startElement.isValid() checks from overriders because LocalQuickFixOnPsiElement.isAvailable() is guaranteed to be called with valid elements --- .../codeInsight/daemon/impl/quickfix/AddTypeCastFix.java | 1 - .../codeInsight/daemon/impl/quickfix/ExtendsListFix.java | 3 +-- .../daemon/impl/quickfix/VariableArrayTypeFix.java | 3 +-- .../impl/quickfix/WrapObjectWithOptionalOfNullableFix.java | 4 +--- .../daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java | 1 - .../nullable/AnnotateOverriddenMethodParameterFix.java | 2 +- .../codeInsight/daemon/impl/quickfix/AddMethodFix.java | 1 - .../codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java | 3 +-- .../daemon/impl/quickfix/MakeClassInterfaceFix.java | 2 +- .../codeInsight/daemon/impl/quickfix/MethodParameterFix.java | 3 +-- .../codeInsight/daemon/impl/quickfix/MethodReturnTypeFix.java | 3 +-- .../codeInsight/daemon/impl/quickfix/ModifierFix.java | 3 +-- .../daemon/impl/quickfix/MoveBoundClassToFrontFix.java | 3 +-- .../codeInsight/daemon/impl/quickfix/PullAsAbstractUpFix.java | 2 +- .../daemon/impl/quickfix/RemoveTypeArgumentsFix.java | 2 +- .../daemon/impl/quickfix/RemoveUnusedParameterFix.java | 3 +-- .../codeInsight/daemon/impl/quickfix/VariableTypeFix.java | 3 +-- .../intellij/codeInspection/LocalQuickFixOnPsiElement.java | 3 +-- .../codeInsight/daemon/impl/quickfix/RenameElementFix.java | 2 +- .../validation/inspections/quickfix/XPathQuickFixFactory.java | 2 +- 20 files changed, 17 insertions(+), 32 deletions(-) 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 b46182847ce9..e2f8cce3cee8 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 @@ -59,7 +59,6 @@ public class AddTypeCastFix extends LocalQuickFixAndIntentionActionOnPsiElement @NotNull PsiElement endElement) { return myType.isValid() && PsiTypesUtil.isDenotableType(myType) && - startElement.isValid() && startElement.getManager().isInProject(startElement); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java index de17307fe543..b800d4543b09 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java @@ -85,8 +85,7 @@ public class ExtendsListFix extends LocalQuickFixAndIntentionActionOnPsiElement @NotNull PsiElement endElement) { final PsiClass myClass = (PsiClass)startElement; return - myClass.isValid() - && myClass.getManager().isInProject(myClass) + myClass.getManager().isInProject(myClass) && myClassToExtendFrom != null && myClassToExtendFrom.isValid() && !myClassToExtendFrom.hasModifierProperty(PsiModifier.FINAL) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableArrayTypeFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableArrayTypeFix.java index 04f19ff9d482..faee602bb6dd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableArrayTypeFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableArrayTypeFix.java @@ -158,8 +158,7 @@ public class VariableArrayTypeFix extends LocalQuickFixOnPsiElement { return myVariable != null && myVariable.isValid() && myVariable.getManager().isInProject(myVariable) - && myTargetType.isValid() - && myInitializer.isValid(); + && myTargetType.isValid(); } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapObjectWithOptionalOfNullableFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapObjectWithOptionalOfNullableFix.java index 51c4db9450d1..a13465dcd2e4 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapObjectWithOptionalOfNullableFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapObjectWithOptionalOfNullableFix.java @@ -21,7 +21,6 @@ import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement; import com.intellij.codeInspection.dataFlow.DfaPsiUtil; import com.intellij.codeInspection.dataFlow.Nullness; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; @@ -91,8 +90,7 @@ public class WrapObjectWithOptionalOfNullableFix extends MethodArgumentFix imple @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - return startElement.isValid() && - startElement.getManager().isInProject(startElement) && + return startElement.getManager().isInProject(startElement) && PsiUtil.isLanguageLevel8OrHigher(startElement) && areConvertible(((PsiExpression) startElement).getType(), type); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java index d37247be06b3..a0710b158efd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/WrapWithAdapterMethodCallFix.java @@ -168,7 +168,6 @@ public class WrapWithAdapterMethodCallFix extends LocalQuickFixAndIntentionActio return myType != null && myWrapper != null && myType.isValid() && - startElement.isValid() && startElement.getManager().isInProject(startElement); } diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/AnnotateOverriddenMethodParameterFix.java b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/AnnotateOverriddenMethodParameterFix.java index e8f1fec0fc2e..91a600190557 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/AnnotateOverriddenMethodParameterFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/nullable/AnnotateOverriddenMethodParameterFix.java @@ -87,7 +87,7 @@ class AnnotateOverriddenMethodParameterFix implements LocalQuickFix { if (AnnotationUtil.isAnnotatingApplicable(psiParam, myAnnotation)) { AddAnnotationPsiFix fix = new AddAnnotationPsiFix(myAnnotation, psiParam, PsiNameValuePair.EMPTY_ARRAY, myAnnosToRemove); PsiFile containingFile = psiParam.getContainingFile(); - if (fix.isAvailable(project, containingFile, psiParam, psiParam)) { + if (psiParam.isValid() && fix.isAvailable(project, containingFile, psiParam, psiParam)) { fix.invoke(project, containingFile, psiParam, psiParam); } } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodFix.java index 7d6a5dcbb22f..226f58263aee 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddMethodFix.java @@ -96,7 +96,6 @@ public class AddMethodFix extends LocalQuickFixAndIntentionActionOnPsiElement { final PsiClass myClass = (PsiClass)startElement; return myMethodPrototype.isValid() && - myClass.isValid() && myClass.getManager().isInProject(myClass) && myText != null && MethodSignatureUtil.findMethodBySignature(myClass, myMethodPrototype, false) == null diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java index 7950fd4eba0f..3782f3d581cd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ImplementMethodsFix.java @@ -62,8 +62,7 @@ public class ImplementMethodsFix extends LocalQuickFixAndIntentionActionOnPsiEle @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - PsiElement myPsiElement = startElement; - return myPsiElement.isValid() && myPsiElement.getManager().isInProject(myPsiElement); + return startElement.getManager().isInProject(startElement); } @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MakeClassInterfaceFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MakeClassInterfaceFix.java index 57e9afaa3dcc..dccfa9a18d99 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MakeClassInterfaceFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MakeClassInterfaceFix.java @@ -58,7 +58,7 @@ public class MakeClassInterfaceFix extends LocalQuickFixAndIntentionActionOnPsiE @NotNull PsiElement endElement) { final PsiClass myClass = (PsiClass)startElement; - return myClass.isValid() && myClass.getManager().isInProject(myClass); + return myClass.getManager().isInProject(myClass); } @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodParameterFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodParameterFix.java index abf0865bce82..05ee1f18619b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodParameterFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodParameterFix.java @@ -74,8 +74,7 @@ public class MethodParameterFix extends LocalQuickFixAndIntentionActionOnPsiElem @NotNull PsiElement startElement, @NotNull PsiElement endElement) { final PsiMethod myMethod = (PsiMethod)startElement; - return myMethod.isValid() - && myMethod.getManager().isInProject(myMethod) + return myMethod.getManager().isInProject(myMethod) && myParameterType != null && !TypeConversionUtil.isNullType(myParameterType) && myMethod.getReturnType() != null diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodReturnTypeFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodReturnTypeFix.java index 243cbde2e4b3..e4ece3e50a7d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodReturnTypeFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodReturnTypeFix.java @@ -75,8 +75,7 @@ public class MethodReturnTypeFix extends LocalQuickFixAndIntentionActionOnPsiEle final PsiMethod myMethod = (PsiMethod)startElement; final PsiType myReturnType = myReturnTypePointer.getType(); - if (myMethod.isValid() && - myMethod.getManager().isInProject(myMethod) && + if (myMethod.getManager().isInProject(myMethod) && myReturnType != null && myReturnType.isValid() && !TypeConversionUtil.isNullType(myReturnType)) { 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 614233e13fdc..85b3c6c32e6e 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 @@ -119,8 +119,7 @@ public class ModifierFix extends LocalQuickFixAndIntentionActionOnPsiElement { @NotNull PsiElement endElement) { final PsiModifierList myModifierList = (PsiModifierList)startElement; PsiVariable variable = myVariable == null ? null : myVariable.getElement(); - return myModifierList.isValid() && - myModifierList.getManager().isInProject(myModifierList) && + return myModifierList.getManager().isInProject(myModifierList) && myModifierList.hasExplicitModifier(myModifier) != myShouldHave && (variable == null || variable.isValid()); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveBoundClassToFrontFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveBoundClassToFrontFix.java index 1f2d7bcb61d5..a6e9db59ecd8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveBoundClassToFrontFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MoveBoundClassToFrontFix.java @@ -75,8 +75,7 @@ public class MoveBoundClassToFrontFix extends ExtendsListFix { @NotNull PsiElement endElement) { final PsiClass myClass = (PsiClass)startElement; return - myClass.isValid() - && myClass.getManager().isInProject(myClass) + myClass.getManager().isInProject(myClass) && myClassToExtendFrom != null && myClassToExtendFrom.isValid() ; diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/PullAsAbstractUpFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/PullAsAbstractUpFix.java index 3246f207909a..1660ff5fdbbc 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/PullAsAbstractUpFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/PullAsAbstractUpFix.java @@ -63,7 +63,7 @@ public class PullAsAbstractUpFix extends LocalQuickFixAndIntentionActionOnPsiEle @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - return startElement instanceof PsiMethod && startElement.isValid() && ((PsiMethod)startElement).getContainingClass() != null; + return startElement instanceof PsiMethod && ((PsiMethod)startElement).getContainingClass() != null; } @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveTypeArgumentsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveTypeArgumentsFix.java index d9e0b3735628..4c0c8b741a94 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveTypeArgumentsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveTypeArgumentsFix.java @@ -48,7 +48,7 @@ public class RemoveTypeArgumentsFix extends LocalQuickFixAndIntentionActionOnPsi @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - return startElement instanceof PsiVariable && startElement.isValid() && ((PsiVariable)startElement).getTypeElement() != null; + return startElement instanceof PsiVariable && ((PsiVariable)startElement).getTypeElement() != null; } @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveUnusedParameterFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveUnusedParameterFix.java index 4d6b9ea32532..43df9b5f6dd1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveUnusedParameterFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RemoveUnusedParameterFix.java @@ -61,8 +61,7 @@ public class RemoveUnusedParameterFix extends LocalQuickFixAndIntentionActionOnP @NotNull PsiElement endElement) { final PsiParameter myParameter = (PsiParameter)startElement; return - myParameter.isValid() - && myParameter.getDeclarationScope() instanceof PsiMethod + myParameter.getDeclarationScope() instanceof PsiMethod && myParameter.getManager().isInProject(myParameter); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFix.java index 7f0ae4f465fa..64cf567fa1e9 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/VariableTypeFix.java @@ -77,8 +77,7 @@ public class VariableTypeFix extends LocalQuickFixAndIntentionActionOnPsiElement @NotNull PsiElement startElement, @NotNull PsiElement endElement) { final PsiVariable myVariable = (PsiVariable)startElement; - return myVariable.isValid() - && myVariable.getTypeElement() != null + return myVariable.getTypeElement() != null && myVariable.getManager().isInProject(myVariable) && getReturnType() != null && !LambdaUtil.notInferredType(getReturnType()) diff --git a/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java b/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java index 404dc235f3ae..750e74119e46 100644 --- a/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java +++ b/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java @@ -55,6 +55,7 @@ public abstract class LocalQuickFixOnPsiElement implements LocalQuickFix { return getText(); } + // validity of startElement/endElement must be checked before calling this public boolean isAvailable(@NotNull Project project, @NotNull PsiFile file, @NotNull PsiElement startElement, @@ -70,8 +71,6 @@ public abstract class LocalQuickFixOnPsiElement implements LocalQuickFix { Project project = myStartElement.getProject(); return startElement != null && endElement != null && - startElement.isValid() && - (endElement == startElement || endElement.isValid()) && file != null && isAvailable(project, file, startElement, endElement); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameElementFix.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameElementFix.java index ee4343dd4030..b685693f3fcc 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameElementFix.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameElementFix.java @@ -84,7 +84,7 @@ public class RenameElementFix extends LocalQuickFixAndIntentionActionOnPsiElemen @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - return startElement.isValid() && RenameUtil.isValidName(project, startElement, myNewName); + return RenameUtil.isValidName(project, startElement, myNewName); } @Override diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/validation/inspections/quickfix/XPathQuickFixFactory.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/validation/inspections/quickfix/XPathQuickFixFactory.java index a4e6cbf0e468..777424b36341 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/validation/inspections/quickfix/XPathQuickFixFactory.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/validation/inspections/quickfix/XPathQuickFixFactory.java @@ -51,7 +51,7 @@ public interface XPathQuickFixFactory { @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { - return startElement.isValid() && startElement.getParent().isValid(); + return startElement.getParent().isValid(); } @Override