From 2be19ca01b535070ce00f1f9a7cc9dfdbffc39d2 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Wed, 26 Oct 2011 18:09:22 +0200 Subject: [PATCH] avoid compiled classes when visiting --- .../java/JavaAnonymousClassesProvider.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java index 9fb555f8d0e5..8bdcddfe876a 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java @@ -16,10 +16,7 @@ package com.intellij.lang.java; import com.intellij.navigation.AnonymousElementProvider; -import com.intellij.psi.JavaRecursiveElementWalkingVisitor; -import com.intellij.psi.PsiAnonymousClass; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; +import com.intellij.psi.*; import java.util.ArrayList; import java.util.List; @@ -31,16 +28,21 @@ public class JavaAnonymousClassesProvider implements AnonymousElementProvider { @Override public PsiElement[] getAnonymousElements(PsiElement parent) { if (parent instanceof PsiClass) { - final List elements = new ArrayList(); - new JavaRecursiveElementWalkingVisitor() { - @Override - public void visitAnonymousClass(PsiAnonymousClass aClass) { - elements.add(aClass); - } - }.visitElement(parent); + if (parent instanceof PsiCompiledElement) { + parent = parent.getNavigationElement(); + } + if (parent instanceof PsiClass && !(parent instanceof PsiCompiledElement)) { + final List elements = new ArrayList(); + new JavaRecursiveElementWalkingVisitor() { + @Override + public void visitAnonymousClass(PsiAnonymousClass aClass) { + elements.add(aClass); + } + }.visitElement(parent); - if (! elements.isEmpty()) { - return elements.toArray(new PsiElement[elements.size()]); + if (! elements.isEmpty()) { + return elements.toArray(new PsiElement[elements.size()]); + } } } return PsiElement.EMPTY_ARRAY;