Attached library resolver to messge collector

This commit is contained in:
Alexander Gorshenev
2019-10-07 15:25:00 +03:00
committed by alexander-gorshenev
parent 47fba2ee4b
commit 71eb413350
4 changed files with 36 additions and 23 deletions
@@ -52,6 +52,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingContextUtils
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.util.Logger
import org.jetbrains.kotlin.utils.DFS
import java.io.File
import org.jetbrains.kotlin.konan.file.File as KFile
@@ -82,8 +83,7 @@ private val CompilerConfiguration.metadataVersion
class KotlinFileSerializedData(val metadata: ByteArray, val irData: SerializedIrFile)
// TODO: This is a temporary set of library resolver policies for js compiler.
fun jsResolveLibraries(libraries: List<String>): KotlinLibraryResolveResult {
fun jsResolveLibraries(libraries: List<String>, logger: Logger): KotlinLibraryResolveResult {
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.
@@ -92,8 +92,8 @@ fun jsResolveLibraries(libraries: List<String>): KotlinLibraryResolveResult {
directLibs = libraryAbsolutePaths,
distributionKlib = null,
localKotlinDir = null,
skipCurrentDir = false
// TODO: pass logger attached to message collector here.
skipCurrentDir = false,
logger = logger
).libraryResolver()
val resolvedLibraries =
libraryResolver.resolveWithDependencies(
@@ -105,7 +105,6 @@ fun jsResolveLibraries(libraries: List<String>): KotlinLibraryResolveResult {
return resolvedLibraries
}
fun generateKLib(
project: Project,
files: List<KtFile>,
@@ -13,14 +13,11 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.library.KotlinLibrary
import org.jetbrains.kotlin.library.KotlinLibrarySearchPathResolver
import org.jetbrains.kotlin.library.UnresolvedLibrary
import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult
import org.jetbrains.kotlin.library.resolver.impl.libraryResolver
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource
import org.jetbrains.kotlin.serialization.js.ModuleKind
import org.jetbrains.kotlin.util.Logger
import java.io.File
fun buildConfiguration(environment: KotlinCoreEnvironment, moduleName: String): CompilerConfiguration {
@@ -116,7 +113,16 @@ fun main(args: Array<String>) {
if (outputPath == null) {
error("Please set path to .klm file: `-o some/dir/module-name.klm`")
}
val resolvedLibraries = jsResolveLibraries(dependencies)
val resolvedLibraries = jsResolveLibraries(
dependencies,
object : Logger {
override fun log(message: String) = println(message)
override fun error(message: String) = kotlin.error(message)
override fun warning(message: String) = println(message)
override fun fatal(message: String) = kotlin.error(message)
}
)
buildKLib(File(outputPath).absolutePath, listOfKtFilesFrom(inputFiles), outputPath, resolvedLibraries, listOfKtFilesFrom(commonSources))
}