From ac384331afd8512425a6e7fbe618dbfa15987a8a Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 6 Sep 2013 17:13:07 +0400 Subject: [PATCH] optimization: retrieve PsiElement when problem occurs only --- .../src/com/intellij/codeInspection/reference/RefField.java | 2 ++ .../com/intellij/codeInspection/reference/RefFieldImpl.java | 4 ++++ .../codeInspection/visibility/VisibilityInspection.java | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/java/java-analysis-api/src/com/intellij/codeInspection/reference/RefField.java b/java/java-analysis-api/src/com/intellij/codeInspection/reference/RefField.java index 4418b0feb8da..e16333e5313f 100644 --- a/java/java-analysis-api/src/com/intellij/codeInspection/reference/RefField.java +++ b/java/java-analysis-api/src/com/intellij/codeInspection/reference/RefField.java @@ -15,6 +15,7 @@ */ package com.intellij.codeInspection.reference; +import com.intellij.openapi.util.Key; import com.intellij.psi.PsiField; /** @@ -24,6 +25,7 @@ import com.intellij.psi.PsiField; * @since 6.0 */ public interface RefField extends RefJavaElement { + Key ENUM_CONSTANT = Key.create("ENUM_CONSTANT"); /** * Checks if the field is used for reading. * diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefFieldImpl.java b/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefFieldImpl.java index 35262e3e725c..b7751409f6e4 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefFieldImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/reference/RefFieldImpl.java @@ -17,6 +17,7 @@ package com.intellij.codeInspection.reference; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.util.Computable; +import com.intellij.openapi.util.Key; import com.intellij.psi.*; import com.intellij.psi.util.ClassUtil; import com.intellij.psi.util.PsiFormatUtil; @@ -43,6 +44,9 @@ public class RefFieldImpl extends RefJavaElementImpl implements RefField { setIsStatic(true); setIsFinal(true); } + if (field instanceof PsiEnumConstant) { + putUserData(ENUM_CONSTANT, true); + } } @Override diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java index d6c99829999d..1424bce6ead8 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java @@ -160,7 +160,10 @@ public class VisibilityInspection extends GlobalJavaBatchInspectionTool { //ignore implicit constructors. User should not be able to see them. if (refElement instanceof RefImplicitConstructor) return null; - if (refElement instanceof RefField && ((RefField)refElement).getElement() instanceof PsiEnumConstant) return null; + if (refElement instanceof RefField) { + final Boolean isEnumConstant = refElement.getUserData(RefField.ENUM_CONSTANT); + if (isEnumConstant != null && isEnumConstant.booleanValue()) return null; + } //ignore library override methods. if (refElement instanceof RefMethod) {