From cea1d3ab7167b4bf9f26eefd1e3f43bd904c7e9e Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 6 Feb 2012 10:49:40 +0100 Subject: [PATCH 1/3] IRV: IDEA-80843 removal entries removes more than you expect --- .../ex/DescriptorProviderInspection.java | 19 +++++++++++++++++++ .../ui/ProblemDescriptionNode.java | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ex/DescriptorProviderInspection.java b/platform/lang-impl/src/com/intellij/codeInspection/ex/DescriptorProviderInspection.java index 2d8d5ec100a3..6503e871fc90 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ex/DescriptorProviderInspection.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ex/DescriptorProviderInspection.java @@ -187,6 +187,14 @@ public abstract class DescriptorProviderInspection extends InspectionTool implem getIgnoredElements().put(refEntity, problemDescriptors); } + public void ignoreCurrentElementProblem(RefEntity refEntity, CommonProblemDescriptor descriptor) { + CommonProblemDescriptor[] descriptors = getIgnoredElements().get(refEntity); + if (descriptors == null) { + descriptors = new CommonProblemDescriptor[0]; + } + getIgnoredElements().put(refEntity, ArrayUtil.append(descriptors, descriptor)); + } + private static boolean isIgnoreProblem(QuickFix[] problemFixes, Set fixes, int idx){ if (problemFixes == null || fixes == null) { return true; @@ -451,6 +459,17 @@ public abstract class DescriptorProviderInspection extends InspectionTool implem return false; } + public boolean isProblemResolved(RefEntity refEntity, CommonProblemDescriptor descriptor) { + if (getIgnoredElements() == null) return false; + for (RefEntity entity : getIgnoredElements().keySet()) { + if (Comparing.equal(entity, refEntity)) { + final CommonProblemDescriptor[] descriptors = getIgnoredElements().get(refEntity); + return ArrayUtil.contains(descriptor, descriptors); + } + } + return false; + } + public FileStatus getProblemStatus(final CommonProblemDescriptor descriptor) { final GlobalInspectionContextImpl context = getContext(); if (context != null && context.getUIOptions().SHOW_DIFF_WITH_PREVIOUS_RUN){ diff --git a/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java b/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java index 2610ab6d0fb5..b92dab9a6384 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/ui/ProblemDescriptionNode.java @@ -95,11 +95,11 @@ public class ProblemDescriptionNode extends InspectionTreeNode { public boolean isResolved() { - return myElement instanceof RefElement && myTool.isElementIgnored(myElement); + return myElement instanceof RefElement && myTool.isProblemResolved(myElement, getDescriptor()); } public void ignoreElement() { - myTool.ignoreCurrentElement(getElement()); + myTool.ignoreCurrentElementProblem(getElement(), getDescriptor()); } public void amnesty() { From 1208dff07a4269d2fd06d2d159b4d4ae6e9219a0 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 6 Feb 2012 11:00:51 +0100 Subject: [PATCH 2/3] EA-33492 - IAE: AnnotationUtil.isAnnotated --- .../intellij/codeInspection/ex/EntryPointsManagerImpl.java | 2 +- .../unusedParameters/UnusedParametersInspection.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java b/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java index c1d316ff0914..0b0c60e7395d 100644 --- a/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java +++ b/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java @@ -432,7 +432,7 @@ public class EntryPointsManagerImpl implements PersistentStateComponent myAddNonJavaEntries = addNonJavaEntries; } - public boolean isEntryPoint(PsiModifierListOwner element) { + public boolean isEntryPoint(@NotNull PsiModifierListOwner element) { return AnnotationUtil.isAnnotated(element, ADDITIONAL_ANNOTATIONS) || AnnotationUtil.isAnnotated(element, getAdditionalAnnotations()); } diff --git a/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java b/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java index aed39b1e7802..2e32ea1a744d 100644 --- a/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java @@ -74,7 +74,9 @@ public class UnusedParametersInspection extends GlobalJavaInspectionTool { if ((refMethod.isAbstract() || refMethod.getOwnerClass().isInterface()) && refMethod.getDerivedMethods().isEmpty()) return null; if (RefUtil.isEntryPoint(refMethod)) return null; - if (EntryPointsManagerImpl.getInstance(manager.getProject()).isEntryPoint(refMethod.getElement())) return null; + + final PsiModifierListOwner element = refMethod.getElement(); + if (element != null && EntryPointsManagerImpl.getInstance(manager.getProject()).isEntryPoint(element)) return null; if (refMethod.isAppMain()) return null; From cf0954606186683d1c7fe4e544568b4dd3c075b2 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 6 Feb 2012 11:34:43 +0100 Subject: [PATCH 3/3] accept qualified package names --- .../extractSuperclass/JavaExtractSuperBaseDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java index 2e9b83218969..674b6b16fe65 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/JavaExtractSuperBaseDialog.java @@ -125,7 +125,7 @@ public abstract class JavaExtractSuperBaseDialog extends ExtractSuperBaseDialog< protected void preparePackage() throws OperationFailedException { final String targetPackageName = getTargetPackageName(); final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject); - if (!psiFacade.getNameHelper().isIdentifier(targetPackageName)) { + if (!psiFacade.getNameHelper().isQualifiedName(targetPackageName)) { throw new OperationFailedException("Invalid package name: " + targetPackageName); } final PsiPackage aPackage = psiFacade.findPackage(targetPackageName);