[Tests] Report compilation errors from test KLIB compiler

KTIJ-28668
This commit is contained in:
Pavel Kirpichenkov
2024-02-21 12:18:50 +02:00
committed by Space Team
parent 5548e854a0
commit 3e5065fbba
@@ -11,7 +11,9 @@ import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataMo
import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoots import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoots
import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CommonConfigurationKeys
@@ -42,7 +44,10 @@ object KlibTestUtil {
require(!Name.guessByFirstCharacter(libraryName).isSpecial) { "Invalid library name: $libraryName" } require(!Name.guessByFirstCharacter(libraryName).isSpecial) { "Invalid library name: $libraryName" }
val configuration = KotlinTestUtils.newConfiguration() val configuration = KotlinTestUtils.newConfiguration()
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE) configuration.put(
CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY,
PrintingMessageCollector(System.err, MessageRenderer.PLAIN_RELATIVE_PATHS, false)
)
configuration.put(CommonConfigurationKeys.MODULE_NAME, libraryName) configuration.put(CommonConfigurationKeys.MODULE_NAME, libraryName)
configuration.addKotlinSourceRoots(sourceFiles.map { it.absolutePath }) configuration.addKotlinSourceRoots(sourceFiles.map { it.absolutePath })
@@ -54,16 +59,32 @@ object KlibTestUtil {
extensionConfigs = EnvironmentConfigFiles.METADATA_CONFIG_FILES extensionConfigs = EnvironmentConfigFiles.METADATA_CONFIG_FILES
) )
CommonResolverForModuleFactory.analyzeFiles( val analyzer = AnalyzerWithCompilerReport(
environment.getSourceFiles(), configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY),
moduleName = Name.special("<$libraryName>"), configuration.languageVersionSettings,
dependOnBuiltIns = true, configuration.getBoolean(CLIConfigurationKeys.RENDER_DIAGNOSTIC_INTERNAL_NAME)
environment.configuration.languageVersionSettings, )
CommonPlatforms.defaultCommonPlatform,
CompilerEnvironment, analyzer.analyzeAndReport(environment.getSourceFiles()) {
) { content -> CommonResolverForModuleFactory.analyzeFiles(
environment.createPackagePartProvider(content.moduleContentScope) environment.getSourceFiles(),
}.moduleDescriptor moduleName = Name.special("<$libraryName>"),
dependOnBuiltIns = true,
environment.configuration.languageVersionSettings,
CommonPlatforms.defaultCommonPlatform,
CompilerEnvironment,
) { content ->
environment.createPackagePartProvider(content.moduleContentScope)
}
}
val analysisResult = analyzer.analysisResult
check(!analyzer.hasErrors()) {
"Compilation finished with errors. See the previous messages."
}
analysisResult.moduleDescriptor
} finally { } finally {
Disposer.dispose(rootDisposable) Disposer.dispose(rootDisposable)
} }