Fix compilation of KotlinMPPGradleModelBuilder

This commit is contained in:
Andrey Uskov
2019-09-27 12:14:43 +03:00
parent ca75aeb534
commit a4a03aeb5c
@@ -57,7 +57,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
reportUnresolvedDependencies(targets)
val kotlinNativeHome = KotlinNativeHomeEvaluator.getKotlinNativeHome(project) ?: NO_KOTLIN_NATIVE_HOME
return KotlinMPPGradleModelImpl(
filterOrphanSourceSets(sourceSetMap, targets),
filterOrphanSourceSets(sourceSetMap, targets, project),
targets,
ExtraFeaturesImpl(coroutinesState, isHMPPEnabled(project)),
kotlinNativeHome,
@@ -65,8 +65,21 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
)
}
private fun filterOrphanSourceSets(
sourceSets: Map<String, KotlinSourceSetImpl>,
targets: Collection<KotlinTarget>,
project: Project
): Map<String, KotlinSourceSetImpl> {
if (project.properties["import_orphan_source_sets"]?.toString()?.toBoolean() ?: DEFAULT_IMPORT_ORPHAN_SOURCE_SETS) return sourceSets
val compiledSourceSets: Collection<String> = targets.flatMap { it.compilations }.flatMap { it.sourceSets }.flatMap { it.dependsOnSourceSets.union(listOf(it.name)) }.distinct()
sourceSets.filter { !compiledSourceSets.contains(it.key) }.forEach {
logger.warn("[sync warning] Source set \"${it.key}\" is not compiled with any compilation. This source set is not imported in the IDE.")
}
return sourceSets.filter { compiledSourceSets.contains(it.key) }
}
private fun isHMPPEnabled(project: Project): Boolean {
//TODO(auskov): replace with Project.isKotlinGranularMetadataEnabled after merging with gradle pranch
//TODO(auskov): replace with Project.isKotlinGranularMetadataEnabled after merging with gradle branch
return (project.findProperty("kotlin.mpp.enableGranularSourceSetsMetadata") as? String)?.toBoolean() ?: false
}
@@ -582,16 +595,6 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
}
for (sourceSet in sourceSets.values) {
val name = sourceSet.name
if (name == KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME) {
sourceSet.isTestModule = false
continue
}
if (name == KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME) {
sourceSet.isTestModule = true
continue
}
val compilations = sourceSetToCompilations[sourceSet]
if (compilations != null) {
val platforms = compilations.map { it.platform }
@@ -605,8 +608,16 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
sourceSet.isTestModule = compilations.all { it.isTestModule }
} else {
// TODO: change me after design about it
sourceSet.isTestModule = "Test" in sourceSet.name
//TODO(auskov): remove this branch as far as import of orphan source sets is dropped
val name = sourceSet.name
if (name == KotlinSourceSet.COMMON_MAIN_SOURCE_SET_NAME) {
sourceSet.isTestModule = false
continue
}
if (name == KotlinSourceSet.COMMON_TEST_SOURCE_SET_NAME) {
sourceSet.isTestModule = true
continue
}
}
}
}