diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt index a09b61320d8..f047415acc1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCInteropMetadataDependencyClasspathResolver.kt @@ -27,7 +27,7 @@ internal object IdeCInteropMetadataDependencyClasspathResolver : IdeDependencyRe project.locateDependencyTask(sourceSet) ?: return emptySet() val cinteropFiles = project.createCInteropMetadataDependencyClasspathForIde(sourceSet) - return project.resolveCinteropDependencies(cinteropFiles) + return project.resolveCInteropDependencies(cinteropFiles) } override fun dependencies(project: Project): Iterable { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedCinteropDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedCinteropDependencyResolver.kt index 05b3d0fb4bf..a0b6dbfc953 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedCinteropDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedCinteropDependencyResolver.kt @@ -19,7 +19,7 @@ internal object IdeCommonizedCinteropDependencyResolver : IdeDependencyResolver, val project = sourceSet.project val cinteropFiles = project.cinteropCommonizerDependencies(sourceSet) - return project.resolveCinteropDependencies(cinteropFiles) + return project.resolveCInteropDependencies(cinteropFiles) } override fun dependencies(project: Project): Iterable { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformCinteropDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformCinteropDependencyResolver.kt index 0b524707100..2083c8a2bad 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformCinteropDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformCinteropDependencyResolver.kt @@ -18,6 +18,6 @@ internal object IdePlatformCinteropDependencyResolver : IdeDependencyResolver { val cinteropFiles = project.getPlatformCinteropDependenciesOrEmpty(sourceSet) - return project.resolveCinteropDependencies(cinteropFiles) + return project.resolveCInteropDependencies(cinteropFiles) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeProjectToProjectCInteropDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeProjectToProjectCInteropDependencyResolver.kt index 68fc1d00883..5620dad2f08 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeProjectToProjectCInteropDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeProjectToProjectCInteropDependencyResolver.kt @@ -32,6 +32,6 @@ internal object IdeProjectToProjectCInteropDependencyResolver : IdeDependencyRes it.componentFilter { identifier -> identifier is ProjectComponentIdentifier } }.files - return project.resolveCinteropDependencies(cinteropFiles) + return project.resolveCInteropDependencies(cinteropFiles) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/resolveCinteropDependency.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/resolveCinteropDependency.kt index 81c9db05b39..fac6b34365a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/resolveCinteropDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/resolveCinteropDependency.kt @@ -13,22 +13,28 @@ import org.jetbrains.kotlin.gradle.plugin.ide.KlibExtra import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.library.* -internal fun Project.resolveCinteropDependencies(cinteropFiles: FileCollection): Set { +internal fun Project.resolveCInteropDependencies(cinteropFiles: FileCollection): Set { return cinteropFiles.files .filter { it.isDirectory || it.extension == KLIB_FILE_EXTENSION } - .mapNotNullTo(mutableSetOf()) { libraryFile -> - createCinteropLibraryDependency(this, libraryFile) - } + .mapNotNull { libraryFile -> this.createCinteropLibraryDependency(libraryFile) } + .toSet() } -private fun createCinteropLibraryDependency(project: Project, libraryFile: java.io.File): IdeaKotlinResolvedBinaryDependency? { +private fun Project.createCinteropLibraryDependency(libraryFile: java.io.File): IdeaKotlinBinaryDependency? { + if (!libraryFile.exists()) { + return IdeaKotlinUnresolvedBinaryDependency( + cause = "cinterop file: ${libraryFile.path} does not exist", + coordinates = null + ) + } + val library = try { resolveSingleFileKlib( libraryFile = File(libraryFile.absolutePath), strategy = ToolingSingleFileKlibResolveStrategy ) } catch (error: Throwable) { - project.logger.error("Failed to resolve library ${libraryFile.path}", error) + logger.error("Failed to resolve library ${libraryFile.path}", error) return null }