[Gradle][MPP] Implement ChooseVisibleSourceSetProjection as nested task input

^KT-50952 Verification Pending
This commit is contained in:
sebastian.sellmair
2022-01-25 17:50:12 +01:00
committed by Space
parent f7c3ed7888
commit abed5b98ac
2 changed files with 24 additions and 1 deletions
@@ -14,9 +14,11 @@ import org.gradle.api.tasks.*
import org.jetbrains.kotlin.commonizer.SharedCommonizerTarget
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.GranularMetadataTransformation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinProjectStructureMetadata
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.JarMetadataProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.toModuleIdentifiers
import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.sources.SourceSetMetadataStorageForIde
import org.jetbrains.kotlin.gradle.plugin.sources.resolveAllDependsOnSourceSets
@@ -27,6 +29,7 @@ import org.jetbrains.kotlin.gradle.utils.filesProvider
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.gradle.utils.outputFilesProvider
import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
import org.jetbrains.kotlin.project.model.KotlinModuleIdentifier
import java.io.File
import java.util.concurrent.Callable
import javax.inject.Inject
@@ -90,6 +93,19 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
@get:OutputDirectory val outputDirectory: File
) : DefaultTask() {
@Suppress("unused")
class ChooseVisibleSourceSetProjection(
@Input val dependencyModuleIdentifiers: List<KotlinModuleIdentifier>,
@Nested val projectStructureMetadata: KotlinProjectStructureMetadata,
@Input val visibleSourceSetsProvidingCInterops: Set<String>
) {
constructor(chooseVisibleSourceSets: ChooseVisibleSourceSets) : this(
dependencyModuleIdentifiers = chooseVisibleSourceSets.dependency.toModuleIdentifiers(),
projectStructureMetadata = chooseVisibleSourceSets.projectStructureMetadata,
visibleSourceSetsProvidingCInterops = chooseVisibleSourceSets.visibleSourceSetsProvidingCInterops
)
}
@Suppress("unused")
@get:InputFiles
@get:Classpath
@@ -103,6 +119,11 @@ internal open class CInteropMetadataDependencyTransformationTask @Inject constru
.flatMap { it.metadataDependencyResolutions }
.filterIsInstance<ChooseVisibleSourceSets>()
@Suppress("unused")
@get:Nested
protected val chooseVisibleSourceSetsProjection
get() = chooseVisibleSourceSets.map(::ChooseVisibleSourceSetProjection).toSet()
@Suppress("unused")
@get:Input
protected val dependencyProjectStructureMetadata
@@ -5,8 +5,10 @@
package org.jetbrains.kotlin.project.model
import java.io.Serializable
// TODO sealed with an abstract subclass? this will make exhaustive checks work
open class KotlinModuleIdentifier(open val moduleClassifier: String?)
open class KotlinModuleIdentifier(open val moduleClassifier: String?): Serializable
// TODO consider id: Any, to allow IDs with custom equality?
data class LocalModuleIdentifier(