From 8f32c2551ded1c10fb450d006927bc3fd250fd27 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 22 Apr 2024 17:26:36 +0200 Subject: [PATCH] java: avoid duplicate deadcode reports GitOrigin-RevId: 4c9833e1adc9182906c9f0797fbeb370100f52c4 --- .../UnusedDeclarationPresentation.java | 19 ++++++++++--------- .../instantiatedInTestOnly/expected.xml | 5 ----- .../instantiatedInTestOnlyStatic/expected.xml | 6 ------ .../unusedExternalImplementation/expected.xml | 9 --------- .../unusedImplementation/expected.xml | 9 --------- 5 files changed, 10 insertions(+), 38 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java index 36773809cddd..8cf91c161ba4 100644 --- a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java +++ b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java @@ -431,18 +431,19 @@ public class UnusedDeclarationPresentation extends DefaultInspectionToolPresenta private @Nullable RefJavaElement refineElement(RefEntity refEntity) { if (!(refEntity instanceof RefJavaElement refElement)) return null; //dead code doesn't work with refModule | refPackage - if (!getFilter().accepts(refElement)) return null; - refEntity = getRefManager().getRefinedElement(refEntity); - refElement = (RefJavaElement)refEntity; - if (!refElement.isValid()) return null; - if (!compareVisibilities(refElement, getTool().getSharedLocalInspectionTool())) return null; - if (isSuppressed(refElement)) return null; + RefFilter filter = getFilter(); + if (!filter.accepts(refElement)) return null; + RefJavaElement refinedElement = (RefJavaElement)getRefManager().getRefinedElement(refEntity); + if (refinedElement != refEntity && filter.accepts(refinedElement)) return null; // prevent duplicate reporting + if (!refinedElement.isValid()) return null; + if (!compareVisibilities(refinedElement, getTool().getSharedLocalInspectionTool())) return null; + if (isSuppressed(refinedElement)) return null; if (!ApplicationManager.getApplication().isHeadlessEnvironment() & getContext().getUIOptions().FILTER_RESOLVED_ITEMS && - (myFixedElements.containsKey(refElement) || isExcluded(refEntity))) { + (myFixedElements.containsKey(refinedElement) || isExcluded(refinedElement))) { return null; } - if (skipEntryPoints(refElement)) return null; - return refElement; + if (skipEntryPoints(refinedElement)) return null; + return refinedElement; } protected boolean skipEntryPoints(RefJavaElement refElement) { diff --git a/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnly/expected.xml b/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnly/expected.xml index 6cb752c54514..0e35c50c8afd 100644 --- a/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnly/expected.xml +++ b/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnly/expected.xml @@ -19,11 +19,6 @@ 4 Class has one instantiation, but it is not reachable from entry points. - - Test.java - 1 - Class has one instantiation but it is not reachable from entry points. - Test.java 2 diff --git a/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnlyStatic/expected.xml b/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnlyStatic/expected.xml index 284e602a8185..0ebc3326cd82 100644 --- a/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnlyStatic/expected.xml +++ b/java/java-tests/testData/inspection/deadCode/instantiatedInTestOnlyStatic/expected.xml @@ -6,12 +6,6 @@ No class references has been found. Class static initializer is not reachable. - - Test.java - 1 - No class references has been found. Class static initializer is not reachable. - - Test.java 2 diff --git a/java/java-tests/testData/inspection/unusedServiceImplementations/unusedExternalImplementation/expected.xml b/java/java-tests/testData/inspection/unusedServiceImplementations/unusedExternalImplementation/expected.xml index 07e39458ded6..6c315feb6601 100644 --- a/java/java-tests/testData/inspection/unusedServiceImplementations/unusedExternalImplementation/expected.xml +++ b/java/java-tests/testData/inspection/unusedServiceImplementations/unusedExternalImplementation/expected.xml @@ -9,15 +9,6 @@ Class has one instantiation but it is not reachable from entry points. - - MyServiceExt.java - 4 - my.ext - - unused declaration - Class has one instantiation but it is not reachable from entry points. - - MyService.java 1 diff --git a/java/java-tests/testData/inspection/unusedServiceImplementations/unusedImplementation/expected.xml b/java/java-tests/testData/inspection/unusedServiceImplementations/unusedImplementation/expected.xml index c01808e2552f..fdb6f1725e4e 100644 --- a/java/java-tests/testData/inspection/unusedServiceImplementations/unusedImplementation/expected.xml +++ b/java/java-tests/testData/inspection/unusedServiceImplementations/unusedImplementation/expected.xml @@ -9,15 +9,6 @@ Class has one instantiation but it is not reachable from entry points. - - MyServiceImpl.java - 4 - my.impl - - unused declaration - Class has one instantiation but it is not reachable from entry points. - - MyService.java 1