Several more librry resolver tweaks.
Made library builder a member function. Moved resolverByName() back to Native for now
This commit is contained in:
committed by
alexander-gorshenev
parent
55805ddeb8
commit
f18a3f7fa9
+7
-5
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.backend.js
|
package org.jetbrains.kotlin.ir.backend.js
|
||||||
|
|
||||||
import org.jetbrains.kotlin.konan.KonanVersion
|
import org.jetbrains.kotlin.konan.KonanVersion
|
||||||
|
import org.jetbrains.kotlin.konan.file.File
|
||||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
||||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||||
import org.jetbrains.kotlin.library.KotlinLibraryProperResolverWithAttributes
|
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.KotlinLibraryResolveResult
|
||||||
import org.jetbrains.kotlin.library.resolver.impl.libraryResolver
|
import org.jetbrains.kotlin.library.resolver.impl.libraryResolver
|
||||||
import org.jetbrains.kotlin.util.Logger
|
import org.jetbrains.kotlin.util.Logger
|
||||||
import java.io.File
|
|
||||||
|
|
||||||
class JsLibraryResolver(
|
class JsLibraryResolver(
|
||||||
repositories: List<String>,
|
repositories: List<String>,
|
||||||
@@ -33,9 +33,11 @@ class JsLibraryResolver(
|
|||||||
distributionKlib,
|
distributionKlib,
|
||||||
localKotlinDir,
|
localKotlinDir,
|
||||||
skipCurrentDir,
|
skipCurrentDir,
|
||||||
logger,
|
logger
|
||||||
::createKotlinLibrary
|
) {
|
||||||
)
|
// 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.
|
// TODO: This is a temporary set of library resolver policies for js compiler.
|
||||||
fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryResolveResult {
|
fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryResolveResult {
|
||||||
@@ -60,4 +62,4 @@ fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryRe
|
|||||||
noEndorsedLibs = true
|
noEndorsedLibs = true
|
||||||
)
|
)
|
||||||
return resolvedLibraries
|
return resolvedLibraries
|
||||||
}
|
}
|
||||||
@@ -21,33 +21,14 @@ interface SearchPathResolverWithAttributes<L: KotlinLibrary>: SearchPathResolver
|
|||||||
val knownCompilerVersions: List<KonanVersion>?
|
val knownCompilerVersions: List<KonanVersion>?
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resolverByName(
|
|
||||||
repositories: List<String>,
|
|
||||||
directLibs: List<String> = emptyList(),
|
|
||||||
distributionKlib: String? = null,
|
|
||||||
localKotlinDir: String? = null,
|
|
||||||
skipCurrentDir: Boolean = false,
|
|
||||||
logger: Logger
|
|
||||||
): SearchPathResolver<KotlinLibrary> =
|
|
||||||
KotlinLibrarySearchPathResolver(
|
|
||||||
repositories,
|
|
||||||
directLibs,
|
|
||||||
distributionKlib,
|
|
||||||
localKotlinDir,
|
|
||||||
skipCurrentDir,
|
|
||||||
logger,
|
|
||||||
::createKotlinLibrary
|
|
||||||
)
|
|
||||||
|
|
||||||
// This is a simple library resolver that only cares for file names.
|
// This is a simple library resolver that only cares for file names.
|
||||||
open class KotlinLibrarySearchPathResolver<L: KotlinLibrary>(
|
abstract class KotlinLibrarySearchPathResolver<L: KotlinLibrary>(
|
||||||
repositories: List<String>,
|
repositories: List<String>,
|
||||||
directLibs: List<String>,
|
directLibs: List<String>,
|
||||||
val distributionKlib: String?,
|
val distributionKlib: String?,
|
||||||
val localKotlinDir: String?,
|
val localKotlinDir: String?,
|
||||||
val skipCurrentDir: Boolean,
|
val skipCurrentDir: Boolean,
|
||||||
override val logger: Logger,
|
override val logger: Logger
|
||||||
open val libraryBuilder: (File, Boolean) -> L
|
|
||||||
) : SearchPathResolver<L> {
|
) : SearchPathResolver<L> {
|
||||||
|
|
||||||
val localHead: File?
|
val localHead: File?
|
||||||
@@ -63,6 +44,8 @@ open class KotlinLibrarySearchPathResolver<L: KotlinLibrary>(
|
|||||||
|
|
||||||
private val repoRoots: List<File> by lazy { repositories.map { File(it) } }
|
private val repoRoots: List<File> by lazy { repositories.map { File(it) } }
|
||||||
|
|
||||||
|
abstract fun libraryBuilder(file: File, isDefault: Boolean): L
|
||||||
|
|
||||||
private val directLibraries: List<KotlinLibrary> by lazy {
|
private val directLibraries: List<KotlinLibrary> by lazy {
|
||||||
directLibs.mapNotNull { found(File(it)) }.map { libraryBuilder(it, false) }
|
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,
|
// This is a library resolver aware of attributes shared between platforms,
|
||||||
// such as abi version.
|
// such as abi version.
|
||||||
// JS and Native resolvers are inherited from this one.
|
// JS and Native resolvers are inherited from this one.
|
||||||
open class KotlinLibraryProperResolverWithAttributes<L: KotlinLibrary>(
|
abstract class KotlinLibraryProperResolverWithAttributes<L: KotlinLibrary>(
|
||||||
repositories: List<String>,
|
repositories: List<String>,
|
||||||
directLibs: List<String>,
|
directLibs: List<String>,
|
||||||
override val knownAbiVersions: List<KotlinAbiVersion>?,
|
override val knownAbiVersions: List<KotlinAbiVersion>?,
|
||||||
@@ -187,9 +170,8 @@ open class KotlinLibraryProperResolverWithAttributes<L: KotlinLibrary>(
|
|||||||
distributionKlib: String?,
|
distributionKlib: String?,
|
||||||
localKotlinDir: String?,
|
localKotlinDir: String?,
|
||||||
skipCurrentDir: Boolean,
|
skipCurrentDir: Boolean,
|
||||||
override val logger: Logger,
|
override val logger: Logger
|
||||||
override val libraryBuilder: (File, Boolean) -> L
|
) : KotlinLibrarySearchPathResolver<L>(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger),
|
||||||
) : KotlinLibrarySearchPathResolver<L>(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger, libraryBuilder),
|
|
||||||
SearchPathResolverWithAttributes<L>
|
SearchPathResolverWithAttributes<L>
|
||||||
{
|
{
|
||||||
override fun libraryMatch(candidate: L, unresolved: UnresolvedLibrary): Boolean {
|
override fun libraryMatch(candidate: L, unresolved: UnresolvedLibrary): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user