Extended logger capabilities
This commit is contained in:
committed by
alexander-gorshenev
parent
97b345c88d
commit
41237c05bb
+14
-4
@@ -6,11 +6,10 @@
|
||||
package org.jetbrains.kotlin.backend.konan
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||
import org.jetbrains.kotlin.cli.common.config.kotlinSourceRoots
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.STRONG_WARNING
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
@@ -23,6 +22,8 @@ import org.jetbrains.kotlin.konan.properties.loadProperties
|
||||
import org.jetbrains.kotlin.konan.target.*
|
||||
import org.jetbrains.kotlin.konan.library.resolver.TopologicalLibraryOrder
|
||||
import org.jetbrains.kotlin.konan.library.toUnresolvedLibraries
|
||||
import org.jetbrains.kotlin.konan.util.Logger
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class KonanConfig(val project: Project, val configuration: CompilerConfiguration) {
|
||||
|
||||
@@ -80,7 +81,16 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
private val unresolvedLibraries = libraryNames.toUnresolvedLibraries
|
||||
|
||||
private val repositories = configuration.getList(KonanConfigKeys.REPOSITORIES)
|
||||
private fun resolverLogger(msg: String) = configuration.report(STRONG_WARNING, msg)
|
||||
private val resolverLogger =
|
||||
object : Logger {
|
||||
override fun warning(message: String)= configuration.report(STRONG_WARNING, message)
|
||||
override fun error(message: String) = configuration.report(ERROR, message)
|
||||
override fun log(message: String) = configuration.report(LOGGING, message)
|
||||
override fun fatal(message: String): Nothing {
|
||||
configuration.report(ERROR, message)
|
||||
exitProcess(1)
|
||||
}
|
||||
}
|
||||
|
||||
private val compatibleCompilerVersions: List<KonanVersion> =
|
||||
configuration.getList(KonanConfigKeys.COMPATIBLE_COMPILER_VERSIONS).map { it.parseKonanVersion() }
|
||||
@@ -91,7 +101,7 @@ class KonanConfig(val project: Project, val configuration: CompilerConfiguration
|
||||
target,
|
||||
distribution,
|
||||
compatibleCompilerVersions + KonanVersion.CURRENT,
|
||||
::resolverLogger
|
||||
resolverLogger
|
||||
).libraryResolver()
|
||||
|
||||
internal val resolvedLibraries by lazy {
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.jetbrains.kotlin.konan.library
|
||||
|
||||
import org.jetbrains.kotlin.konan.library.resolver.KonanLibraryResolver
|
||||
import org.jetbrains.kotlin.konan.library.resolver.impl.KonanLibraryResolverImpl
|
||||
import org.jetbrains.kotlin.konan.KonanAbiVersion
|
||||
|
||||
fun SearchPathResolverWithTarget.libraryResolver(): KonanLibraryResolver =
|
||||
KonanLibraryResolverImpl(this)
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ internal class KonanLibraryResolverImpl(
|
||||
}
|
||||
|
||||
private fun warnOnLibraryDuplicates(duplicatedPaths: Iterable<String>) {
|
||||
duplicatedPaths.forEach { logger("library included more than once: $it") }
|
||||
duplicatedPaths.forEach { logger.warning("library included more than once: $it") }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.konan.util.DependencyProcessor
|
||||
import org.jetbrains.kotlin.konan.KonanAbiVersion
|
||||
import org.jetbrains.kotlin.konan.library.unpackZippedKonanLibraryTo
|
||||
import org.jetbrains.kotlin.konan.utils.KonanFactories.DefaultDeserializedDescriptorFactory
|
||||
import org.jetbrains.kotlin.konan.util.Logger
|
||||
import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.konan.parseModuleHeader
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
@@ -72,9 +73,15 @@ fun warn(text: String) {
|
||||
println("warning: $text")
|
||||
}
|
||||
|
||||
fun error(text: String) {
|
||||
println("error: $text")
|
||||
exitProcess(1)
|
||||
fun error(text: String): Nothing {
|
||||
kotlin.error("error: $text")
|
||||
}
|
||||
|
||||
object KlibToolLogger : Logger {
|
||||
override fun warning(message: String) = org.jetbrains.kotlin.cli.klib.warn(message)
|
||||
override fun error(message: String) = org.jetbrains.kotlin.cli.klib.warn(message)
|
||||
override fun fatal(message: String) = org.jetbrains.kotlin.cli.klib.error(message)
|
||||
override fun log(message: String) = println(message)
|
||||
}
|
||||
|
||||
val defaultRepository = File(DependencyProcessor.localKonanDir.resolve("klib").absolutePath)
|
||||
@@ -153,7 +160,8 @@ class Library(val name: String, val requestedRepository: String?, val target: St
|
||||
val resolver = resolverByName(
|
||||
emptyList(),
|
||||
distributionKlib = Distribution().klib,
|
||||
skipCurrentDir = true)
|
||||
skipCurrentDir = true,
|
||||
logger = KlibToolLogger)
|
||||
resolver.defaultLinks(false, true)
|
||||
.mapTo(defaultModules) {
|
||||
DefaultDeserializedDescriptorFactory.createDescriptor(
|
||||
@@ -173,12 +181,12 @@ val currentLanguageVersion = LanguageVersion.LATEST_STABLE
|
||||
val currentApiVersion = ApiVersion.LATEST_STABLE
|
||||
|
||||
fun libraryInRepo(repository: File, name: String) =
|
||||
resolverByName(listOf(repository.absolutePath), skipCurrentDir = true).resolve(name)
|
||||
resolverByName(listOf(repository.absolutePath), skipCurrentDir = true, logger = KlibToolLogger).resolve(name)
|
||||
|
||||
fun libraryInCurrentDir(name: String) = resolverByName(emptyList()).resolve(name)
|
||||
fun libraryInCurrentDir(name: String) = resolverByName(emptyList(), logger = KlibToolLogger).resolve(name)
|
||||
|
||||
fun libraryInRepoOrCurrentDir(repository: File, name: String) =
|
||||
resolverByName(listOf(repository.absolutePath)).resolve(name)
|
||||
resolverByName(listOf(repository.absolutePath), logger = KlibToolLogger).resolve(name)
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val command = Command(args)
|
||||
|
||||
Reference in New Issue
Block a user