Change class hierarchy of KotlinSourceRootType. Deadlock during concurrent classloading fixed
#KT-30137 Fixed
This commit is contained in:
@@ -331,8 +331,8 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
|
||||
.flatMap { it.goals.asSequence() }
|
||||
.any { it in PomFile.KotlinGoals.CompileGoals && it !in PomFile.KotlinGoals.JvmGoals }
|
||||
|
||||
val prodSourceRootType: JpsModuleSourceRootType<*> = if (isNonJvmModule) KotlinSourceRootType.Source else JavaSourceRootType.SOURCE
|
||||
val testSourceRootType: JpsModuleSourceRootType<*> = if (isNonJvmModule) KotlinSourceRootType.TestSource else JavaSourceRootType.TEST_SOURCE
|
||||
val prodSourceRootType: JpsModuleSourceRootType<*> = if (isNonJvmModule) SourceKotlinRootType else JavaSourceRootType.SOURCE
|
||||
val testSourceRootType: JpsModuleSourceRootType<*> = if (isNonJvmModule) TestSourceKotlinRootType else JavaSourceRootType.TEST_SOURCE
|
||||
|
||||
for ((type, dir) in directories) {
|
||||
if (rootModel.getSourceFolder(File(dir)) == null) {
|
||||
@@ -346,10 +346,10 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
|
||||
}
|
||||
|
||||
if (isNonJvmModule) {
|
||||
mavenProject.sources.forEach { rootModel.addSourceFolder(it, KotlinSourceRootType.Source) }
|
||||
mavenProject.testSources.forEach { rootModel.addSourceFolder(it, KotlinSourceRootType.TestSource) }
|
||||
mavenProject.resources.forEach { rootModel.addSourceFolder(it.directory, KotlinResourceRootType.Resource) }
|
||||
mavenProject.testResources.forEach { rootModel.addSourceFolder(it.directory, KotlinResourceRootType.TestResource) }
|
||||
mavenProject.sources.forEach { rootModel.addSourceFolder(it, SourceKotlinRootType) }
|
||||
mavenProject.testSources.forEach { rootModel.addSourceFolder(it, TestSourceKotlinRootType) }
|
||||
mavenProject.resources.forEach { rootModel.addSourceFolder(it.directory, ResourceKotlinRootType) }
|
||||
mavenProject.testResources.forEach { rootModel.addSourceFolder(it.directory, TestResourceKotlinRootType) }
|
||||
KotlinSdkType.setUpIfNeeded()
|
||||
}
|
||||
|
||||
|
||||
@@ -40,8 +40,9 @@ import org.jetbrains.idea.maven.project.MavenProjectsManager
|
||||
import org.jetbrains.idea.maven.utils.MavenArtifactScope
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CliArgumentStringBuilder.buildArgumentString
|
||||
import org.jetbrains.kotlin.config.KotlinSourceRootType
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.SourceKotlinRootType
|
||||
import org.jetbrains.kotlin.config.TestSourceKotlinRootType
|
||||
import org.jetbrains.kotlin.idea.configuration.RepositoryDescription
|
||||
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType
|
||||
@@ -500,9 +501,9 @@ class PomFile private constructor(private val xmlFile: XmlFile, val domModel: Ma
|
||||
|
||||
private fun SourceFolder.isRelatedSourceRoot(isTest: Boolean): Boolean {
|
||||
return if (isTest) {
|
||||
rootType == JavaSourceRootType.TEST_SOURCE || rootType == KotlinSourceRootType.TestSource
|
||||
rootType == JavaSourceRootType.TEST_SOURCE || rootType == TestSourceKotlinRootType
|
||||
} else {
|
||||
rootType == JavaSourceRootType.SOURCE || rootType == KotlinSourceRootType.Source
|
||||
rootType == JavaSourceRootType.SOURCE || rootType == SourceKotlinRootType
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.search.FileTypeIndex
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.kotlin.config.KotlinSourceRootType
|
||||
import org.jetbrains.kotlin.config.SourceKotlinRootType
|
||||
import org.jetbrains.kotlin.idea.inspections.runInspection
|
||||
import org.jetbrains.kotlin.idea.maven.inspections.KotlinMavenPluginPhaseInspection
|
||||
import org.jetbrains.kotlin.idea.refactoring.toPsiDirectory
|
||||
@@ -181,7 +181,7 @@ abstract class AbstractKotlinMavenInspectionTest : MavenImportingTestCase() {
|
||||
val contentEntry = getContentRoots(myProject.allModules().single().name).single()
|
||||
val sourceFolder =
|
||||
contentEntry.getSourceFolders(JavaSourceRootType.SOURCE).singleOrNull() ?:
|
||||
contentEntry.getSourceFolders(KotlinSourceRootType.Source).singleOrNull()
|
||||
contentEntry.getSourceFolders(SourceKotlinRootType).singleOrNull()
|
||||
ApplicationManager.getApplication().runWriteAction {
|
||||
val javaFile = sourceFolder?.file?.toPsiDirectory(myProject)?.createFile("Test.java") ?: throw IllegalStateException()
|
||||
javaFile.viewProvider.document!!.setText("class Test {}\n")
|
||||
|
||||
@@ -843,10 +843,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testJsCustomOutputPaths() {
|
||||
@@ -1315,10 +1315,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testJsDetectionByGoalWithJsStdlib() {
|
||||
@@ -1372,10 +1372,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testJsDetectionByGoalWithCommonStdlib() {
|
||||
@@ -1429,10 +1429,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testJsAndCommonStdlibKinds() {
|
||||
@@ -1494,10 +1494,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertEquals(JSLibraryKind, libraries.single { it.name?.contains("kotlin-stdlib-js") == true }.kind)
|
||||
assertEquals(CommonLibraryKind, libraries.single { it.name?.contains("kotlin-stdlib-common") == true }.kind)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testCommonDetectionByGoalWithJvmStdlib() {
|
||||
@@ -1545,10 +1545,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testCommonDetectionByGoalWithJsStdlib() {
|
||||
@@ -1596,10 +1596,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testCommonDetectionByGoalWithCommonStdlib() {
|
||||
@@ -1651,10 +1651,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testJvmDetectionByConflictingGoalsAndJvmStdlib() {
|
||||
@@ -1706,10 +1706,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), facetSettings.platform)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testJsDetectionByConflictingGoalsAndJsStdlib() {
|
||||
@@ -1761,10 +1761,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isJavaScript)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testCommonDetectionByConflictingGoalsAndCommonStdlib() {
|
||||
@@ -1816,10 +1816,10 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isCommon)
|
||||
|
||||
assertContentFolders("project", KotlinSourceRootType.Source, "src/main/kotlin")
|
||||
assertContentFolders("project", KotlinSourceRootType.TestSource, "src/test/java")
|
||||
assertContentFolders("project", KotlinResourceRootType.Resource, "src/main/resources")
|
||||
assertContentFolders("project", KotlinResourceRootType.TestResource, "src/test/resources")
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
assertContentFolders("project", ResourceKotlinRootType, "src/main/resources")
|
||||
assertContentFolders("project", TestResourceKotlinRootType, "src/test/resources")
|
||||
}
|
||||
|
||||
fun testNoPluginsInAdditionalArgs() {
|
||||
|
||||
Reference in New Issue
Block a user