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