From 65bdfa72c1139c031fa8d83b4f2a379d67c0da0d Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Tue, 29 May 2018 13:16:18 +0300 Subject: [PATCH] jps: support KotlinSourceRootType KotlinSourceRootType will added with KotlinSourceRootProvider (ex KotlinMppCommonSourceRootProvider). New target type (with computeAllTargets) is not possible because ModuleBuildTarget is final. #KT-24506 fixed --- ...ps.builders.AdditionalRootsProviderService | 2 +- ...rovider.kt => KotlinSourceRootProvider.kt} | 27 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) rename jps-plugin/src/org/jetbrains/kotlin/jps/build/{KotlinMppCommonSourceRootProvider.kt => KotlinSourceRootProvider.kt} (74%) diff --git a/jps-plugin/src/META-INF/services/org.jetbrains.jps.builders.AdditionalRootsProviderService b/jps-plugin/src/META-INF/services/org.jetbrains.jps.builders.AdditionalRootsProviderService index 07ac7d506ad..efe8f6601cb 100644 --- a/jps-plugin/src/META-INF/services/org.jetbrains.jps.builders.AdditionalRootsProviderService +++ b/jps-plugin/src/META-INF/services/org.jetbrains.jps.builders.AdditionalRootsProviderService @@ -1 +1 @@ -org.jetbrains.kotlin.jps.build.KotlinMppCommonSourceRootProvider \ No newline at end of file +org.jetbrains.kotlin.jps.build.KotlinSourceRootProvider \ No newline at end of file diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinMppCommonSourceRootProvider.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt similarity index 74% rename from jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinMppCommonSourceRootProvider.kt rename to jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt index 1b1d0c4001b..09f8b6de82d 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinMppCommonSourceRootProvider.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinSourceRootProvider.kt @@ -20,11 +20,10 @@ import org.jetbrains.kotlin.jps.model.expectedByModules import java.io.File /** - * Required for Multiplatform Projects. - * - * Adds all the source roots of the expectedBy modules to the platform modules. + * - adds roots with KotlinSourceRootType + * - for Multiplatform Projects: adds all the source roots of the expectedBy modules to the platform modules. */ -class KotlinMppCommonSourceRootProvider : AdditionalRootsProviderService(JavaModuleBuildTargetType.ALL_TYPES) { +class KotlinSourceRootProvider : AdditionalRootsProviderService(JavaModuleBuildTargetType.ALL_TYPES) { override fun getAdditionalRoots( target: BuildTarget, dataPaths: BuildDataPaths? @@ -34,14 +33,30 @@ class KotlinMppCommonSourceRootProvider : AdditionalRootsProviderService() + // add source roots with type KotlinSourceRootType + val kotlinSourceRootType = if (target.isTests) KotlinSourceRootType.TestSource else KotlinSourceRootType.Source + module.getSourceRoots(kotlinSourceRootType).forEach { + result.add( + JavaSourceRootDescriptor( + it.file, + target, + false, + false, + it.properties.packagePrefix, + setOf() + ) + ) + } + + // add source roots of the expectedBy modules module.expectedByModules.forEach { commonModule -> - addSourceRoots(result, commonModule, target) + addCommonModuleSourceRoots(result, commonModule, target) } return result } - private fun addSourceRoots( + private fun addCommonModuleSourceRoots( result: MutableList, commonModule: JpsModule, target: ModuleBuildTarget