AbstractBaseJavaLocalInspectionTool#getProblemElement should not return PsiTypeParameter
authorDmitry Batkovich <dmitry.batkovich@jetbrains.com>
Tue, 9 Aug 2016 16:26:15 +0000 (19:26 +0300)
committerDmitry Batkovich <dmitry.batkovich@jetbrains.com>
Tue, 9 Aug 2016 16:28:58 +0000 (19:28 +0300)
java/java-analysis-api/src/com/intellij/codeInspection/AbstractBaseJavaLocalInspectionTool.java

index 7a8065b7ea135a1916311a05c8622960c63efc0e..6114ee05546efea0f59544241f08a096a078f713 100644 (file)
  */
 package com.intellij.codeInspection;
 
  */
 package com.intellij.codeInspection;
 
+import com.intellij.openapi.util.Condition;
 import com.intellij.psi.*;
 import com.intellij.psi.util.PsiTreeUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import com.intellij.psi.*;
 import com.intellij.psi.util.PsiTreeUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import static com.intellij.openapi.util.Conditions.*;
+
 public abstract class AbstractBaseJavaLocalInspectionTool extends LocalInspectionTool {
 public abstract class AbstractBaseJavaLocalInspectionTool extends LocalInspectionTool {
+  private static final Condition<PsiElement> PROBLEM_ELEMENT_CONDITION =
+    and(instanceOf(PsiFile.class, PsiClass.class, PsiMethod.class, PsiField.class), notInstanceOf(PsiTypeParameter.class));
+
   /**
    * Override this to report problems at method level.
    *
   /**
    * Override this to report problems at method level.
    *
@@ -110,6 +116,6 @@ public abstract class AbstractBaseJavaLocalInspectionTool extends LocalInspectio
 
   @Override
   public PsiNamedElement getProblemElement(final PsiElement psiElement) {
 
   @Override
   public PsiNamedElement getProblemElement(final PsiElement psiElement) {
-    return PsiTreeUtil.getNonStrictParentOfType(psiElement, PsiFile.class, PsiClass.class, PsiMethod.class, PsiField.class);
+    return (PsiNamedElement)PsiTreeUtil.findFirstParent(psiElement, PROBLEM_ELEMENT_CONDITION);
   }
 }
   }
 }