From dd4cfde102c3a19788107d275e1cf3f46e73e493 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 30 Jan 2012 19:36:21 +0100 Subject: [PATCH] take implicit usages into account (IDEA-75803) --- .../daemon/impl/PostHighlightingPass.java | 16 +++++++--------- .../local/GroovyPostHighlightingPass.java | 2 +- .../plugins/groovy/lang/psi/GrNamedElement.java | 3 ++- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java index 48b7f0ee5b25..6672bd5c45bf 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/PostHighlightingPass.java @@ -102,7 +102,7 @@ public class PostHighlightingPass extends TextEditorHighlightingPass { private final JavaCodeStyleManager myStyleManager; private int myCurrentEntryIndex; private boolean myHasMissortedImports; - private final ImplicitUsageProvider[] myImplicitUsageProviders; + private static final ImplicitUsageProvider[] ourImplicitUsageProviders = Extensions.getExtensions(ImplicitUsageProvider.EP_NAME); private UnusedDeclarationInspection myDeadCodeInspection; private UnusedSymbolLocalInspection myUnusedSymbolInspection; private HighlightDisplayKey myUnusedSymbolKey; @@ -124,8 +124,6 @@ public class PostHighlightingPass extends TextEditorHighlightingPass { myStyleManager = JavaCodeStyleManager.getInstance(myProject); myCurrentEntryIndex = -1; - - myImplicitUsageProviders = Extensions.getExtensions(ImplicitUsageProvider.EP_NAME); } @Override @@ -346,9 +344,9 @@ public class PostHighlightingPass extends TextEditorHighlightingPass { } - private boolean isImplicitUsage(final PsiModifierListOwner element, ProgressIndicator progress) { + public static boolean isImplicitUsage(final PsiModifierListOwner element, ProgressIndicator progress) { if (UnusedSymbolLocalInspection.isInjected(element)) return true; - for (ImplicitUsageProvider provider : myImplicitUsageProviders) { + for (ImplicitUsageProvider provider : ourImplicitUsageProviders) { progress.checkCanceled(); if (provider.isImplicitUsage(element)) { return true; @@ -358,8 +356,8 @@ public class PostHighlightingPass extends TextEditorHighlightingPass { return false; } - private boolean isImplicitRead(final PsiVariable element, ProgressIndicator progress) { - for(ImplicitUsageProvider provider: myImplicitUsageProviders) { + private static boolean isImplicitRead(final PsiVariable element, ProgressIndicator progress) { + for(ImplicitUsageProvider provider: ourImplicitUsageProviders) { progress.checkCanceled(); if (provider.isImplicitRead(element)) { return true; @@ -368,8 +366,8 @@ public class PostHighlightingPass extends TextEditorHighlightingPass { return UnusedSymbolLocalInspection.isInjected(element); } - private boolean isImplicitWrite(final PsiVariable element, ProgressIndicator progress) { - for(ImplicitUsageProvider provider: myImplicitUsageProviders) { + private static boolean isImplicitWrite(final PsiVariable element, ProgressIndicator progress) { + for(ImplicitUsageProvider provider: ourImplicitUsageProviders) { progress.checkCanceled(); if (provider.isImplicitWrite(element)) { return true; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/local/GroovyPostHighlightingPass.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/local/GroovyPostHighlightingPass.java index d3f3b5f40330..ea024e4cc37e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/local/GroovyPostHighlightingPass.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/local/GroovyPostHighlightingPass.java @@ -100,7 +100,7 @@ public class GroovyPostHighlightingPass extends TextEditorHighlightingPass { } } - if (deadCodeEnabled && element instanceof GrNamedElement) { + if (deadCodeEnabled && element instanceof GrNamedElement && !PostHighlightingPass.isImplicitUsage((GrNamedElement)element, progress)) { PsiElement nameId = ((GrNamedElement)element).getNameIdentifierGroovy(); String name = ((GrNamedElement)element).getName(); if (element instanceof GrTypeDefinition && PostHighlightingPass.isGloballyUnused((GrTypeDefinition)element, progress, null, name)) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GrNamedElement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GrNamedElement.java index 8159590e1e87..70275dca1303 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GrNamedElement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GrNamedElement.java @@ -16,6 +16,7 @@ package org.jetbrains.plugins.groovy.lang.psi; +import com.intellij.psi.PsiModifierListOwner; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; @@ -23,7 +24,7 @@ import org.jetbrains.annotations.NotNull; /** * @author ven */ -public interface GrNamedElement extends PsiNamedElement, GroovyPsiElement { +public interface GrNamedElement extends PsiNamedElement, GroovyPsiElement, PsiModifierListOwner { @NotNull PsiElement getNameIdentifierGroovy(); }