7480befe32
Using of Kotlin reflection for simple operations like bean management is very slow First time initialization time: 261 ms for `copyBean(K2JVMCompilerArguments())` Subsequent calls of `copyBean(K2JVMCompilerArguments())` take 1.7 ms per call Unfortunately compiler argument handling is also used in Kotlin IntelliJ plugin to parse facet settings. Big projects may have thousands of Kotlin facets The same `ArgumentUtilsKt.copyProperties` frame is seen across various freezes: IDEA-252440 2-3 minutes freeze on Kotlin project reimporting in last 203 eap IDEA-253107 A lot of short freezes (1-3 sec) during Kotlin project development KTIJ-23501 Make main run configuration detection lighter KTIJ-22435 Unresponsive UI with 100% cpu Reflection issue: KT-56358 KClasses.getMemberProperties takes too much time This commit replaces all reflection stuff with a simple code generation Now `K2JVMCompilerArguments().clone()` goes to hard-to-measure time
43 lines
1.3 KiB
Kotlin
43 lines
1.3 KiB
Kotlin
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
|
|
|
|
plugins {
|
|
kotlin("jvm")
|
|
id("jps-compatible")
|
|
}
|
|
|
|
dependencies {
|
|
api(project(":core:util.runtime"))
|
|
api(project(":compiler:config"))
|
|
api(project(":compiler:config.jvm"))
|
|
api(project(":js:js.config"))
|
|
api(project(":native:kotlin-native-utils"))
|
|
api(project(":compiler:plugin-api"))
|
|
compileOnly(commonDependency("org.jetbrains.kotlin:kotlin-reflect")) { isTransitive = false }
|
|
compileOnly(intellijCore())
|
|
compileOnly(commonDependency("com.google.guava:guava"))
|
|
compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all"))
|
|
}
|
|
|
|
sourceSets {
|
|
"main" {
|
|
projectDefault()
|
|
generatedDir()
|
|
}
|
|
"test" {}
|
|
}
|
|
|
|
optInToExperimentalCompilerApi()
|
|
|
|
tasks.getByName<Jar>("jar") {
|
|
//excludes unused bunch files
|
|
exclude("META-INF/extensions/*.xml.**")
|
|
}
|
|
|
|
// 1.9 level breaks Kotlin Gradle plugins via changes in enums (KT-48872)
|
|
// We limit api and LV until KGP will stop using Kotlin compiler directly (KT-56574)
|
|
tasks.withType<KotlinCompilationTask<*>>().configureEach {
|
|
compilerOptions.apiVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead()
|
|
compilerOptions.languageVersion.value(KotlinVersion.KOTLIN_1_8).finalizeValueOnRead()
|
|
}
|