diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContext.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContext.kt index a57353f6f59..858c8b57d38 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContext.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContext.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.builders.IrGeneratorContext import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.ir.util.IrMessageLogger import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.name.FqName @@ -36,6 +37,14 @@ interface IrPluginContext : IrGeneratorContext { val platform: TargetPlatform? + /** + * Returns a logger instance to post diagnostic messages from plugin + * + * @param pluginId the unique plugin ID to make it easy to distinguish in log + * @return the logger associated with specified ID + */ + fun createDiagnosticReporter(pluginId: String): IrMessageLogger + // The following API is experimental fun referenceClass(fqName: FqName): IrClassSymbol? fun referenceTypeAlias(fqName: FqName): IrTypeAliasSymbol? diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt index 22e588abf6e..bf8da2ef0ba 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/extensions/IrPluginContextImpl.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.linkage.IrDeserializer import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.ir.util.IrMessageLogger import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.name.FqName @@ -33,6 +34,7 @@ open class IrPluginContextImpl constructor( override val typeTranslator: TypeTranslator, override val irBuiltIns: IrBuiltIns, val linker: IrDeserializer, + private val diagnosticReporter: IrMessageLogger, override val symbols: BuiltinSymbolsBase = BuiltinSymbolsBase(irBuiltIns, irBuiltIns.builtIns, st) ) : IrPluginContext { @@ -68,6 +70,18 @@ open class IrPluginContextImpl constructor( return symbol } + override fun createDiagnosticReporter(pluginId: String): IrMessageLogger { + return object : IrMessageLogger { + override fun report( + severity: IrMessageLogger.Severity, + message: String, + location: IrMessageLogger.Location? + ) { + diagnosticReporter.report(severity, "[Plugin $pluginId] $message", location) + } + } + } + private fun resolveSymbolCollection(fqName: FqName, referencer: (MemberScope) -> Collection): Collection { val memberScope = resolveMemberScope(fqName) ?: return emptyList() diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index 73731e24897..51a4cb98c19 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin import org.jetbrains.kotlin.idea.MainFunctionDetector -import org.jetbrains.kotlin.ir.backend.jvm.serialization.EmptyLoggingContext import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrLinker import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc import org.jetbrains.kotlin.ir.builders.TranslationPluginContext diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index e6c635b1315..6ea12e0f8a2 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -10,7 +10,6 @@ import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport import org.jetbrains.kotlin.analyzer.AnalysisResult -import org.jetbrains.kotlin.backend.common.LoggingContext import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideChecker @@ -328,7 +327,8 @@ fun GeneratorContext.generateModuleFragmentWithPlugins( symbolTable, typeTranslator, irBuiltIns, - linker = irLinker + linker = irLinker, + messageLogger ) for (extension in extensions) {