diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt index a5ef9e67ebc..a448af7f259 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.idea.project.outOfBlockModificationCount import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.contains import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache @@ -353,9 +354,9 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { } private fun getFacadeToAnalyzeFiles(files: Collection): ResolutionFacade { - val notInSourceFiles = files.filterNotInProjectSource() val file = files.first() val moduleInfo = file.getModuleInfo() + val notInSourceFiles = files.filterNotInProjectSource(moduleInfo) if (notInSourceFiles.isNotEmpty()) { val projectFacade = getFacadeForSyntheticFiles(notInSourceFiles) return ResolutionFacadeImpl(projectFacade, moduleInfo) @@ -379,10 +380,10 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { return ResolutionFacadeImpl(projectFacade, moduleInfo) } - private fun Collection.filterNotInProjectSource() = mapNotNull { + private fun Collection.filterNotInProjectSource(moduleInfo: IdeaModuleInfo) = mapNotNull { if (it is KtCodeFragment) it.getContextFile() else it }.filter { - !ProjectRootsUtil.isInProjectSource(it) + !ProjectRootsUtil.isInProjectSource(it) || !moduleInfo.contentScope().contains(it) }.toSet() private fun KtCodeFragment.getContextFile(): KtFile? {