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
This commit is contained in:
Sergey Rostov
2018-05-29 13:16:18 +03:00
parent b2f58ad9c3
commit 65bdfa72c1
2 changed files with 22 additions and 7 deletions
@@ -1 +1 @@
org.jetbrains.kotlin.jps.build.KotlinMppCommonSourceRootProvider
org.jetbrains.kotlin.jps.build.KotlinSourceRootProvider
@@ -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<JavaSourceRootDescriptor>(JavaModuleBuildTargetType.ALL_TYPES) {
class KotlinSourceRootProvider : AdditionalRootsProviderService<JavaSourceRootDescriptor>(JavaModuleBuildTargetType.ALL_TYPES) {
override fun getAdditionalRoots(
target: BuildTarget<JavaSourceRootDescriptor>,
dataPaths: BuildDataPaths?
@@ -34,14 +33,30 @@ class KotlinMppCommonSourceRootProvider : AdditionalRootsProviderService<JavaSou
val result = mutableListOf<JavaSourceRootDescriptor>()
// 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<JavaSourceRootDescriptor>,
commonModule: JpsModule,
target: ModuleBuildTarget