diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt index 0df98148c7c..5b596ab9756 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanConfig.kt @@ -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 = 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 { diff --git a/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/ResolverUtils.kt b/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/ResolverUtils.kt index 952a916620f..9eb092ca4c3 100644 --- a/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/ResolverUtils.kt +++ b/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/ResolverUtils.kt @@ -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) diff --git a/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt b/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt index 39205f93a3e..9af1ff7cb9a 100644 --- a/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt +++ b/extracted/konan.serializer/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt @@ -66,7 +66,7 @@ internal class KonanLibraryResolverImpl( } private fun warnOnLibraryDuplicates(duplicatedPaths: Iterable) { - duplicatedPaths.forEach { logger("library included more than once: $it") } + duplicatedPaths.forEach { logger.warning("library included more than once: $it") } } diff --git a/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt b/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt index 9611312fd41..ccdbd20a9e4 100644 --- a/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt +++ b/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt @@ -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) { val command = Command(args)