From 3418d1559055cc654de0753105616476b53930e4 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Tue, 19 Aug 2014 17:15:50 +0400 Subject: [PATCH] Avoid redundant wrapping in SyntheticFilesFilteringScope --- .../DeclarationProviderFactoryService.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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) + } } } }