From 95eb44af0690f2d2570145e4dc39cdeaca85bde8 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Fri, 5 Jun 2015 15:07:59 +0300 Subject: [PATCH] gradle: IDEA-129535 IDEA marks all classes inside buildSrc with "Class already exists in " --- .../gradle/config/GradleClassFinder.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleClassFinder.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleClassFinder.java index 17c7add62437..808c2cb1f860 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleClassFinder.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/config/GradleClassFinder.java @@ -19,8 +19,13 @@ package org.jetbrains.plugins.gradle.config; import com.intellij.ide.highlighter.JavaFileType; import com.intellij.openapi.externalSystem.psi.search.ExternalModuleBuildGlobalSearchScope; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.NonClasspathClassFinder; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiFile; +import com.intellij.psi.search.EverythingGlobalScope; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -61,4 +66,20 @@ public class GradleClassFinder extends NonClasspathClassFinder { } return myBuildClasspathManager.getAllClasspathEntries(); } + + @Nullable + @Override + public Condition getClassesFilter(@NotNull final GlobalSearchScope scope) { + return new Condition() { + @Override + public boolean value(PsiClass aClass) { + if (scope instanceof ExternalModuleBuildGlobalSearchScope || scope instanceof EverythingGlobalScope) { + return true; + } + PsiFile containingFile = aClass.getContainingFile(); + VirtualFile file = containingFile != null ? containingFile.getVirtualFile() : null; + return file == null || !(ProjectFileIndex.SERVICE.getInstance(myProject).isInContent(file)); + } + }; + } } \ No newline at end of file