diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/DeclarationProviderFactoryService.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/DeclarationProviderFactoryService.kt index fdf439829f1..4dc0fa516c9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/DeclarationProviderFactoryService.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/declarations/DeclarationProviderFactoryService.kt @@ -44,21 +44,28 @@ public abstract class DeclarationProviderFactoryService { filesScope: GlobalSearchScope ): DeclarationProviderFactory { return ServiceManager.getService(project, javaClass())!! - .create(project, storageManager, syntheticFiles, SyntheticFilesFilteringScope(syntheticFiles, filesScope)) + .create(project, storageManager, syntheticFiles, SyntheticFilesFilteringScope.filter(syntheticFiles, filesScope)) } } - private class SyntheticFilesFilteringScope(syntheticFiles: Collection, baseScope: GlobalSearchScope) : + class SyntheticFilesFilteringScope(syntheticFiles: Collection, baseScope: GlobalSearchScope) : DelegatingGlobalSearchScope(baseScope) { val originals = syntheticFiles.map { it.getOriginalFile().getVirtualFile() }.filterNotNullTo(HashSet()) override fun contains(file: VirtualFile): Boolean { - if (file in originals) return false + return super.contains(file) && file !in originals + } - return super.contains(file) + class object { + fun filter(syntheticFiles: Collection, baseScope: GlobalSearchScope): GlobalSearchScope { + if (syntheticFiles.isEmpty()) { + return baseScope + } + return SyntheticFilesFilteringScope(syntheticFiles, baseScope) + } } } }