[JS IR] Pass forward -Xir-property-lazy-initialization option
Pass forward -Xir-property-lazy-initialization option for the incremental cache. ^KT-50175 Fixed
This commit is contained in:
committed by
Space
parent
2f853175c7
commit
59173baf5a
+45
@@ -124,6 +124,51 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
|
||||
build("assemble")
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("Check IR incremental cache invalidation by compiler args")
|
||||
@GradleTest
|
||||
fun testJsIrIncrementalCacheInvalidationByArgs(gradleVersion: GradleVersion) {
|
||||
project("kotlin2JsIrICProject", gradleVersion) {
|
||||
val buildConfig = buildGradleKts.readText()
|
||||
|
||||
fun setLazyInitializationArg(value: Boolean) {
|
||||
buildGradleKts.writeText(buildConfig)
|
||||
buildGradleKts.appendText(
|
||||
"""
|
||||
|
|
||||
|tasks.named<org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink>("compileDevelopmentExecutableKotlinJs") {
|
||||
| kotlinOptions {
|
||||
| freeCompilerArgs += "-Xir-property-lazy-initialization=$value"
|
||||
| }
|
||||
|}
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
fun String.testScriptOutLines() = this.lines().mapNotNull {
|
||||
val trimmed = it.removePrefix(">>> TEST OUT: ")
|
||||
if (trimmed == it) null else trimmed
|
||||
}
|
||||
|
||||
// -Xir-property-lazy-initialization default is true
|
||||
build("nodeRun") {
|
||||
assertTasksExecuted(":compileDevelopmentExecutableKotlinJs")
|
||||
assertEquals(listOf("Hello, Gradle."), output.testScriptOutLines())
|
||||
}
|
||||
|
||||
setLazyInitializationArg(false)
|
||||
build("nodeRun") {
|
||||
assertTasksExecuted(":compileDevelopmentExecutableKotlinJs")
|
||||
assertEquals(listOf("TOP LEVEL!", "Hello, Gradle."), output.testScriptOutLines())
|
||||
}
|
||||
|
||||
setLazyInitializationArg(true)
|
||||
build("nodeRun") {
|
||||
assertTasksExecuted(":compileDevelopmentExecutableKotlinJs")
|
||||
assertEquals(listOf("Hello, Gradle."), output.testScriptOutLines())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JsGradlePluginTests
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
plugins {
|
||||
kotlin("js")
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
version = "1.0"
|
||||
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
}
|
||||
|
||||
kotlin {
|
||||
js(IR) {
|
||||
binaries.executable()
|
||||
nodejs {}
|
||||
}
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
kotlin.code.style=official
|
||||
kotlin.incremental.js.ir=true
|
||||
kotlin.incremental.js.klib=true
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
fun main() {
|
||||
println(greeting("Gradle"))
|
||||
}
|
||||
|
||||
fun greeting(name: String) = ">>> TEST OUT: Hello, $name."
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
@JsExport
|
||||
val topLevelForLazy = { println(">>> TEST OUT: TOP LEVEL!"); 0 }()
|
||||
Reference in New Issue
Block a user