[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>()
|
private val myDirtyFiles = HashSet<File>()
|
||||||
|
|
||||||
|
fun isEmpty() = myDirtyFiles.isEmpty()
|
||||||
|
|
||||||
fun toMutableLinkedSet(): LinkedHashSet<File> =
|
fun toMutableLinkedSet(): LinkedHashSet<File> =
|
||||||
LinkedHashSet(myDirtyFiles)
|
LinkedHashSet(myDirtyFiles)
|
||||||
|
|
||||||
@@ -51,4 +53,4 @@ class DirtyFilesContainer(
|
|||||||
// reason is null, because files are reported in mapClassesFqNamesToFiles
|
// reason is null, because files are reported in mapClassesFqNamesToFiles
|
||||||
add(dirtyFilesFromFqNames, reason = null)
|
add(dirtyFilesFromFqNames, reason = null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-1
@@ -153,6 +153,10 @@ class IncrementalJsCompilerRunner(
|
|||||||
dirtyFiles.addByDirtySymbols(removedClassesChanges.dirtyLookupSymbols)
|
dirtyFiles.addByDirtySymbols(removedClassesChanges.dirtyLookupSymbols)
|
||||||
dirtyFiles.addByDirtyClasses(removedClassesChanges.dirtyClassesFqNames)
|
dirtyFiles.addByDirtyClasses(removedClassesChanges.dirtyClassesFqNames)
|
||||||
dirtyFiles.addByDirtyClasses(removedClassesChanges.dirtyClassesFqNamesForceRecompile)
|
dirtyFiles.addByDirtyClasses(removedClassesChanges.dirtyClassesFqNamesForceRecompile)
|
||||||
|
|
||||||
|
if (dirtyFiles.isEmpty() && changedFiles.removed.isNotEmpty()) {
|
||||||
|
return CompilationMode.Rebuild(BuildAttribute.DEP_CHANGE_REMOVED_ENTRY)
|
||||||
|
}
|
||||||
return CompilationMode.Incremental(dirtyFiles)
|
return CompilationMode.Incremental(dirtyFiles)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,4 +263,4 @@ class IncrementalJsCompilerRunner(
|
|||||||
return newDirtySources.isNotEmpty()
|
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")
|
@DisplayName("falsify kotlin js compiler args")
|
||||||
@GradleTest
|
@GradleTest
|
||||||
fun testFalsifyKotlinJsCompilerArgs(gradleVersion: GradleVersion) {
|
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