diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt index 46fda87a68d..acaf367b460 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt @@ -1334,6 +1334,21 @@ class CocoaPodsIT : BaseGradleIT() { } } + @Test + fun `configuration fails when pod depends on itself`() = with(getProjectByName("native-cocoapods-dependant-pods")) { + gradleBuildScript().appendToCocoapodsBlock(""" + pod("Foo") { useInteropBindingFrom("Foo") } + """.trimIndent()) + + build( + ":help", + "-Pkotlin.native.cocoapods.generate.wrapper=true", + ) { + assertFailed() + assertContains("Pod 'Foo' has an interop-binding dependency on itself") + } + } + // test configuration phase private class CustomHooks { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index d019e8c3646..3296a52a4e7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -378,6 +378,10 @@ open class KotlinCocoapodsPlugin : Plugin { interop: DefaultCInteropSettings, dependencyName: String, ) { + if (pod.name == dependencyName) { + error("Pod '${pod.name}' has an interop-binding dependency on itself") + } + val dependencyPod = cocoapodsExtension.pods.findByName(dependencyName) ?: error("Couldn't find declaration of pod '$dependencyName' (interop-binding dependency of pod '${pod.name}')")