JVM_IR: handle common klibs when compiled via cli

This commit is contained in:
Georgy Bronnikov
2020-03-06 15:05:12 +03:00
parent 6af099c11a
commit d032f9b9cc
2 changed files with 31 additions and 2 deletions
@@ -23,8 +23,10 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.isSubpackageOf
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.util.Logger
import org.jetbrains.kotlin.utils.KotlinPaths
import java.io.File
import kotlin.system.exitProcess
fun checkKotlinPackageUsage(environment: KotlinCoreEnvironment, files: Collection<KtFile>): Boolean {
if (environment.configuration.getBoolean(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE)) {
@@ -65,4 +67,24 @@ fun getLibraryFromHome(
"or the correct '-kotlin-home'", null
)
return null
}
}
fun MessageCollector.toLogger(): Logger =
object : Logger {
override fun error(message: String) {
report(CompilerMessageSeverity.ERROR, message)
}
override fun fatal(message: String): Nothing {
report(CompilerMessageSeverity.ERROR, message)
exitProcess(1)
}
override fun warning(message: String) {
report(CompilerMessageSeverity.WARNING, message)
}
override fun log(message: String) {
report(CompilerMessageSeverity.LOGGING, message)
}
}
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
import org.jetbrains.kotlin.cli.common.output.writeAll
import org.jetbrains.kotlin.cli.common.toLogger
import org.jetbrains.kotlin.cli.jvm.config.*
import org.jetbrains.kotlin.codegen.*
import org.jetbrains.kotlin.codegen.state.GenerationState
@@ -59,6 +60,7 @@ import org.jetbrains.kotlin.fir.resolve.firProvider
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
import org.jetbrains.kotlin.idea.MainFunctionDetector
import org.jetbrains.kotlin.ir.backend.jvm.jvmResolveLibraries
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.load.kotlin.ModuleVisibilityManager
@@ -546,6 +548,10 @@ object KotlinToJVMBytecodeCompiler {
val performanceManager = environment.configuration.get(CLIConfigurationKeys.PERF_MANAGER)
performanceManager?.notifyAnalysisStarted()
val resolvedKlibs = environment.configuration.get(JVMConfigurationKeys.KLIB_PATHS)?.let { klibPaths ->
jvmResolveLibraries(klibPaths, collector.toLogger())
}?.getFullList() ?: emptyList()
val analyzerWithCompilerReport = AnalyzerWithCompilerReport(collector, environment.configuration.languageVersionSettings)
analyzerWithCompilerReport.analyzeAndReport(sourceFiles) {
val project = environment.project
@@ -562,7 +568,8 @@ object KotlinToJVMBytecodeCompiler {
NoScopeRecordCliBindingTrace(),
environment.configuration,
environment::createPackagePartProvider,
sourceModuleSearchScope = scope
sourceModuleSearchScope = scope,
klibList = resolvedKlibs
)
}