From 2bffa4ad9fadab19ec7700ae151926f470dfd7b0 Mon Sep 17 00:00:00 2001 From: Nikita Nazarov Date: Wed, 8 Dec 2021 15:30:00 +0300 Subject: [PATCH] [kotlin] prohibit coroutine agent connection for not module based configurations ^KTIJ-15750 fixed GitOrigin-RevId: 2f66ac7df69d0fb7fb203048e56d494e81cf7714 --- .../coroutine/CoroutineAgentConnector.kt | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAgentConnector.kt b/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAgentConnector.kt index be59df3a572f..42be229ef20f 100644 --- a/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAgentConnector.kt +++ b/plugins/kotlin/jvm-debugger/coroutines/src/org/jetbrains/kotlin/idea/debugger/coroutine/CoroutineAgentConnector.kt @@ -9,7 +9,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.JdkUtil import com.intellij.openapi.vfs.newvfs.ArchiveFileSystem import com.intellij.psi.JavaPsiFacade -import com.intellij.psi.search.GlobalSearchScope import org.apache.maven.artifact.versioning.DefaultArtifactVersion enum class CoroutineDebuggerMode { @@ -40,7 +39,7 @@ internal object CoroutineAgentConnector { private fun findKotlinxCoroutinesCoreJar(project: Project, configuration: RunConfigurationBase<*>?): KotlinxCoroutinesSearchResult { val matchResult = project - .getJarVirtualFiles(project, configuration, kotlinxCoroutinesPackageName) + .getJarVirtualFiles(configuration, kotlinxCoroutinesPackageName) .asSequence() .mapNotNull { kotlinxCoroutinesCoreJarRegex.matchEntire(it) } .firstOrNull() @@ -55,21 +54,19 @@ internal object CoroutineAgentConnector { } private fun Project.getJarVirtualFiles( - project: Project, configuration: RunConfigurationBase<*>?, packageName: String ): List { + if (configuration !is ModuleBasedConfiguration<*, *>) return emptyList() + + val scope = configuration.configurationModule.module?.getModuleRuntimeScope( + configuration is JavaTestConfigurationWithDiscoverySupport + ) ?: return emptyList() + val kotlinxCoroutinesPackage = JavaPsiFacade.getInstance(this) .findPackage(packageName) ?: return emptyList() - var scope = GlobalSearchScope.allScope(project) - if (configuration is ModuleBasedConfiguration<*, *>) { - configuration.configurationModule.module?.let { - scope = it.getModuleRuntimeScope( - configuration is JavaTestConfigurationWithDiscoverySupport - ) - } - } + return kotlinxCoroutinesPackage.getDirectories(scope).mapNotNull { it.virtualFile.path.getParentJarPath() }