JVM_IR: handle common klibs when compiled via cli
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
+8
-1
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user