diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt index d401016039e..4fe63b2c580 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.Services +import org.jetbrains.kotlin.ir.util.IrMessageLogger import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.progress.CompilationCanceledException import org.jetbrains.kotlin.progress.CompilationCanceledStatus @@ -39,7 +40,7 @@ import org.jetbrains.kotlin.utils.KotlinPaths import org.jetbrains.kotlin.utils.PathUtil import java.io.File import java.io.PrintStream -import java.util.ArrayList +import java.util.* abstract class CLICompiler : CLITool() { @@ -69,6 +70,8 @@ abstract class CLICompiler : CLITool() { configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, it) } + configuration.put(IrMessageLogger.IR_MESSAGE_LOGGER, IrMessageCollector(collector)) + configuration.put(CLIConfigurationKeys.PERF_MANAGER, performanceManager) try { setupCommonArguments(configuration, arguments) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/IrMessageCollector.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/IrMessageCollector.kt new file mode 100644 index 00000000000..ce0d67647dc --- /dev/null +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/messages/IrMessageCollector.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2021 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.cli.common.messages + +import org.jetbrains.kotlin.ir.util.IrMessageLogger + +class IrMessageCollector(private val messageCollector: MessageCollector) : IrMessageLogger { + override fun report(severity: IrMessageLogger.Severity, message: String, location: IrMessageLogger.Location?) { + messageCollector.report(severityToCLISeverity(severity), message, locationToCLILocation(location)) + } + + companion object { + private fun severityToCLISeverity(severity: IrMessageLogger.Severity): CompilerMessageSeverity { + return when (severity) { + IrMessageLogger.Severity.INFO -> CompilerMessageSeverity.INFO + IrMessageLogger.Severity.WARNING -> CompilerMessageSeverity.WARNING + IrMessageLogger.Severity.ERROR -> CompilerMessageSeverity.ERROR + } + } + + private fun locationToCLILocation(location: IrMessageLogger.Location?): CompilerMessageLocation? { + return location?.run { + CompilerMessageLocation.Companion.create(filePath, line, column, null) + } + } + } +} \ No newline at end of file