From f18a3f7fa9670efe12fac4c64f3dd86d5d7b2757 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Thu, 10 Oct 2019 17:38:49 +0300 Subject: [PATCH] Several more librry resolver tweaks. Made library builder a member function. Moved resolverByName() back to Native for now --- .../kotlin/ir/backend/js/JsLibraryResolver.kt | 12 ++++--- .../kotlin/library/SearchPathResolver.kt | 32 ++++--------------- 2 files changed, 14 insertions(+), 30 deletions(-) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt index 4240f1f87f5..a1ac2a42646 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.ir.backend.js import org.jetbrains.kotlin.konan.KonanVersion +import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.library.KotlinAbiVersion import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.KotlinLibraryProperResolverWithAttributes @@ -14,7 +15,6 @@ import org.jetbrains.kotlin.library.impl.createKotlinLibrary import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.library.resolver.impl.libraryResolver import org.jetbrains.kotlin.util.Logger -import java.io.File class JsLibraryResolver( repositories: List, @@ -33,9 +33,11 @@ class JsLibraryResolver( distributionKlib, localKotlinDir, skipCurrentDir, - logger, - ::createKotlinLibrary -) + logger +) { + // Stick with the default KotlinLibrary for now. + override fun libraryBuilder(file: File, isDefault: Boolean) = createKotlinLibrary(file, isDefault) +} // TODO: This is a temporary set of library resolver policies for js compiler. fun jsResolveLibraries(libraries: List, logger: Logger): KotlinLibraryResolveResult { @@ -60,4 +62,4 @@ fun jsResolveLibraries(libraries: List, logger: Logger): KotlinLibraryRe noEndorsedLibs = true ) return resolvedLibraries -} +} \ No newline at end of file diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt index 446e4874ee3..960d1f45ceb 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt @@ -21,33 +21,14 @@ interface SearchPathResolverWithAttributes: SearchPathResolver val knownCompilerVersions: List? } -fun resolverByName( - repositories: List, - directLibs: List = emptyList(), - distributionKlib: String? = null, - localKotlinDir: String? = null, - skipCurrentDir: Boolean = false, - logger: Logger -): SearchPathResolver = - KotlinLibrarySearchPathResolver( - repositories, - directLibs, - distributionKlib, - localKotlinDir, - skipCurrentDir, - logger, - ::createKotlinLibrary - ) - // This is a simple library resolver that only cares for file names. -open class KotlinLibrarySearchPathResolver( +abstract class KotlinLibrarySearchPathResolver( repositories: List, directLibs: List, val distributionKlib: String?, val localKotlinDir: String?, val skipCurrentDir: Boolean, - override val logger: Logger, - open val libraryBuilder: (File, Boolean) -> L + override val logger: Logger ) : SearchPathResolver { val localHead: File? @@ -63,6 +44,8 @@ open class KotlinLibrarySearchPathResolver( private val repoRoots: List by lazy { repositories.map { File(it) } } + abstract fun libraryBuilder(file: File, isDefault: Boolean): L + private val directLibraries: List by lazy { directLibs.mapNotNull { found(File(it)) }.map { libraryBuilder(it, false) } } @@ -179,7 +162,7 @@ fun KonanVersion.compatible(other: KonanVersion) = // This is a library resolver aware of attributes shared between platforms, // such as abi version. // JS and Native resolvers are inherited from this one. -open class KotlinLibraryProperResolverWithAttributes( +abstract class KotlinLibraryProperResolverWithAttributes( repositories: List, directLibs: List, override val knownAbiVersions: List?, @@ -187,9 +170,8 @@ open class KotlinLibraryProperResolverWithAttributes( distributionKlib: String?, localKotlinDir: String?, skipCurrentDir: Boolean, - override val logger: Logger, - override val libraryBuilder: (File, Boolean) -> L -) : KotlinLibrarySearchPathResolver(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger, libraryBuilder), + override val logger: Logger +) : KotlinLibrarySearchPathResolver(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger), SearchPathResolverWithAttributes { override fun libraryMatch(candidate: L, unresolved: UnresolvedLibrary): Boolean {