diff --git a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt index 13b85061249..f7b25e30dde 100644 --- a/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt +++ b/idea/kotlin-gradle-tooling/src/KotlinMPPGradleModelBuilder.kt @@ -426,15 +426,20 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService { private fun buildNativeMainRunTasks(gradleTarget: Named): Collection { val executableBinaries = (gradleTarget::class.java.getMethodOrNull("getBinaries")?.invoke(gradleTarget) as? Collection) ?.filter { it.javaClass.name == "org.jetbrains.kotlin.gradle.plugin.mpp.Executable" } ?: return emptyList() - return executableBinaries.map { binary -> + return executableBinaries.mapNotNull { binary -> + val runTaskName = binary::class.java.getMethod("getRunTaskName").invoke(binary) as String? ?: return@mapNotNull null + val entryPoint = binary::class.java.getMethod("getEntryPoint").invoke(binary) as String? ?: return@mapNotNull null + val debuggable = binary::class.java.getMethod("getDebuggable").invoke(binary) as Boolean + val compilationName = binary.javaClass.getMethodOrNull("getCompilation")?.invoke(binary)?.let { it.javaClass.getMethodOrNull("getCompilationName")?.invoke(it)?.toString() } ?: KotlinCompilation.MAIN_COMPILATION_NAME + KotlinNativeMainRunTaskImpl( - binary::class.java.getMethod("getRunTaskName").invoke(binary) as String, + runTaskName, compilationName, - binary::class.java.getMethod("getEntryPoint").invoke(binary) as String, - binary::class.java.getMethod("getDebuggable").invoke(binary) as Boolean + entryPoint, + debuggable ) } }