Limit CInteropCommonizerTask to only one level of commonization
See ^KT-39324
This commit is contained in:
committed by
Space
parent
261934d881
commit
49cf386258
+16
-1
@@ -12,7 +12,6 @@ import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.api.plugins.ExtraPropertiesExtension
|
||||
import org.gradle.testfixtures.ProjectBuilder
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.CommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinSharedNativeCompilation
|
||||
@@ -115,25 +114,41 @@ class CInteropCommonizerTaskTest {
|
||||
|
||||
project.evaluate()
|
||||
|
||||
/*
|
||||
//https://youtrack.jetbrains.com/issue/KT-39324
|
||||
assertEquals(
|
||||
CInteropCommonizationParameters(
|
||||
SharedCommonizerTarget(CommonizerTarget(IOS_X64, IOS_ARM64), CommonizerTarget(MACOS_X64), CommonizerTarget(LINUX_X64)),
|
||||
setOf(linuxInterop, macosInterop, iosX64Interop, iosArm64Interop)
|
||||
), task.getCommonizationParameters(sharedNativeCompilation(nativeMain))
|
||||
)
|
||||
*/
|
||||
assertNull(
|
||||
task.getCommonizationParameters(sharedNativeCompilation(nativeMain))
|
||||
)
|
||||
|
||||
/*
|
||||
//https://youtrack.jetbrains.com/issue/KT-39324
|
||||
assertEquals(
|
||||
CInteropCommonizationParameters(
|
||||
SharedCommonizerTarget(CommonizerTarget(IOS_X64, IOS_ARM64), CommonizerTarget(MACOS_X64), CommonizerTarget(LINUX_X64)),
|
||||
setOf(linuxInterop, macosInterop, iosX64Interop, iosArm64Interop)
|
||||
), task.getCommonizationParameters(sharedNativeCompilation(iosMain))
|
||||
)
|
||||
*/
|
||||
assertEquals(
|
||||
CInteropCommonizationParameters(CommonizerTarget(IOS_X64, IOS_ARM64), setOf(iosX64Interop, iosArm64Interop)),
|
||||
task.getCommonizationParameters(sharedNativeCompilation(iosMain))
|
||||
)
|
||||
|
||||
/*
|
||||
//https://youtrack.jetbrains.com/issue/KT-39324
|
||||
assertTrue(
|
||||
task.getCommonizationParameters(sharedNativeCompilation(iosMain))!! in
|
||||
task.getCommonizationParameters(sharedNativeCompilation(nativeMain))!!,
|
||||
"Expected CInteropCommonizerTarget of iosMain to be fully contained in nativeMain"
|
||||
)
|
||||
*/
|
||||
}
|
||||
|
||||
private fun sharedNativeCompilation(sourceSet: KotlinSourceSet): KotlinSharedNativeCompilation {
|
||||
|
||||
+7
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.compilerRunner.GradleCliCommonizer
|
||||
import org.jetbrains.kotlin.compilerRunner.konanHome
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.CommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.SharedCommonizerTarget
|
||||
import org.jetbrains.kotlin.descriptors.commonizer.level
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
|
||||
import org.jetbrains.kotlin.gradle.plugin.CInteropSettings
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
@@ -117,6 +118,7 @@ internal open class CInteropCommonizerTask : AbstractCInteropCommonizerTask() {
|
||||
return sharedNativeCompilations.mapNotNull(::getCommonizationParameters).toSet()
|
||||
.run(::removeNotRegisteredInterops)
|
||||
.run(::removeEmptyInterops)
|
||||
.run(::removeHierarchicalParameters)
|
||||
.run(::removeRedundantParameters)
|
||||
}
|
||||
|
||||
@@ -173,6 +175,10 @@ private fun removeEmptyInterops(parameters: Set<CInteropCommonizationParameters>
|
||||
return parameters.filterTo(mutableSetOf()) { it.interops.isNotEmpty() }
|
||||
}
|
||||
|
||||
private fun removeHierarchicalParameters(parameters: Set<CInteropCommonizationParameters>): Set<CInteropCommonizationParameters> {
|
||||
return parameters.filterTo(mutableSetOf()) { it.commonizerTarget.level <= 1 }
|
||||
}
|
||||
|
||||
private fun removeRedundantParameters(parameters: Set<CInteropCommonizationParameters>): Set<CInteropCommonizationParameters> {
|
||||
return parameters.filterNotTo(mutableSetOf()) { current ->
|
||||
parameters.any { other ->
|
||||
@@ -181,6 +187,7 @@ private fun removeRedundantParameters(parameters: Set<CInteropCommonizationParam
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private operator fun CommonizerTarget.contains(other: CommonizerTarget): Boolean {
|
||||
if (this == other) return true
|
||||
if (this !is SharedCommonizerTarget) return false
|
||||
|
||||
Reference in New Issue
Block a user