[JS IR] Trigger klib rebuild after removing a dependency
^KT-50503 Fixed
This commit is contained in:
committed by
Space
parent
1464f33c5d
commit
09add47777
+3
-1
@@ -16,6 +16,8 @@ class DirtyFilesContainer(
|
||||
) {
|
||||
private val myDirtyFiles = HashSet<File>()
|
||||
|
||||
fun isEmpty() = myDirtyFiles.isEmpty()
|
||||
|
||||
fun toMutableLinkedSet(): LinkedHashSet<File> =
|
||||
LinkedHashSet(myDirtyFiles)
|
||||
|
||||
@@ -51,4 +53,4 @@ class DirtyFilesContainer(
|
||||
// reason is null, because files are reported in mapClassesFqNamesToFiles
|
||||
add(dirtyFilesFromFqNames, reason = null)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-1
@@ -153,6 +153,10 @@ class IncrementalJsCompilerRunner(
|
||||
dirtyFiles.addByDirtySymbols(removedClassesChanges.dirtyLookupSymbols)
|
||||
dirtyFiles.addByDirtyClasses(removedClassesChanges.dirtyClassesFqNames)
|
||||
dirtyFiles.addByDirtyClasses(removedClassesChanges.dirtyClassesFqNamesForceRecompile)
|
||||
|
||||
if (dirtyFiles.isEmpty() && changedFiles.removed.isNotEmpty()) {
|
||||
return CompilationMode.Rebuild(BuildAttribute.DEP_CHANGE_REMOVED_ENTRY)
|
||||
}
|
||||
return CompilationMode.Incremental(dirtyFiles)
|
||||
}
|
||||
|
||||
@@ -259,4 +263,4 @@ class IncrementalJsCompilerRunner(
|
||||
return newDirtySources.isNotEmpty()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+28
@@ -219,6 +219,34 @@ class Kotlin2JsIrGradlePluginIT : AbstractKotlin2JsGradlePluginIT(true) {
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("Remove unused dependency from klib")
|
||||
@GradleTest
|
||||
fun testJsIrIncrementalKlibRemoveUnusedDependency(gradleVersion: GradleVersion) {
|
||||
project("kotlin-js-ir-ic-remove-unused-dep", gradleVersion) {
|
||||
val appBuildGradleKts = subProject("app").buildGradleKts
|
||||
|
||||
val buildGradleKtsWithoutDependency = appBuildGradleKts.readText()
|
||||
appBuildGradleKts.appendText(
|
||||
"""
|
||||
|
|
||||
|dependencies {
|
||||
| implementation(project(":lib"))
|
||||
|}
|
||||
|
|
||||
""".trimMargin()
|
||||
)
|
||||
|
||||
build("compileDevelopmentExecutableKotlinJs") {
|
||||
assertTasksExecuted(":app:compileDevelopmentExecutableKotlinJs")
|
||||
}
|
||||
|
||||
appBuildGradleKts.writeText(buildGradleKtsWithoutDependency)
|
||||
build("compileDevelopmentExecutableKotlinJs") {
|
||||
assertTasksExecuted(":app:compileDevelopmentExecutableKotlinJs")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@DisplayName("falsify kotlin js compiler args")
|
||||
@GradleTest
|
||||
fun testFalsifyKotlinJsCompilerArgs(gradleVersion: GradleVersion) {
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
plugins {
|
||||
kotlin("js")
|
||||
}
|
||||
|
||||
kotlin {
|
||||
js {
|
||||
browser {}
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package com.example
|
||||
|
||||
fun main() {
|
||||
println("Hello, World!")
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
plugins {
|
||||
kotlin("js").apply(false)
|
||||
}
|
||||
|
||||
group = "com.example"
|
||||
version = "1.0"
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
kotlin.incremental.js.klib=true
|
||||
kotlin.incremental.js.ir=true
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
plugins {
|
||||
kotlin("js")
|
||||
}
|
||||
|
||||
kotlin {
|
||||
js {
|
||||
useCommonJs()
|
||||
browser {
|
||||
}
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package com.example
|
||||
|
||||
fun foo(): Int {
|
||||
return 42
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
rootProject.name = "kotlin-js-ir-ic-remove-unused-dep"
|
||||
|
||||
include("lib")
|
||||
include("app")
|
||||
Reference in New Issue
Block a user