diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt index 3fe6b87e806..0c129f7b43b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/GranularMetadataTransformation.kt @@ -284,7 +284,7 @@ internal class GranularMetadataTransformation( val visibleSourceSetsExcludingDependsOn = allVisibleSourceSets.filterTo(mutableSetOf()) { it !in sourceSetsVisibleInParents } val metadataProvider = when (mppDependencyMetadataExtractor) { - is ProjectMppDependencyProjectStructureMetadataExtractor -> PreExtractedProjectMetadataProvider( + is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider( sourceSetMetadataOutputs = params.projectData[mppDependencyMetadataExtractor.projectPath]?.sourceSetMetadataOutputs?.get() ?: error("Unexpected project path '${mppDependencyMetadataExtractor.projectPath}'") ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt index a8447fa453f..1bb9f22b400 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/ProjectMetadataProviderImpl.kt @@ -10,55 +10,15 @@ import org.gradle.api.file.FileCollection import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.mpp.MetadataDependencyResolution.ChooseVisibleSourceSets.MetadataProvider.ProjectMetadataProvider -import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.metadataCompilationRegistryByModuleId import org.jetbrains.kotlin.gradle.targets.native.internal.* -import org.jetbrains.kotlin.gradle.utils.withType import org.jetbrains.kotlin.project.model.KpmModuleIdentifier private typealias SourceSetName = String internal fun ProjectMetadataProvider( - dependencyProject: Project, - moduleIdentifier: KpmModuleIdentifier + sourceSetMetadataOutputs: Map ): ProjectMetadataProvider { - return ProjectMetadataProviderImpl(dependencyProject, moduleIdentifier) -} - -private class ProjectMetadataProviderImpl( - private val dependencyProject: Project, - private val moduleIdentifier: KpmModuleIdentifier -) : ProjectMetadataProvider() { - override fun getSourceSetCompiledMetadata(sourceSetName: String): FileCollection { - val projectExtension = dependencyProject.topLevelExtensionOrNull - return when { - dependencyProject.pm20ExtensionOrNull != null -> { - val moduleId = moduleIdentifier - val module = dependencyProject.pm20Extension.modules.single { it.moduleIdentifier == moduleId } - val metadataCompilationRegistry = dependencyProject.metadataCompilationRegistryByModuleId.getValue(moduleId) - metadataCompilationRegistry.getForFragmentOrNull(module.fragments.getByName(sourceSetName))?.output?.classesDirs - ?: dependencyProject.files() - } - projectExtension is KotlinMultiplatformExtension -> - projectExtension.targets.getByName(KotlinMultiplatformPlugin.METADATA_TARGET_NAME).compilations - .firstOrNull { it.name == sourceSetName } - ?.output?.classesDirs ?: dependencyProject.files() - else -> error("unexpected top-level Kotlin extension $projectExtension") - } - } - - override fun getSourceSetCInteropMetadata(sourceSetName: String, consumer: MetadataConsumer): FileCollection { - val multiplatformExtension = dependencyProject.topLevelExtension as? KotlinMultiplatformExtension - ?: return dependencyProject.files() - - val commonizeCInteropTask = when (consumer) { - MetadataConsumer.Ide -> dependencyProject.copyCommonizeCInteropForIdeTask ?: return dependencyProject.files() - MetadataConsumer.Cli -> dependencyProject.commonizeCInteropTask ?: return dependencyProject.files() - } - - val sourceSet = multiplatformExtension.sourceSets.findByName(sourceSetName) ?: return dependencyProject.files() - val dependent = CInteropCommonizerDependent.from(sourceSet) ?: return dependencyProject.files() - return commonizeCInteropTask.get().commonizedOutputLibraries(dependent) - } + return ProjectMetadataProviderImpl(sourceSetMetadataOutputs) } internal class SourceSetMetadataOutputs( @@ -71,12 +31,10 @@ internal class SourceSetMetadataOutputs( ) } -internal class PreExtractedProjectMetadataProvider( +private class ProjectMetadataProviderImpl( private val sourceSetMetadataOutputs: Map ): ProjectMetadataProvider() { - constructor(project: Project): this(project.collectSourceSetMetadataOutputs()) - override fun getSourceSetCompiledMetadata(sourceSetName: String): FileCollection = sourceSetMetadataOutputs[sourceSetName]?.metadata ?: error("Unexpected source set '$sourceSetName'") diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmFragmentGranularMetadataResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmFragmentGranularMetadataResolver.kt index d3ed4637efd..f1a518fa845 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmFragmentGranularMetadataResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/GradleKpmFragmentGranularMetadataResolver.kt @@ -103,10 +103,7 @@ internal class GradleKpmFragmentGranularMetadataResolver( val metadataProvider = when (projectStructureMetadataExtractor) { - is ProjectMppDependencyProjectStructureMetadataExtractor -> ProjectMetadataProvider( - dependencyProject = project.project(projectStructureMetadataExtractor.projectPath), - moduleIdentifier = projectStructureMetadataExtractor.moduleIdentifier - ) + is ProjectMppDependencyProjectStructureMetadataExtractor -> TODO("Implement ProjectStructureMetadata for KPM") is JarMppDependencyProjectStructureMetadataExtractor -> ArtifactMetadataProvider( CompositeMetadataArtifactImpl(