Change class hierarchy of KotlinSourceRootType. Deadlock during concurrent classloading fixed
#KT-30137 Fixed
This commit is contained in:
@@ -12,7 +12,8 @@ import org.jetbrains.jps.builders.java.ResourcesTargetType
|
||||
import org.jetbrains.jps.builders.storage.BuildDataPaths
|
||||
import org.jetbrains.jps.incremental.ResourcesTarget
|
||||
import org.jetbrains.jps.model.java.JavaResourceRootProperties
|
||||
import org.jetbrains.kotlin.config.KotlinResourceRootType
|
||||
import org.jetbrains.kotlin.config.ResourceKotlinRootType
|
||||
import org.jetbrains.kotlin.config.TestResourceKotlinRootType
|
||||
|
||||
class KotlinResourcesRootProvider : AdditionalRootsProviderService<ResourceRootDescriptor>(ResourcesTargetType.ALL_TYPES) {
|
||||
override fun getAdditionalRoots(
|
||||
@@ -26,7 +27,7 @@ class KotlinResourcesRootProvider : AdditionalRootsProviderService<ResourceRootD
|
||||
|
||||
// Add source roots with type KotlinResourceRootType.
|
||||
// See the note in KotlinSourceRootProvider
|
||||
val kotlinResourceRootType = if (target.isTests) KotlinResourceRootType.TestResource else KotlinResourceRootType.Resource
|
||||
val kotlinResourceRootType = if (target.isTests) TestResourceKotlinRootType else ResourceKotlinRootType
|
||||
module.getSourceRoots(kotlinResourceRootType).forEach {
|
||||
result.add(
|
||||
ResourceRootDescriptor(
|
||||
|
||||
@@ -16,8 +16,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootProperties
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||
import org.jetbrains.kotlin.config.KotlinResourceRootType
|
||||
import org.jetbrains.kotlin.config.KotlinSourceRootType
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.jps.model.expectedByModules
|
||||
import org.jetbrains.kotlin.jps.model.isTestModule
|
||||
import org.jetbrains.kotlin.jps.model.sourceSetModules
|
||||
@@ -39,7 +38,7 @@ class KotlinSourceRootProvider : AdditionalRootsProviderService<JavaSourceRootDe
|
||||
// `ModuleBuildTarget.computeAllTargets`. `ModuleBuildTarget` is required for incremental compilation.
|
||||
// We cannot define our own `ModuleBuildTarget` since it is final and `ModuleBuildTarget` supports only `JavaSourceRootDescriptor`.
|
||||
// So the only one way to support `KotlinSourceRootType` is to add a fake `JavaSourceRootDescriptor` for each source root with that type.
|
||||
val kotlinSourceRootType = if (target.isTests) KotlinSourceRootType.TestSource else KotlinSourceRootType.Source
|
||||
val kotlinSourceRootType = if (target.isTests) TestSourceKotlinRootType else SourceKotlinRootType
|
||||
module.getSourceRoots(kotlinSourceRootType).forEach {
|
||||
result.add(
|
||||
JavaSourceRootDescriptor(
|
||||
@@ -95,8 +94,8 @@ class KotlinSourceRootProvider : AdditionalRootsProviderService<JavaSourceRootDe
|
||||
|
||||
private val JpsModuleSourceRootType<*>.isTestsRootType
|
||||
get() = when (this) {
|
||||
is KotlinSourceRootType -> this == KotlinSourceRootType.TestSource
|
||||
is KotlinResourceRootType -> this == KotlinResourceRootType.TestResource
|
||||
is KotlinSourceRootType -> this == TestSourceKotlinRootType
|
||||
is KotlinResourceRootType -> this == TestResourceKotlinRootType
|
||||
// for compatibility:
|
||||
is JavaSourceRootType -> this == JavaSourceRootType.TEST_SOURCE
|
||||
is JavaResourceRootType -> this == JavaResourceRootType.TEST_RESOURCE
|
||||
|
||||
Reference in New Issue
Block a user