diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt index 0f781b4f1ad..1efd032e192 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/library/SearchPathResolver.kt @@ -70,13 +70,26 @@ fun SearchPathResolver.resolveLibrariesRecursive(immediateLibraries: List = result do { + val defaultOverrides = mutableSetOf() newDependencies = newDependencies.values.asSequence() .flatMap { it.dependencies.asSequence() } .map { resolve(it).absoluteFile } + .onEach { + if (result[it]?.isDefaultLink == true) { + defaultOverrides.add(it) + } + } .filter { it !in result } .map { it to LibraryReaderImpl(it, abiVersion, target) }.toMap() result.putAll(newDependencies) + + // If there is a default link in immediateLibraries, + // and we get the same library as a dependency, + // the resultant surviving library should not be a defaultLink anymore. + defaultOverrides.forEach { + result[it] = LibraryReaderImpl(it, abiVersion, target) + } } while (newDependencies.isNotEmpty()) return result.values.toList() }