[commonizer] Support commonizing includedForwardDeclarations in manifest
It is a new manifest property which is used only in K2, and it is required for correct K2 processing of forward declarations. ^KT-59132
This commit is contained in:
committed by
Space Team
parent
f3a7312ee6
commit
b28b0e70b6
@@ -68,6 +68,8 @@ internal class CommonNativeManifestDataProvider(
|
|||||||
packageFqName = rawManifests.first().packageFqName,
|
packageFqName = rawManifests.first().packageFqName,
|
||||||
exportForwardDeclarations = if (isInterop) rawManifests.map { it.exportForwardDeclarations }
|
exportForwardDeclarations = if (isInterop) rawManifests.map { it.exportForwardDeclarations }
|
||||||
.reduce { acc, list -> acc.intersect(list).toList() } else emptyList(),
|
.reduce { acc, list -> acc.intersect(list).toList() } else emptyList(),
|
||||||
|
includedForwardDeclarations = if (isInterop) rawManifests.map { it.includedForwardDeclarations }
|
||||||
|
.reduce { acc, list -> acc.intersect(list).toList() } else emptyList(),
|
||||||
nativeTargets = rawManifests.flatMapTo(mutableSetOf()) { it.nativeTargets },
|
nativeTargets = rawManifests.flatMapTo(mutableSetOf()) { it.nativeTargets },
|
||||||
shortName = rawManifests.first().shortName,
|
shortName = rawManifests.first().shortName,
|
||||||
commonizerTarget = target
|
commonizerTarget = target
|
||||||
|
|||||||
+6
@@ -22,6 +22,7 @@ data class NativeSensitiveManifestData(
|
|||||||
val isInterop: Boolean,
|
val isInterop: Boolean,
|
||||||
val packageFqName: String?,
|
val packageFqName: String?,
|
||||||
val exportForwardDeclarations: List<String>,
|
val exportForwardDeclarations: List<String>,
|
||||||
|
val includedForwardDeclarations: List<String>,
|
||||||
val nativeTargets: Collection<String>,
|
val nativeTargets: Collection<String>,
|
||||||
val shortName: String?,
|
val shortName: String?,
|
||||||
val commonizerTarget: CommonizerTarget?,
|
val commonizerTarget: CommonizerTarget?,
|
||||||
@@ -35,6 +36,7 @@ data class NativeSensitiveManifestData(
|
|||||||
isInterop = library.isInterop,
|
isInterop = library.isInterop,
|
||||||
packageFqName = library.packageFqName,
|
packageFqName = library.packageFqName,
|
||||||
exportForwardDeclarations = library.exportForwardDeclarations,
|
exportForwardDeclarations = library.exportForwardDeclarations,
|
||||||
|
includedForwardDeclarations = library.includedForwardDeclarations,
|
||||||
nativeTargets = library.nativeTargets,
|
nativeTargets = library.nativeTargets,
|
||||||
shortName = library.shortName,
|
shortName = library.shortName,
|
||||||
commonizerTarget = library.commonizerTarget?.let(::parseCommonizerTargetOrNull),
|
commonizerTarget = library.commonizerTarget?.let(::parseCommonizerTargetOrNull),
|
||||||
@@ -62,6 +64,10 @@ fun BaseWriterImpl.addManifest(manifest: NativeSensitiveManifestData) {
|
|||||||
manifest.exportForwardDeclarations.sorted().joinToString(" ")
|
manifest.exportForwardDeclarations.sorted().joinToString(" ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addOptionalProperty(KLIB_PROPERTY_INCLUDED_FORWARD_DECLARATIONS, manifest.includedForwardDeclarations.isNotEmpty() || manifest.isInterop) {
|
||||||
|
manifest.includedForwardDeclarations.sorted().joinToString(" ")
|
||||||
|
}
|
||||||
|
|
||||||
addOptionalProperty(KLIB_PROPERTY_NATIVE_TARGETS, manifest.nativeTargets.isNotEmpty()) {
|
addOptionalProperty(KLIB_PROPERTY_NATIVE_TARGETS, manifest.nativeTargets.isNotEmpty()) {
|
||||||
manifest.nativeTargets.sorted().joinToString(" ")
|
manifest.nativeTargets.sorted().joinToString(" ")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ fun MockNativeManifestDataProvider(
|
|||||||
isInterop: Boolean = true,
|
isInterop: Boolean = true,
|
||||||
packageFqName: String? = "mock",
|
packageFqName: String? = "mock",
|
||||||
exportForwardDeclarations: List<String> = emptyList(),
|
exportForwardDeclarations: List<String> = emptyList(),
|
||||||
|
includedForwardDeclarations: List<String> = emptyList(),
|
||||||
nativeTargets: Collection<String> = emptyList(),
|
nativeTargets: Collection<String> = emptyList(),
|
||||||
shortName: String? = "mock"
|
shortName: String? = "mock"
|
||||||
): NativeManifestDataProvider = object : NativeManifestDataProvider {
|
): NativeManifestDataProvider = object : NativeManifestDataProvider {
|
||||||
@@ -190,6 +191,7 @@ fun MockNativeManifestDataProvider(
|
|||||||
isInterop = isInterop,
|
isInterop = isInterop,
|
||||||
packageFqName = packageFqName,
|
packageFqName = packageFqName,
|
||||||
exportForwardDeclarations = exportForwardDeclarations,
|
exportForwardDeclarations = exportForwardDeclarations,
|
||||||
|
includedForwardDeclarations = includedForwardDeclarations,
|
||||||
nativeTargets = nativeTargets,
|
nativeTargets = nativeTargets,
|
||||||
shortName = shortName,
|
shortName = shortName,
|
||||||
commonizerTarget = target,
|
commonizerTarget = target,
|
||||||
|
|||||||
Reference in New Issue
Block a user