Fix "Kotlin not configured" issue in common MPP tests.
#KT-27718 Fixed
This commit is contained in:
@@ -7,14 +7,19 @@ package org.jetbrains.kotlin.config
|
|||||||
|
|
||||||
import org.jetbrains.jps.model.ex.JpsElementTypeBase
|
import org.jetbrains.jps.model.ex.JpsElementTypeBase
|
||||||
import org.jetbrains.jps.model.java.JavaResourceRootProperties
|
import org.jetbrains.jps.model.java.JavaResourceRootProperties
|
||||||
|
import org.jetbrains.jps.model.java.JavaResourceRootType
|
||||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
|
|
||||||
sealed class KotlinResourceRootType : JpsElementTypeBase<JavaResourceRootProperties>(),
|
sealed class KotlinResourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaResourceRootProperties>(),
|
||||||
JpsModuleSourceRootType<JavaResourceRootProperties> {
|
JpsModuleSourceRootType<JavaResourceRootProperties>, KotlinRootType {
|
||||||
object Resource : KotlinResourceRootType()
|
object Resource : KotlinResourceRootType(false)
|
||||||
object TestResource : KotlinResourceRootType()
|
object TestResource : KotlinResourceRootType(true)
|
||||||
|
|
||||||
override fun createDefaultProperties() =
|
override fun createDefaultProperties() =
|
||||||
JpsJavaExtensionService.getInstance().createResourceRootProperties("", false)
|
JpsJavaExtensionService.getInstance().createResourceRootProperties("", false)
|
||||||
|
|
||||||
|
override fun isTestRoot() = isTest
|
||||||
|
|
||||||
|
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package org.jetbrains.kotlin.config
|
||||||
|
|
||||||
|
import org.jetbrains.jps.model.java.JavaResourceRootType
|
||||||
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
|
|
||||||
|
interface KotlinRootType {
|
||||||
|
fun isTestRoot(): Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
//Hack required to fix critical bug KT-27718 it should be removed after support of source root types other than JavaSourceRootType in Idea Core
|
||||||
|
fun isSameRootType(kotlinRoot: KotlinRootType, other: Any?): Boolean {
|
||||||
|
if (kotlinRoot.isTestRoot()) {
|
||||||
|
if (other is JavaResourceRootType || other is JavaSourceRootType) {
|
||||||
|
val stack = Thread.currentThread().stackTrace
|
||||||
|
if (stack.size > 2 && "isTestSource" == stack[2].methodName && "com.intellij.openapi.roots.impl.SourceFolderImpl" == stack[2].className) {
|
||||||
|
if (JavaResourceRootType.TEST_RESOURCE == other) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
@@ -7,17 +7,22 @@ package org.jetbrains.kotlin.config
|
|||||||
|
|
||||||
import org.jetbrains.jps.model.ex.JpsElementTypeBase
|
import org.jetbrains.jps.model.ex.JpsElementTypeBase
|
||||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties
|
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.java.JpsJavaExtensionService
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
|
|
||||||
sealed class KotlinSourceRootType : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties> {
|
sealed class KotlinSourceRootType(val isTest: Boolean) : JpsElementTypeBase<JavaSourceRootProperties>(), JpsModuleSourceRootType<JavaSourceRootProperties>, KotlinRootType {
|
||||||
object Source : KotlinSourceRootType()
|
object Source : KotlinSourceRootType(false)
|
||||||
object TestSource : KotlinSourceRootType()
|
object TestSource : KotlinSourceRootType(true)
|
||||||
|
|
||||||
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
|
override fun createDefaultProperties() = JpsJavaExtensionService.getInstance().createSourceRootProperties("")
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val ALL_SOURCES = setOf(Source, TestSource)
|
val ALL_SOURCES = setOf(Source, TestSource)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun isTestRoot() = isTest
|
||||||
|
|
||||||
|
override fun equals(other: Any?) = if (super.equals(other)) true else isSameRootType(this, other)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user