[JS IR] Trigger klib rebuild after removing a dependency

^KT-50503 Fixed
This commit is contained in:
Alexander Korepanov
2022-09-07 19:50:07 +02:00
committed by Space
parent 1464f33c5d
commit 09add47777
10 changed files with 86 additions and 2 deletions
@@ -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)
}
}
}
@@ -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()
}
}
}
}
@@ -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) {
@@ -0,0 +1,10 @@
plugins {
kotlin("js")
}
kotlin {
js {
browser {}
binaries.executable()
}
}
@@ -0,0 +1,5 @@
package com.example
fun main() {
println("Hello, World!")
}
@@ -0,0 +1,13 @@
plugins {
kotlin("js").apply(false)
}
group = "com.example"
version = "1.0"
allprojects {
repositories {
mavenLocal()
mavenCentral()
}
}
@@ -0,0 +1,2 @@
kotlin.incremental.js.klib=true
kotlin.incremental.js.ir=true
@@ -0,0 +1,11 @@
plugins {
kotlin("js")
}
kotlin {
js {
useCommonJs()
browser {
}
}
}
@@ -0,0 +1,4 @@
rootProject.name = "kotlin-js-ir-ic-remove-unused-dep"
include("lib")
include("app")