[KLIB] Use IrMessageLogger in klib linker to report errors

This commit is contained in:
Roman Artemev
2021-01-25 23:33:42 +03:00
parent 6891ad0dfc
commit bf67308cc2
12 changed files with 96 additions and 68 deletions
@@ -12,7 +12,6 @@ import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.PsiManager
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.backend.common.LoggingContext
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
import org.jetbrains.kotlin.backend.common.serialization.KlibIrVersion
@@ -30,7 +29,6 @@ import org.jetbrains.kotlin.descriptors.konan.kotlinLibrary
import org.jetbrains.kotlin.incremental.ChangedFiles
import org.jetbrains.kotlin.incremental.EmptyICReporter
import org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.multiproject.EmptyModulesApiHistory
import org.jetbrains.kotlin.incremental.withJsIC
import org.jetbrains.kotlin.ir.backend.js.*
@@ -65,18 +63,14 @@ import org.junit.Before
import org.junit.Ignore
import org.junit.Test
import java.io.File
import kotlin.io.path.*
import kotlin.io.path.ExperimentalPathApi
import kotlin.io.path.createTempDirectory
import kotlin.io.path.createTempFile
import org.jetbrains.kotlin.konan.file.File as KonanFile
@OptIn(ExperimentalPathApi::class)
@Ignore
class GenerateIrRuntime {
private val lookupTracker: LookupTracker = LookupTracker.DO_NOTHING
private val logger = object : LoggingContext {
override var inVerbosePhase = false
override fun log(message: () -> String) {}
}
fun loadKlib(klibPath: String, isPacked: Boolean) = createKotlinLibrary(KonanFile("$klibPath${if (isPacked) ".klib" else ""}"))
private fun buildConfiguration(environment: KotlinCoreEnvironment): CompilerConfiguration {
@@ -462,7 +456,7 @@ class GenerateIrRuntime {
val irLinker = JsIrLinker(
psi2IrContext.moduleDescriptor,
emptyLoggingContext,
IrMessageLogger.None,
psi2IrContext.irBuiltIns,
psi2IrContext.symbolTable,
functionFactory,
@@ -482,6 +476,7 @@ class GenerateIrRuntime {
moduleName,
project,
configuration,
IrMessageLogger.None,
bindingContext,
files,
tmpKlibDir,
@@ -504,7 +499,7 @@ class GenerateIrRuntime {
private fun doSerializeIrModule(module: IrModuleFragment): SerializedIrModule {
val serializedIr = JsIrModuleSerializer(logger, module.irBuiltins, mutableMapOf(), true).serializedIrModule(module)
val serializedIr = JsIrModuleSerializer(IrMessageLogger.None, module.irBuiltins, mutableMapOf(), true).serializedIrModule(module)
return serializedIr
}
@@ -524,7 +519,7 @@ class GenerateIrRuntime {
val functionFactory = IrFunctionFactory(irBuiltIns, symbolTable)
irBuiltIns.functionFactory = functionFactory
val jsLinker = JsIrLinker(moduleDescriptor, logger, irBuiltIns, symbolTable, functionFactory, null)
val jsLinker = JsIrLinker(moduleDescriptor, IrMessageLogger.None, irBuiltIns, symbolTable, functionFactory, null)
val moduleFragment = jsLinker.deserializeFullModule(moduleDescriptor, moduleDescriptor.kotlinLibrary)
jsLinker.init(null, emptyList())
@@ -554,7 +549,7 @@ class GenerateIrRuntime {
val functionFactory = IrFunctionFactory(irBuiltIns, symbolTable)
irBuiltIns.functionFactory = functionFactory
val jsLinker = JsIrLinker(moduleDescriptor, logger, irBuiltIns, symbolTable, functionFactory, null)
val jsLinker = JsIrLinker(moduleDescriptor, IrMessageLogger.None, irBuiltIns, symbolTable, functionFactory, null)
val moduleFragment = jsLinker.deserializeFullModule(moduleDescriptor, moduleDescriptor.kotlinLibrary)
// Create stubs