Change class hierarchy of KotlinSourceRootType. Deadlock during concurrent classloading fixed

#KT-30137 Fixed
This commit is contained in:
Andrey Uskov
2019-02-28 00:26:53 +03:00
parent 87dc1a035b
commit 325ed8eb32
26 changed files with 313 additions and 278 deletions
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.analyzer.TrackableModuleInfo
import org.jetbrains.kotlin.caches.project.LibraryModuleInfo
import org.jetbrains.kotlin.caches.resolve.resolution
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.util.enlargedSearchScope
import org.jetbrains.kotlin.idea.configuration.BuildSystemType
@@ -210,8 +210,8 @@ fun Module.testSourceInfo(): ModuleTestSourceInfo? = if (hasTestRoots()) ModuleT
internal fun Module.correspondingModuleInfos(): List<ModuleSourceInfo> = listOf(testSourceInfo(), productionSourceInfo()).filterNotNull()
private fun Module.hasProductionRoots() = hasRootsOfType(JavaSourceRootType.SOURCE) || hasRootsOfType(KotlinSourceRootType.Source) || (isNewMPPModule && sourceType == SourceType.PRODUCTION)
private fun Module.hasTestRoots() = hasRootsOfType(JavaSourceRootType.TEST_SOURCE) || hasRootsOfType(KotlinSourceRootType.TestSource) || (isNewMPPModule && sourceType == SourceType.TEST)
private fun Module.hasProductionRoots() = hasRootsOfType(JavaSourceRootType.SOURCE) || hasRootsOfType(SourceKotlinRootType) || (isNewMPPModule && sourceType == SourceType.PRODUCTION)
private fun Module.hasTestRoots() = hasRootsOfType(JavaSourceRootType.TEST_SOURCE) || hasRootsOfType(TestSourceKotlinRootType) || (isNewMPPModule && sourceType == SourceType.TEST)
private fun Module.hasRootsOfType(sourceRootType: JpsModuleSourceRootType<*>): Boolean =
rootManager.contentEntries.any { it.getSourceFolders(sourceRootType).isNotEmpty() }
@@ -10,23 +10,22 @@ import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootType
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.idea.caches.project.SourceType
import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected
private val testRootTypes: Set<JpsModuleSourceRootType<*>> = setOf(
JavaSourceRootType.TEST_SOURCE,
JavaResourceRootType.TEST_RESOURCE,
KotlinSourceRootType.TestSource,
KotlinResourceRootType.TestResource
TestSourceKotlinRootType,
TestResourceKotlinRootType
)
private val sourceRootTypes = setOf<JpsModuleSourceRootType<*>>(
JavaSourceRootType.SOURCE,
JavaResourceRootType.RESOURCE,
KotlinSourceRootType.Source,
KotlinResourceRootType.Resource
SourceKotlinRootType,
ResourceKotlinRootType
)
fun JpsModuleSourceRootType<*>.getSourceType(): SourceType? = when(this) {
@@ -19,7 +19,8 @@ import com.intellij.util.Query
import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes
import org.jetbrains.jps.model.java.JavaSourceRootProperties
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.config.SourceKotlinRootType
import org.jetbrains.kotlin.config.TestSourceKotlinRootType
import org.jetbrains.kotlin.idea.caches.PerModulePackageCacheService
import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots
import org.jetbrains.kotlin.idea.util.rootManager
@@ -79,7 +80,7 @@ private fun findLongestExistingPackage(module: Module, packageName: String): Psi
}
private val kotlinSourceRootTypes: Set<JpsModuleSourceRootType<JavaSourceRootProperties>> =
setOf(KotlinSourceRootType.Source, KotlinSourceRootType.TestSource) + JavaModuleSourceRootTypes.SOURCES
setOf(SourceKotlinRootType, TestSourceKotlinRootType) + JavaModuleSourceRootTypes.SOURCES
private fun Module.getNonGeneratedKotlinSourceRoots(): List<VirtualFile> {
val result = mutableListOf<VirtualFile>()
@@ -8,9 +8,7 @@ package org.jetbrains.kotlin.gradle
import com.intellij.openapi.roots.*
import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.KotlinResourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.idea.codeInsight.gradle.ExternalSystemImportingTestCase
import org.jetbrains.kotlin.idea.codeInsight.gradle.MultiplePluginVersionGradleImportingTestCase
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
@@ -65,8 +63,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
platform(CommonIdePlatformKind.Platform)
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
moduleDependency("lib_commonMain", DependencyScope.COMPILE)
sourceFolder("app/src/commonMain/kotlin", KotlinSourceRootType.Source)
sourceFolder("app/src/commonMain/resources", KotlinResourceRootType.Resource)
sourceFolder("app/src/commonMain/kotlin", SourceKotlinRootType)
sourceFolder("app/src/commonMain/resources", ResourceKotlinRootType)
inheritProjectOutput()
}
module("app_commonTest") {
@@ -74,8 +72,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
moduleDependency("lib_commonMain", DependencyScope.TEST)
moduleDependency("app_commonMain", DependencyScope.TEST)
sourceFolder("app/src/commonTest/kotlin", KotlinSourceRootType.TestSource)
sourceFolder("app/src/commonTest/resources", KotlinResourceRootType.TestResource)
sourceFolder("app/src/commonTest/kotlin", TestSourceKotlinRootType)
sourceFolder("app/src/commonTest/resources", TestResourceKotlinRootType)
inheritProjectOutput()
}
module("app_jsMain") {
@@ -85,8 +83,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
moduleDependency("lib_jsMain", DependencyScope.COMPILE)
moduleDependency("lib_commonMain", DependencyScope.COMPILE)
moduleDependency("app_commonMain", DependencyScope.COMPILE)
sourceFolder("app/src/jsMain/kotlin", KotlinSourceRootType.Source)
sourceFolder("app/src/jsMain/resources", KotlinResourceRootType.Resource)
sourceFolder("app/src/jsMain/kotlin", SourceKotlinRootType)
sourceFolder("app/src/jsMain/resources", ResourceKotlinRootType)
outputPath("app/build/classes/kotlin/js/main", true)
}
module("app_jsTest") {
@@ -98,8 +96,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
moduleDependency("app_commonMain", DependencyScope.TEST)
moduleDependency("app_commonTest", DependencyScope.TEST)
moduleDependency("app_jsMain", DependencyScope.TEST)
sourceFolder("app/src/jsTest/kotlin", KotlinSourceRootType.TestSource)
sourceFolder("app/src/jsTest/resources", KotlinResourceRootType.TestResource)
sourceFolder("app/src/jsTest/kotlin", TestSourceKotlinRootType)
sourceFolder("app/src/jsTest/resources", TestResourceKotlinRootType)
outputPath("app/build/classes/kotlin/js/test", false)
}
module("app_jvmMain") {
@@ -157,16 +155,16 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
module("lib_commonMain") {
platform(CommonIdePlatformKind.Platform)
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
sourceFolder("lib/src/commonMain/kotlin", KotlinSourceRootType.Source)
sourceFolder("lib/src/commonMain/resources", KotlinResourceRootType.Resource)
sourceFolder("lib/src/commonMain/kotlin", SourceKotlinRootType)
sourceFolder("lib/src/commonMain/resources", ResourceKotlinRootType)
inheritProjectOutput()
}
module("lib_commonTest") {
platform(CommonIdePlatformKind.Platform)
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
moduleDependency("lib_commonMain", DependencyScope.TEST)
sourceFolder("lib/src/commonTest/kotlin", KotlinSourceRootType.TestSource)
sourceFolder("lib/src/commonTest/resources", KotlinResourceRootType.TestResource)
sourceFolder("lib/src/commonTest/kotlin", TestSourceKotlinRootType)
sourceFolder("lib/src/commonTest/resources", TestResourceKotlinRootType)
inheritProjectOutput()
}
module("lib_jsMain") {
@@ -174,8 +172,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${kotlinVersion()}", DependencyScope.COMPILE)
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
moduleDependency("lib_commonMain", DependencyScope.COMPILE)
sourceFolder("lib/src/jsMain/kotlin", KotlinSourceRootType.Source)
sourceFolder("lib/src/jsMain/resources", KotlinResourceRootType.Resource)
sourceFolder("lib/src/jsMain/kotlin", SourceKotlinRootType)
sourceFolder("lib/src/jsMain/resources", ResourceKotlinRootType)
outputPath("lib/build/classes/kotlin/js/main", true)
}
module("lib_jsTest") {
@@ -185,8 +183,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
moduleDependency("lib_commonMain", DependencyScope.TEST)
moduleDependency("lib_commonTest", DependencyScope.TEST)
moduleDependency("lib_jsMain", DependencyScope.TEST)
sourceFolder("lib/src/jsTest/kotlin", KotlinSourceRootType.TestSource)
sourceFolder("lib/src/jsTest/resources", KotlinResourceRootType.TestResource)
sourceFolder("lib/src/jsTest/kotlin", TestSourceKotlinRootType)
sourceFolder("lib/src/jsTest/resources", TestResourceKotlinRootType)
outputPath("lib/build/classes/kotlin/js/test", false)
}
module("lib_jvmMain") {
@@ -305,14 +303,14 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
module("shared")
module("shared_commonMain") {
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
sourceFolder("shared/src/commonMain/kotlin", KotlinSourceRootType.Source)
sourceFolder("shared/src/commonMain/resources", KotlinResourceRootType.Resource)
sourceFolder("shared/src/commonMain/kotlin", SourceKotlinRootType)
sourceFolder("shared/src/commonMain/resources", ResourceKotlinRootType)
}
module("shared_commonTest") {
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
moduleDependency("shared_commonMain", DependencyScope.TEST)
sourceFolder("shared/src/commonTest/kotlin", KotlinSourceRootType.TestSource)
sourceFolder("shared/src/commonTest/resources", KotlinResourceRootType.TestResource)
sourceFolder("shared/src/commonTest/kotlin", TestSourceKotlinRootType)
sourceFolder("shared/src/commonTest/resources", TestResourceKotlinRootType)
}
module("shared_androidMain") {
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
@@ -340,8 +338,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
libraryDependency("Kotlin/Native $nativeVersion - stdlib", DependencyScope.PROVIDED)
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
moduleDependency("shared_commonMain", DependencyScope.COMPILE)
sourceFolder("shared/src/iOSMain/kotlin", KotlinSourceRootType.Source)
sourceFolder("shared/src/iOSMain/resources", KotlinResourceRootType.Resource)
sourceFolder("shared/src/iOSMain/kotlin", SourceKotlinRootType)
sourceFolder("shared/src/iOSMain/resources", ResourceKotlinRootType)
}
module("shared_iOSTest") {
libraryDependency("Kotlin/Native $nativeVersion - stdlib", DependencyScope.PROVIDED)
@@ -349,8 +347,8 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
moduleDependency("shared_iOSMain", DependencyScope.TEST)
moduleDependency("shared_commonMain", DependencyScope.TEST)
moduleDependency("shared_commonTest", DependencyScope.TEST)
sourceFolder("shared/src/iOSTest/kotlin", KotlinSourceRootType.TestSource)
sourceFolder("shared/src/iOSTest/resources", KotlinResourceRootType.TestResource)
sourceFolder("shared/src/iOSTest/kotlin", TestSourceKotlinRootType)
sourceFolder("shared/src/iOSTest/resources", TestResourceKotlinRootType)
}
}
}
@@ -632,16 +632,16 @@ compileTestKotlin {
assertKotlinSdk("project_main", "project_test")
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
assertAllModulesConfigured()
@@ -696,16 +696,16 @@ compileTestKotlin {
assertAllModulesConfigured()
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -792,16 +792,16 @@ compileTestKotlin {
assertAllModulesConfigured()
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -927,16 +927,16 @@ compileTestKotlin {
assertEquals(CommonLibraryKind, libraries.single { it.name?.contains("kotlin-stdlib-common") == true }.kind)
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -985,16 +985,16 @@ compileTestKotlin {
assertEquals(CommonLibraryKind, (stdlib as LibraryEx).kind)
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -1042,13 +1042,13 @@ compileTestKotlin {
assertEquals(CommonLibraryKind, (stdlib as LibraryEx).kind)
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/main/resources" to KotlinResourceRootType.Resource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project")
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project")
)
}
@@ -1129,16 +1129,16 @@ compileTestKotlin {
}
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -2106,14 +2106,14 @@ compileTestKotlin {
assertKotlinSdk("project_main", "project_test")
Assert.assertEquals(
listOf("file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -632,16 +632,16 @@ compileTestKotlin {
assertKotlinSdk("project_main", "project_test")
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
assertAllModulesConfigured()
@@ -696,16 +696,16 @@ compileTestKotlin {
assertAllModulesConfigured()
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -792,16 +792,16 @@ compileTestKotlin {
assertAllModulesConfigured()
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -927,16 +927,16 @@ compileTestKotlin {
assertEquals(CommonLibraryKind, libraries.single { it.name?.contains("kotlin-stdlib-common") == true }.kind)
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -987,16 +987,16 @@ compileTestKotlin {
assertEquals(CommonLibraryKind, (stdlib as LibraryEx).kind)
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -1044,13 +1044,13 @@ compileTestKotlin {
assertEquals(CommonLibraryKind, (stdlib as LibraryEx).kind)
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/main/resources" to KotlinResourceRootType.Resource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project")
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project")
)
}
@@ -1131,16 +1131,16 @@ compileTestKotlin {
}
Assert.assertEquals(
listOf("file:///src/main/java" to KotlinSourceRootType.Source,
"file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/java" to SourceKotlinRootType,
"file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/java" to KotlinSourceRootType.TestSource,
"file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/java" to TestSourceKotlinRootType,
"file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -2114,14 +2114,14 @@ compileTestKotlin {
assertKotlinSdk("project_main", "project_test")
Assert.assertEquals(
listOf("file:///src/main/kotlin" to KotlinSourceRootType.Source,
"file:///src/main/resources" to KotlinResourceRootType.Resource),
listOf("file:///src/main/kotlin" to SourceKotlinRootType,
"file:///src/main/resources" to ResourceKotlinRootType),
getSourceRootInfos("project_main")
)
Assert.assertEquals(
listOf("file:///src/test/kotlin" to KotlinSourceRootType.TestSource,
"file:///src/test/resources" to KotlinResourceRootType.TestResource),
getSourceRootInfos("project_test")
listOf("file:///src/test/kotlin" to TestSourceKotlinRootType,
"file:///src/test/resources" to TestResourceKotlinRootType),
getSourceRootInfos("project_test")
)
}
@@ -13,8 +13,6 @@ import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaResourceRootProperties>(),
JpsModuleSourceRootType<JavaResourceRootProperties>, KotlinRootType {
object Resource : KotlinResourceRootType(false)
object TestResource : KotlinResourceRootType(true)
override fun createDefaultProperties() =
JpsJavaExtensionService.getInstance().createResourceRootProperties("", false)
@@ -24,4 +22,7 @@ sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<Ja
override fun isForTests() = isTest
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
}
object ResourceKotlinRootType : KotlinResourceRootType(false)
object TestResourceKotlinRootType : KotlinResourceRootType(true)
@@ -13,8 +13,6 @@ import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaResourceRootProperties>(),
JpsModuleSourceRootType<JavaResourceRootProperties>, KotlinRootType {
object Resource : KotlinResourceRootType(false)
object TestResource : KotlinResourceRootType(true)
override fun createDefaultProperties() =
JpsJavaExtensionService.getInstance().createResourceRootProperties("", false)
@@ -22,4 +20,7 @@ sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<Ja
override fun isTestRoot() = isTest
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
}
object ResourceKotlinRootType : KotlinResourceRootType(false)
object TestResourceKotlinRootType : KotlinResourceRootType(true)
@@ -13,12 +13,13 @@ import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinResourceRootType() : JpsElementTypeBase<JavaResourceRootProperties>(),
JpsModuleSourceRootType<JavaResourceRootProperties> {
object Resource : KotlinResourceRootType()
object TestResource : KotlinResourceRootType() {
override fun isForTests() = true
}
override fun createDefaultProperties() =
JpsJavaExtensionService.getInstance().createResourceRootProperties("", false)
}
object ResourceKotlinRootType : KotlinResourceRootType()
object TestResourceKotlinRootType : KotlinResourceRootType() {
override fun isForTests() = true
}
@@ -13,8 +13,6 @@ import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaResourceRootProperties>(),
JpsModuleSourceRootType<JavaResourceRootProperties>, KotlinRootType {
object Resource : KotlinResourceRootType(false)
object TestResource : KotlinResourceRootType(true)
override fun createDefaultProperties() =
JpsJavaExtensionService.getInstance().createResourceRootProperties("", false)
@@ -22,4 +20,7 @@ sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<Ja
override fun isTestRoot() = isTest
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
}
object ResourceKotlinRootType : KotlinResourceRootType(false)
object TestResourceKotlinRootType : KotlinResourceRootType(true)
@@ -12,14 +12,10 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinSourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties>, KotlinRootType {
object Source : KotlinSourceRootType(false)
object TestSource : KotlinSourceRootType(true)
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
companion object {
val ALL_SOURCES = setOf(Source, TestSource)
}
override fun isTestRoot() = isTest
@@ -28,3 +24,8 @@ sealed class KotlinSourceRootType(val isTest: Boolean) : JpsElementTypeBase<Java
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
object SourceKotlinRootType : KotlinSourceRootType(false)
object TestSourceKotlinRootType : KotlinSourceRootType(true)
val ALL_KOTLIN_SOURCE_ROOT_TYPES = setOf(SourceKotlinRootType, TestSourceKotlinRootType)
@@ -12,17 +12,18 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinSourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties>, KotlinRootType {
object Source : KotlinSourceRootType(false)
object TestSource : KotlinSourceRootType(true)
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
companion object {
val ALL_SOURCES = setOf(Source, TestSource)
}
override fun isTestRoot() = isTest
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
object SourceKotlinRootType : KotlinSourceRootType(false)
object TestSourceKotlinRootType : KotlinSourceRootType(true)
val ALL_KOTLIN_SOURCE_ROOT_TYPES = setOf(SourceKotlinRootType, TestSourceKotlinRootType)
@@ -12,16 +12,15 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinSourceRootType() : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties> {
object Source : KotlinSourceRootType()
object TestSource : KotlinSourceRootType() {
override fun isForTests() = true
}
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
companion object {
val ALL_SOURCES = setOf(Source, TestSource)
}
}
object SourceKotlinRootType : KotlinSourceRootType()
object TestSourceKotlinRootType : KotlinSourceRootType() {
override fun isForTests() = true
}
val ALL_KOTLIN_SOURCE_ROOT_TYPES = setOf(SourceKotlinRootType, TestSourceKotlinRootType)
@@ -12,17 +12,20 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinSourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties>, KotlinRootType {
object Source : KotlinSourceRootType(false)
object TestSource : KotlinSourceRootType(true)
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
companion object {
val ALL_SOURCES = setOf(Source, TestSource)
}
override fun isTestRoot() = isTest
fun isForTests() = isTest
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
object SourceKotlinRootType : KotlinSourceRootType(false)
object TestSourceKotlinRootType : KotlinSourceRootType(true)
val ALL_KOTLIN_SOURCE_ROOT_TYPES = setOf(SourceKotlinRootType, TestSourceKotlinRootType)
@@ -0,0 +1,31 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.config
import org.jetbrains.jps.model.ex.JpsElementTypeBase
import org.jetbrains.jps.model.java.JavaSourceRootProperties
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
sealed class KotlinSourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties>, KotlinRootType {
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
override fun isTestRoot() = isTest
fun isForTests() = isTest
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
}
object SourceKotlinRootType : KotlinSourceRootType(false)
object TestSourceKotlinRootType : KotlinSourceRootType(true)
val ALL_KOTLIN_SOURCE_ROOT_TYPES = setOf(SourceKotlinRootType, TestSourceKotlinRootType)
@@ -27,12 +27,12 @@ sealed class KotlinSourceRootPropertiesSerializer(
typeId: String
) : JpsModuleSourceRootPropertiesSerializer<JavaSourceRootProperties>(type, typeId) {
object Source : KotlinSourceRootPropertiesSerializer(
KotlinSourceRootType.Source,
SourceKotlinRootType,
KOTLIN_SOURCE_ROOT_TYPE_ID
)
object TestSource : KotlinSourceRootPropertiesSerializer(
KotlinSourceRootType.TestSource,
TestSourceKotlinRootType,
KOTLIN_TEST_ROOT_TYPE_ID
)
@@ -59,12 +59,12 @@ sealed class KotlinResourceRootPropertiesSerializer(
typeId: String
) : JpsModuleSourceRootPropertiesSerializer<JavaResourceRootProperties>(type, typeId) {
object Resource : KotlinResourceRootPropertiesSerializer(
KotlinResourceRootType.Resource,
ResourceKotlinRootType,
KOTLIN_RESOURCE_ROOT_TYPE_ID
)
object TestResource : KotlinResourceRootPropertiesSerializer(
KotlinResourceRootType.TestResource,
KOTLIN_TEST_RESOURCE_ROOT_TYPE_ID
TestResourceKotlinRootType,
KOTLIN_TEST_RESOURCE_ROOT_TYPE_ID
)
override fun loadProperties(sourceRootTag: Element): JavaResourceRootProperties {
@@ -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
}
}
@@ -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() {
@@ -10,8 +10,8 @@ import com.intellij.openapi.roots.ModuleRootModel
import com.intellij.openapi.roots.OrderEnumerationHandler
import com.intellij.openapi.roots.OrderRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.config.KotlinResourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.config.TestResourceKotlinRootType
import org.jetbrains.kotlin.config.TestSourceKotlinRootType
object KotlinNonJvmOrderEnumerationHandler : OrderEnumerationHandler() {
class Factory : OrderEnumerationHandler.Factory() {
@@ -20,7 +20,7 @@ object KotlinNonJvmOrderEnumerationHandler : OrderEnumerationHandler() {
}
private val kotlinTestSourceRootTypes: Set<JpsModuleSourceRootType<*>> =
setOf(KotlinSourceRootType.TestSource, KotlinResourceRootType.TestResource)
setOf(TestSourceKotlinRootType, TestResourceKotlinRootType)
override fun addCustomModuleRoots(
type: OrderRootType,
@@ -20,8 +20,7 @@ import org.jetbrains.jps.model.java.JavaSourceRootProperties
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRoot
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.idea.framework.KotlinSdkType
private fun JpsModuleSourceRoot.getOrCreateProperties() =
@@ -31,10 +30,10 @@ fun JpsModuleSourceRoot.getMigratedSourceRootTypeWithProperties(): Pair<JpsModul
val currentRootType = rootType
@Suppress("UNCHECKED_CAST")
val newSourceRootType: JpsModuleSourceRootType<JpsElement> = when (currentRootType) {
JavaSourceRootType.SOURCE -> KotlinSourceRootType.Source
JavaSourceRootType.TEST_SOURCE -> KotlinSourceRootType.TestSource
JavaResourceRootType.RESOURCE -> KotlinResourceRootType.Resource
JavaResourceRootType.TEST_RESOURCE -> KotlinResourceRootType.TestResource
JavaSourceRootType.SOURCE -> SourceKotlinRootType
JavaSourceRootType.TEST_SOURCE -> TestSourceKotlinRootType
JavaResourceRootType.RESOURCE -> ResourceKotlinRootType
JavaResourceRootType.TEST_RESOURCE -> TestResourceKotlinRootType
else -> return null
} as JpsModuleSourceRootType<JpsElement>
return newSourceRootType to getOrCreateProperties()
@@ -57,7 +56,7 @@ fun getKotlinAwareDestinationSourceRoots(project: Project): List<VirtualFile> {
}
private val KOTLIN_AWARE_SOURCE_ROOT_TYPES: Set<JpsModuleSourceRootType<JavaSourceRootProperties>> =
JavaModuleSourceRootTypes.SOURCES + KotlinSourceRootType.ALL_SOURCES
JavaModuleSourceRootTypes.SOURCES + ALL_KOTLIN_SOURCE_ROOT_TYPES
private fun Module.collectKotlinAwareDestinationSourceRoots(): List<VirtualFile> {
return rootManager
@@ -8,19 +8,18 @@ package org.jetbrains.kotlin.idea.roots.ui
import com.intellij.openapi.roots.ContentEntry
import com.intellij.openapi.roots.ui.configuration.*
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.config.KotlinResourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.config.*
class KotlinContentEntriesEditor(
moduleName: String,
state: ModuleConfigurationState
) : CommonContentEntriesEditor(
moduleName,
state,
KotlinSourceRootType.Source,
KotlinSourceRootType.TestSource,
KotlinResourceRootType.Resource,
KotlinResourceRootType.TestResource
moduleName,
state,
SourceKotlinRootType,
TestSourceKotlinRootType,
ResourceKotlinRootType,
TestResourceKotlinRootType
) {
private val javaEditor by lazy {
object : JavaContentEntriesEditor(moduleName, state) {
@@ -10,31 +10,30 @@ import org.jetbrains.jps.model.JpsElement
import org.jetbrains.jps.model.java.JavaResourceRootProperties
import org.jetbrains.jps.model.java.JavaSourceRootProperties
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.config.KotlinResourceRootType
import org.jetbrains.kotlin.config.KotlinSourceRootType
import org.jetbrains.kotlin.config.*
sealed class KotlinModuleSourceRootEditHandler<Data : JpsElement>(
rootType: JpsModuleSourceRootType<Data>,
private val delegate: ModuleSourceRootEditHandler<Data>
) : ModuleSourceRootEditHandler<Data>(rootType) {
class Source : KotlinModuleSourceRootEditHandler<JavaSourceRootProperties>(
KotlinSourceRootType.Source,
JavaModuleSourceRootEditHandler()
SourceKotlinRootType,
JavaModuleSourceRootEditHandler()
)
class TestSource : KotlinModuleSourceRootEditHandler<JavaSourceRootProperties>(
KotlinSourceRootType.TestSource,
JavaTestSourceRootEditHandler()
TestSourceKotlinRootType,
JavaTestSourceRootEditHandler()
)
class Resource : KotlinModuleSourceRootEditHandler<JavaResourceRootProperties>(
KotlinResourceRootType.Resource,
JavaResourceRootEditHandler()
ResourceKotlinRootType,
JavaResourceRootEditHandler()
)
class TestResource : KotlinModuleSourceRootEditHandler<JavaResourceRootProperties>(
KotlinResourceRootType.TestResource,
JavaTestResourceRootEditHandler()
TestResourceKotlinRootType,
JavaTestResourceRootEditHandler()
)
override fun getUnmarkRootButtonText() = delegate.unmarkRootButtonText
@@ -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