[JS IR] Use util-klib tool to filter klib in JS IR gradle plugin

This commit is contained in:
Svyatoslav Kuzmich
2020-01-28 19:14:39 +03:00
parent e3225469b5
commit 091e8495cd
3 changed files with 15 additions and 4 deletions
@@ -262,6 +262,16 @@ fun createKotlinLibraryComponents(
fun createKotlinLibrary(libraryFile: File): KotlinLibrary = resolveSingleFileKlib(libraryFile) fun createKotlinLibrary(libraryFile: File): KotlinLibrary = resolveSingleFileKlib(libraryFile)
fun isKotlinLibrary(libraryFile: File): Boolean = try {
createKotlinLibrary(libraryFile)
true
} catch (e: Throwable) {
false
}
fun isKotlinLibrary(libraryFile: java.io.File): Boolean =
isKotlinLibrary(File(libraryFile.absolutePath))
val File.isPre_1_4_Library: Boolean val File.isPre_1_4_Library: Boolean
get() { get() {
val baseAccess = BaseLibraryAccess<KotlinLibraryLayout>(this, null) val baseAccess = BaseLibraryAccess<KotlinLibraryLayout>(this, null)
@@ -244,7 +244,7 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) :
assertSuccessful() assertSuccessful()
checkIrCompilationMessage() checkIrCompilationMessage()
if (irBackend) { if (irBackend) {
assertFileExists(kotlinClassesDir() + "manifest") assertFileExists(kotlinClassesDir() + "default/manifest")
} else { } else {
assertFileExists(kotlinClassesDir() + "kotlin2JsNoOutputFileProject.js") assertFileExists(kotlinClassesDir() + "kotlin2JsNoOutputFileProject.js")
} }
@@ -265,7 +265,7 @@ abstract class AbstractKotlin2JsGradlePluginIT(private val irBackend: Boolean) :
":compileTestKotlin2Js" ":compileTestKotlin2Js"
) )
if (irBackend) { if (irBackend) {
assertFileExists("build/kotlin2js/main/manifest") assertFileExists("build/kotlin2js/main/default/manifest")
} else { } else {
assertFileExists("build/kotlin2js/main/module.js") assertFileExists("build/kotlin2js/main/module.js")
} }
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.ownModuleName
import org.jetbrains.kotlin.gradle.report.BuildReportMode import org.jetbrains.kotlin.gradle.report.BuildReportMode
import org.jetbrains.kotlin.gradle.utils.* import org.jetbrains.kotlin.gradle.utils.*
import org.jetbrains.kotlin.incremental.ChangedFiles import org.jetbrains.kotlin.incremental.ChangedFiles
import org.jetbrains.kotlin.library.impl.isKotlinLibrary
import org.jetbrains.kotlin.utils.LibraryUtils import org.jetbrains.kotlin.utils.LibraryUtils
import java.io.File import java.io.File
import javax.inject.Inject import javax.inject.Inject
@@ -547,7 +548,7 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
} }
private fun isHybridKotlinJsLibrary(file: File): Boolean = private fun isHybridKotlinJsLibrary(file: File): Boolean =
LibraryUtils.isKotlinJavascriptLibrary(file) && LibraryUtils.isKotlinJavascriptIrLibrary(file) LibraryUtils.isKotlinJavascriptLibrary(file) && isKotlinLibrary(file)
private fun KotlinJsOptions.isPreIrBackendDisabled(): Boolean = private fun KotlinJsOptions.isPreIrBackendDisabled(): Boolean =
listOf( listOf(
@@ -570,7 +571,7 @@ open class Kotlin2JsCompile : AbstractKotlinCompile<K2JSCompilerArguments>(), Ko
private val libraryFilter: (File) -> Boolean private val libraryFilter: (File) -> Boolean
get() = if (kotlinOptions.isIrBackendEnabled()) { get() = if (kotlinOptions.isIrBackendEnabled()) {
if (kotlinOptions.isPreIrBackendDisabled()) { if (kotlinOptions.isPreIrBackendDisabled()) {
LibraryUtils::isKotlinJavascriptIrLibrary ::isKotlinLibrary
} else { } else {
::isHybridKotlinJsLibrary ::isHybridKotlinJsLibrary
} }