[FIR] Use KlibBasedSymbolProvider in FirCommonSessionFactory
Unify logic of KLib resolving (Common and JS) ^KT-56354 Fixed
This commit is contained in:
committed by
Space Team
parent
d829f8b684
commit
de5b475f7a
-81
@@ -1,81 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.ir.backend.js
|
||||
|
||||
import org.jetbrains.kotlin.konan.file.File
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.KotlinLibraryProperResolverWithAttributes
|
||||
import org.jetbrains.kotlin.library.UnresolvedLibrary
|
||||
import org.jetbrains.kotlin.library.impl.createKotlinLibraryComponents
|
||||
import org.jetbrains.kotlin.library.metadata.resolver.KotlinLibraryResolveResult
|
||||
import org.jetbrains.kotlin.library.metadata.resolver.KotlinLibraryResolver
|
||||
import org.jetbrains.kotlin.library.metadata.resolver.impl.libraryResolver
|
||||
import org.jetbrains.kotlin.util.Logger
|
||||
|
||||
class JsLibraryResolver(
|
||||
repositories: List<String>,
|
||||
directLibs: List<String>,
|
||||
distributionKlib: String?,
|
||||
localKotlinDir: String?,
|
||||
skipCurrentDir: Boolean,
|
||||
logger: Logger
|
||||
) : KotlinLibraryProperResolverWithAttributes<KotlinLibrary>(
|
||||
repositories,
|
||||
directLibs,
|
||||
distributionKlib,
|
||||
localKotlinDir,
|
||||
skipCurrentDir,
|
||||
logger,
|
||||
emptyList()
|
||||
) {
|
||||
// Stick with the default KotlinLibrary for now.
|
||||
override fun libraryComponentBuilder(file: File, isDefault: Boolean) = createKotlinLibraryComponents(file, isDefault)
|
||||
}
|
||||
|
||||
// TODO: This is a temporary set of library resolver policies for js compiler.
|
||||
fun jsResolveLibraries(libraries: Collection<String>, logger: Logger): KotlinLibraryResolveResult =
|
||||
jsResolveLibrariesWithoutDependencies(
|
||||
libraries,
|
||||
logger
|
||||
).resolveWithDependencies()
|
||||
|
||||
fun jsResolveLibrariesWithoutDependencies(
|
||||
libraries: Collection<String>,
|
||||
logger: Logger
|
||||
): JsResolution {
|
||||
val unresolvedLibraries = libraries.map { UnresolvedLibrary(it, null) }
|
||||
val libraryAbsolutePaths = libraries.map { File(it).absolutePath }
|
||||
// Configure the resolver to only work with absolute paths for now.
|
||||
val libraryResolver = JsLibraryResolver(
|
||||
repositories = emptyList(),
|
||||
directLibs = libraryAbsolutePaths,
|
||||
distributionKlib = null,
|
||||
localKotlinDir = null,
|
||||
skipCurrentDir = false,
|
||||
logger = logger
|
||||
).libraryResolver()
|
||||
|
||||
return JsResolution(
|
||||
libraryResolver,
|
||||
libraryResolver.resolveWithoutDependencies(
|
||||
unresolvedLibraries = unresolvedLibraries,
|
||||
noStdLib = true,
|
||||
noDefaultLibs = true,
|
||||
noEndorsedLibs = true
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
class JsResolution(
|
||||
private val libraryResolver: KotlinLibraryResolver<KotlinLibrary>,
|
||||
val libraries: List<KotlinLibrary>
|
||||
) {
|
||||
fun resolveWithDependencies(): KotlinLibraryResolveResult {
|
||||
return with(libraryResolver) {
|
||||
libraries.resolveDependencies()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.KtVirtualFileSourceFile
|
||||
import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.analyzer.CompilationErrorException
|
||||
import org.jetbrains.kotlin.backend.common.CommonJsKLibResolver
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
|
||||
@@ -469,7 +470,7 @@ class ModulesStructure(
|
||||
friendDependenciesPaths: Collection<String>,
|
||||
) {
|
||||
|
||||
val allDependenciesResolution = jsResolveLibrariesWithoutDependencies(
|
||||
val allDependenciesResolution = CommonJsKLibResolver.resolveWithoutDependencies(
|
||||
dependencies,
|
||||
compilerConfiguration.resolverLogger
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user