From 8c041f56ccfdb1d1fbcaeabe6aeaab160fe57dff Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Sat, 23 Aug 2014 14:58:39 +0400 Subject: [PATCH] Do not analyze kotlin source files in jars for java projects --- .../PluginDeclarationProviderFactoryService.kt | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt index 886435e7349..e0959516c11 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/PluginDeclarationProviderFactoryService.kt @@ -23,6 +23,8 @@ import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFacto import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactoryService import org.jetbrains.jet.storage.StorageManager import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope +import com.intellij.openapi.module.ModuleManager +import org.jetbrains.jet.plugin.project.ProjectStructureUtil public class PluginDeclarationProviderFactoryService : DeclarationProviderFactoryService() { @@ -32,8 +34,18 @@ public class PluginDeclarationProviderFactoryService : DeclarationProviderFactor syntheticFiles: Collection, filesScope: GlobalSearchScope ): DeclarationProviderFactory { - //NOTE: we include libraries here to support analyzing JavaScript libraries which are kotlin sources in classes root - return PluginDeclarationProviderFactory(project, JetSourceFilterScope.kotlinSourcesAndLibraries(filesScope, project), - storageManager, syntheticFiles) + val scope = if (isJsProject(project)) { + //NOTE: we include libraries here to support analyzing JavaScript libraries which are kotlin sources in classes root + JetSourceFilterScope.kotlinSourcesAndLibraries(filesScope, project) + } + else { + JetSourceFilterScope.kotlinSources(filesScope, project) + } + return PluginDeclarationProviderFactory(project, scope, storageManager, syntheticFiles) + } + + //TODO: (module refactoring) get rid of this when there is no single module resolve in plugin + private fun isJsProject(project: Project): Boolean { + return ModuleManager.getInstance(project).getModules().any { ProjectStructureUtil.isJsKotlinModule(it) } } }