diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt index 44707dac608..bb4fb463d69 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/search/searchUtil.kt @@ -20,6 +20,9 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile import com.intellij.psi.search.SearchScope +import com.intellij.psi.PsiElement +import com.intellij.openapi.module.ModuleUtilCore +import com.intellij.openapi.roots.ModuleRootManager public fun SearchScope.and(otherScope: SearchScope): SearchScope = intersectWith(otherScope) public fun SearchScope.or(otherScope: SearchScope): SearchScope = union(otherScope) @@ -31,3 +34,10 @@ public fun Project.allScope(): GlobalSearchScope = GlobalSearchScope.allScope(th public fun Project.projectScope(): GlobalSearchScope = GlobalSearchScope.projectScope(this) public fun PsiFile.fileScope(): GlobalSearchScope = GlobalSearchScope.fileScope(this) + +public fun searchScopeForSourceElementDependencies(element: PsiElement): GlobalSearchScope? { + val module = ModuleUtilCore.findModuleForPsiElement(element) ?: return null + val virtualFile = element.getContainingFile()?.getVirtualFile() ?: return null + val isInTests = ModuleRootManager.getInstance(module).getFileIndex().isInTestSourceContent(virtualFile) + return GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, isInTests) +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 7e242bf0c2f..634594c16e5 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -30,8 +30,8 @@ import org.jetbrains.jet.plugin.codeInsight.TipsManager import org.jetbrains.jet.plugin.completion.smart.SmartCompletion import org.jetbrains.jet.plugin.references.JetSimpleNameReference import org.jetbrains.jet.plugin.project.ResolveSessionForBodies -import com.intellij.openapi.module.ModuleUtilCore import org.jetbrains.jet.plugin.caches.KotlinIndicesHelper +import org.jetbrains.jet.plugin.search.searchScopeForSourceElementDependencies class CompletionSessionConfiguration( val completeNonImportedDeclarations: Boolean, @@ -80,8 +80,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, private val project = position.getProject() private val indicesHelper = KotlinIndicesHelper(project) - private val module = ModuleUtilCore.findModuleForPsiElement(parameters.getOriginalFile()) - private val searchScope = if (module != null) GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module) else GlobalSearchScope.EMPTY_SCOPE + private val searchScope = searchScopeForSourceElementDependencies(parameters.getOriginalFile()) ?: GlobalSearchScope.EMPTY_SCOPE public fun complete(): Boolean { assert(parameters.getCompletionType() == CompletionType.BASIC) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt index 90005f1e42b..093716bcae8 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt @@ -75,4 +75,3 @@ private fun qualifierName(descriptor: DeclarationDescriptor): String? = when (de is PackageFragmentDescriptor -> DescriptorRenderer.SOURCE_CODE.renderFqName(descriptor.fqName) else -> null } - diff --git a/idea/src/org/jetbrains/jet/plugin/completion/TypesCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/TypesCompletion.kt index 4f632cc51b6..c48e6168e39 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/TypesCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/TypesCompletion.kt @@ -20,7 +20,6 @@ import com.intellij.codeInsight.completion.* import com.intellij.codeInsight.lookup.LookupElement import com.intellij.codeInsight.lookup.LookupElementDecorator import com.intellij.psi.PsiClass -import com.intellij.psi.search.GlobalSearchScope import com.intellij.util.Consumer import org.jetbrains.jet.asJava.KotlinLightClass import org.jetbrains.jet.lang.descriptors.ClassKind @@ -33,16 +32,15 @@ import org.jetbrains.jet.plugin.caches.JetFromJavaDescriptorHelper import org.jetbrains.jet.plugin.completion.handlers.JetJavaClassInsertHandler import org.jetbrains.jet.plugin.project.ProjectStructureUtil import org.jetbrains.jet.plugin.project.ResolveSessionForBodies -import com.intellij.openapi.module.ModuleUtilCore import org.jetbrains.jet.plugin.caches.KotlinIndicesHelper +import org.jetbrains.jet.plugin.search.searchScopeForSourceElementDependencies class TypesCompletion(val parameters: CompletionParameters, val resolveSession: ResolveSessionForBodies, val prefixMatcher: PrefixMatcher) { fun addAllTypes(result: LookupElementsCollector) { result.addDescriptorElements(KotlinBuiltIns.getInstance().getNonPhysicalClasses()) val project = parameters.getOriginalFile().getProject() - val module = ModuleUtilCore.findModuleForPsiElement(parameters.getOriginalFile()) ?: return - val searchScope = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module) + val searchScope = searchScopeForSourceElementDependencies(parameters.getOriginalFile()) ?: return result.addDescriptorElements(KotlinIndicesHelper(project).getClassDescriptors({ prefixMatcher.prefixMatches(it) }, resolveSession, searchScope)) if (!ProjectStructureUtil.isJsKotlinModule(parameters.getOriginalFile() as JetFile)) { diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt index 6582297f6eb..f0c165e0b01 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.kt @@ -50,6 +50,7 @@ import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil import com.intellij.openapi.module.ModuleUtilCore import org.jetbrains.jet.plugin.ProjectRootsUtil import org.jetbrains.jet.asJava.unwrapped +import org.jetbrains.jet.plugin.search.searchScopeForSourceElementDependencies /** * Check possibility and perform fix for unresolved references. @@ -109,8 +110,7 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction()