Remove dependency of serialization.js on cli
To break up compilation dependency of JS IR/WASM backends on JVM backend. #KT-35854 Fixed
This commit is contained in:
@@ -71,6 +71,7 @@ fun buildKLib(
|
|||||||
allDependencies: KotlinLibraryResolveResult,
|
allDependencies: KotlinLibraryResolveResult,
|
||||||
commonSources: List<String>
|
commonSources: List<String>
|
||||||
) {
|
) {
|
||||||
|
val configuration = buildConfiguration(environment, moduleName)
|
||||||
generateKLib(
|
generateKLib(
|
||||||
project = environment.project,
|
project = environment.project,
|
||||||
files = sources.map { source ->
|
files = sources.map { source ->
|
||||||
@@ -80,7 +81,8 @@ fun buildKLib(
|
|||||||
}
|
}
|
||||||
file
|
file
|
||||||
},
|
},
|
||||||
configuration = buildConfiguration(environment, moduleName),
|
analyzer = AnalyzerWithCompilerReport(configuration),
|
||||||
|
configuration = configuration,
|
||||||
allDependencies = allDependencies,
|
allDependencies = allDependencies,
|
||||||
friendDependencies = emptyList(),
|
friendDependencies = emptyList(),
|
||||||
outputKlibPath = outputPath,
|
outputKlibPath = outputPath,
|
||||||
@@ -144,4 +146,4 @@ private fun messageCollectorLogger(collector: MessageCollector) = object : Logge
|
|||||||
(collector as? GroupingMessageCollector)?.flush()
|
(collector as? GroupingMessageCollector)?.flush()
|
||||||
kotlin.error(message)
|
kotlin.error(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ dependencies {
|
|||||||
compile(project(":compiler:cli"))
|
compile(project(":compiler:cli"))
|
||||||
compile(project(":compiler:frontend"))
|
compile(project(":compiler:frontend"))
|
||||||
compile(project(":compiler:backend-common"))
|
compile(project(":compiler:backend-common"))
|
||||||
compile(project(":compiler:backend"))
|
|
||||||
compile(project(":compiler:ir.backend.common"))
|
compile(project(":compiler:ir.backend.common"))
|
||||||
compile(project(":compiler:ir.serialization.js"))
|
compile(project(":compiler:ir.serialization.js"))
|
||||||
compile(project(":compiler:backend.js"))
|
compile(project(":compiler:backend.js"))
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants
|
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants
|
||||||
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot
|
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot
|
||||||
import org.jetbrains.kotlin.cli.common.extensions.ScriptEvaluationExtension
|
import org.jetbrains.kotlin.cli.common.extensions.ScriptEvaluationExtension
|
||||||
|
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||||
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
@@ -29,15 +30,14 @@ import org.jetbrains.kotlin.config.IncrementalCompilation
|
|||||||
import org.jetbrains.kotlin.config.Services
|
import org.jetbrains.kotlin.config.Services
|
||||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
import org.jetbrains.kotlin.incremental.js.IncrementalNextRoundChecker
|
|
||||||
import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider
|
import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider
|
||||||
|
import org.jetbrains.kotlin.incremental.js.IncrementalNextRoundChecker
|
||||||
import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer
|
import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer
|
||||||
import org.jetbrains.kotlin.ir.backend.js.*
|
import org.jetbrains.kotlin.ir.backend.js.*
|
||||||
import org.jetbrains.kotlin.js.config.EcmaVersion
|
import org.jetbrains.kotlin.js.config.EcmaVersion
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
import org.jetbrains.kotlin.js.config.JsConfig
|
import org.jetbrains.kotlin.js.config.JsConfig
|
||||||
import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding
|
import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding
|
||||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
||||||
@@ -189,6 +189,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
|||||||
generateKLib(
|
generateKLib(
|
||||||
project = config.project,
|
project = config.project,
|
||||||
files = sourcesFiles,
|
files = sourcesFiles,
|
||||||
|
analyzer = AnalyzerWithCompilerReport(config.configuration),
|
||||||
configuration = config.configuration,
|
configuration = config.configuration,
|
||||||
allDependencies = resolvedLibraries,
|
allDependencies = resolvedLibraries,
|
||||||
friendDependencies = friendDependencies,
|
friendDependencies = friendDependencies,
|
||||||
@@ -220,6 +221,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
|||||||
compile(
|
compile(
|
||||||
projectJs,
|
projectJs,
|
||||||
mainModule,
|
mainModule,
|
||||||
|
AnalyzerWithCompilerReport(config.configuration),
|
||||||
config.configuration,
|
config.configuration,
|
||||||
phaseConfig,
|
phaseConfig,
|
||||||
allDependencies = resolvedLibraries,
|
allDependencies = resolvedLibraries,
|
||||||
@@ -396,4 +398,4 @@ fun loadPluginsForTests(configuration: CompilerConfiguration): ExitCode {
|
|||||||
pluginClasspaths = jars.map { it.canonicalPath } + pluginClasspaths
|
pluginClasspaths = jars.map { it.canonicalPath } + pluginClasspaths
|
||||||
|
|
||||||
return PluginCliParser.loadPluginsSafe(pluginClasspaths, mutableListOf(), configuration)
|
return PluginCliParser.loadPluginsSafe(pluginClasspaths, mutableListOf(), configuration)
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-6
@@ -20,10 +20,14 @@ import com.intellij.openapi.util.io.FileUtil.toSystemDependentName
|
|||||||
import com.intellij.openapi.util.text.StringUtil
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.util.PsiFormatUtil
|
import com.intellij.psi.util.PsiFormatUtil
|
||||||
|
import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.*
|
||||||
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTrackerImpl
|
import org.jetbrains.kotlin.codegen.state.IncompatibleClassTrackerImpl
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.diagnostics.*
|
import org.jetbrains.kotlin.diagnostics.*
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils.sortedDiagnostics
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils.sortedDiagnostics
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
|
import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
|
||||||
@@ -43,8 +47,13 @@ import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErr
|
|||||||
class AnalyzerWithCompilerReport(
|
class AnalyzerWithCompilerReport(
|
||||||
private val messageCollector: MessageCollector,
|
private val messageCollector: MessageCollector,
|
||||||
private val languageVersionSettings: LanguageVersionSettings
|
private val languageVersionSettings: LanguageVersionSettings
|
||||||
) {
|
) : AbstractAnalyzerWithCompilerReport {
|
||||||
lateinit var analysisResult: AnalysisResult
|
override lateinit var analysisResult: AnalysisResult
|
||||||
|
|
||||||
|
constructor(configuration: CompilerConfiguration) : this(
|
||||||
|
configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: MessageCollector.NONE,
|
||||||
|
configuration.languageVersionSettings
|
||||||
|
)
|
||||||
|
|
||||||
private fun reportIncompleteHierarchies() {
|
private fun reportIncompleteHierarchies() {
|
||||||
val bindingContext = analysisResult.bindingContext
|
val bindingContext = analysisResult.bindingContext
|
||||||
@@ -99,11 +108,10 @@ class AnalyzerWithCompilerReport(
|
|||||||
|
|
||||||
class SyntaxErrorReport(val isHasErrors: Boolean, val isAllErrorsAtEof: Boolean)
|
class SyntaxErrorReport(val isHasErrors: Boolean, val isAllErrorsAtEof: Boolean)
|
||||||
|
|
||||||
fun hasErrors(): Boolean {
|
override fun hasErrors(): Boolean =
|
||||||
return messageCollector.hasErrors()
|
messageCollector.hasErrors()
|
||||||
}
|
|
||||||
|
|
||||||
fun analyzeAndReport(files: Collection<KtFile>, analyze: () -> AnalysisResult) {
|
override fun analyzeAndReport(files: Collection<KtFile>, analyze: () -> AnalysisResult) {
|
||||||
analysisResult = analyze()
|
analysisResult = analyze()
|
||||||
ExperimentalUsageChecker.checkCompilerArguments(
|
ExperimentalUsageChecker.checkCompilerArguments(
|
||||||
analysisResult.moduleDescriptor, languageVersionSettings,
|
analysisResult.moduleDescriptor, languageVersionSettings,
|
||||||
|
|||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.analyzer
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
|
interface AbstractAnalyzerWithCompilerReport {
|
||||||
|
val analysisResult: AnalysisResult
|
||||||
|
|
||||||
|
fun analyzeAndReport(files: Collection<KtFile>, analyze: () -> AnalysisResult)
|
||||||
|
|
||||||
|
fun hasErrors(): Boolean
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.backend.js
|
package org.jetbrains.kotlin.ir.backend.js
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
|
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
@@ -48,6 +49,7 @@ class CompilerResult(
|
|||||||
fun compile(
|
fun compile(
|
||||||
project: Project,
|
project: Project,
|
||||||
mainModule: MainModule,
|
mainModule: MainModule,
|
||||||
|
analyzer: AbstractAnalyzerWithCompilerReport,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
phaseConfig: PhaseConfig,
|
phaseConfig: PhaseConfig,
|
||||||
allDependencies: KotlinLibraryResolveResult,
|
allDependencies: KotlinLibraryResolveResult,
|
||||||
@@ -58,7 +60,7 @@ fun compile(
|
|||||||
generateDceJs: Boolean = false
|
generateDceJs: Boolean = false
|
||||||
): CompilerResult {
|
): CompilerResult {
|
||||||
val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) =
|
val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) =
|
||||||
loadIr(project, mainModule, configuration, allDependencies, friendDependencies)
|
loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies)
|
||||||
|
|
||||||
val moduleDescriptor = moduleFragment.descriptor
|
val moduleDescriptor = moduleFragment.descriptor
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.wasm
|
package org.jetbrains.kotlin.backend.wasm
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
|
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
|
||||||
import org.jetbrains.kotlin.backend.wasm.codegen.IrModuleToWasm
|
import org.jetbrains.kotlin.backend.wasm.codegen.IrModuleToWasm
|
||||||
@@ -25,6 +26,7 @@ data class WasmCompilerResult(val wat: String, val js: String)
|
|||||||
fun compileWasm(
|
fun compileWasm(
|
||||||
project: Project,
|
project: Project,
|
||||||
files: List<KtFile>,
|
files: List<KtFile>,
|
||||||
|
analyzer: AbstractAnalyzerWithCompilerReport,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
phaseConfig: PhaseConfig,
|
phaseConfig: PhaseConfig,
|
||||||
allDependencies: KotlinLibraryResolveResult,
|
allDependencies: KotlinLibraryResolveResult,
|
||||||
@@ -32,7 +34,7 @@ fun compileWasm(
|
|||||||
exportedDeclarations: Set<FqName> = emptySet()
|
exportedDeclarations: Set<FqName> = emptySet()
|
||||||
): WasmCompilerResult {
|
): WasmCompilerResult {
|
||||||
val (moduleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) =
|
val (moduleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) =
|
||||||
loadIr(project, MainModule.SourceFiles(files), configuration, allDependencies, friendDependencies)
|
loadIr(project, MainModule.SourceFiles(files), analyzer, configuration, allDependencies, friendDependencies)
|
||||||
|
|
||||||
val moduleDescriptor = moduleFragment.descriptor
|
val moduleDescriptor = moduleFragment.descriptor
|
||||||
val context = WasmBackendContext(moduleDescriptor, irBuiltIns, symbolTable, moduleFragment, exportedDeclarations, configuration)
|
val context = WasmBackendContext(moduleDescriptor, irBuiltIns, symbolTable, moduleFragment, exportedDeclarations, configuration)
|
||||||
@@ -57,4 +59,4 @@ fun compileWasm(
|
|||||||
wasmPhases.invokeToplevel(phaseConfig, context, moduleFragment)
|
wasmPhases.invokeToplevel(phaseConfig, context, moduleFragment)
|
||||||
|
|
||||||
return IrModuleToWasm(context).generateModule(moduleFragment)
|
return IrModuleToWasm(context).generateModule(moduleFragment)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ dependencies {
|
|||||||
compile(project(":compiler:ir.psi2ir"))
|
compile(project(":compiler:ir.psi2ir"))
|
||||||
compile(project(":compiler:ir.serialization.common"))
|
compile(project(":compiler:ir.serialization.common"))
|
||||||
compile(project(":js:js.frontend"))
|
compile(project(":js:js.frontend"))
|
||||||
compile(project(":compiler:cli"))
|
|
||||||
|
|
||||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.backend.js
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.analyzer.AbstractAnalyzerWithCompilerReport
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.backend.common.LoggingContext
|
import org.jetbrains.kotlin.backend.common.LoggingContext
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||||
@@ -18,11 +19,6 @@ import org.jetbrains.kotlin.backend.common.serialization.KlibIrVersion
|
|||||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDeserializer
|
import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDeserializer
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
|
||||||
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
|
|
||||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.*
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
@@ -59,11 +55,8 @@ import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
|||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.utils.DFS
|
import org.jetbrains.kotlin.utils.DFS
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
|
||||||
import kotlin.collections.ArrayList
|
|
||||||
import org.jetbrains.kotlin.konan.file.File as KFile
|
import org.jetbrains.kotlin.konan.file.File as KFile
|
||||||
|
|
||||||
|
|
||||||
val KotlinLibrary.moduleName: String
|
val KotlinLibrary.moduleName: String
|
||||||
get() = manifestProperties.getProperty(KLIB_PROPERTY_UNIQUE_NAME)
|
get() = manifestProperties.getProperty(KLIB_PROPERTY_UNIQUE_NAME)
|
||||||
|
|
||||||
@@ -96,6 +89,7 @@ class KotlinFileSerializedData(val metadata: ByteArray, val irData: SerializedIr
|
|||||||
fun generateKLib(
|
fun generateKLib(
|
||||||
project: Project,
|
project: Project,
|
||||||
files: List<KtFile>,
|
files: List<KtFile>,
|
||||||
|
analyzer: AbstractAnalyzerWithCompilerReport,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
allDependencies: KotlinLibraryResolveResult,
|
allDependencies: KotlinLibraryResolveResult,
|
||||||
friendDependencies: List<KotlinLibrary>,
|
friendDependencies: List<KotlinLibrary>,
|
||||||
@@ -131,7 +125,8 @@ fun generateKLib(
|
|||||||
icData = emptyList()
|
icData = emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
val depsDescriptors = ModulesStructure(project, MainModule.SourceFiles(files), configuration, allDependencies, friendDependencies)
|
val depsDescriptors =
|
||||||
|
ModulesStructure(project, MainModule.SourceFiles(files), analyzer, configuration, allDependencies, friendDependencies)
|
||||||
|
|
||||||
val psi2IrContext = runAnalysisAndPreparePsi2Ir(depsDescriptors)
|
val psi2IrContext = runAnalysisAndPreparePsi2Ir(depsDescriptors)
|
||||||
|
|
||||||
@@ -180,11 +175,12 @@ private fun sortDependencies(dependencies: List<KotlinLibrary>, mapping: Map<Kot
|
|||||||
fun loadIr(
|
fun loadIr(
|
||||||
project: Project,
|
project: Project,
|
||||||
mainModule: MainModule,
|
mainModule: MainModule,
|
||||||
|
analyzer: AbstractAnalyzerWithCompilerReport,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
allDependencies: KotlinLibraryResolveResult,
|
allDependencies: KotlinLibraryResolveResult,
|
||||||
friendDependencies: List<KotlinLibrary>
|
friendDependencies: List<KotlinLibrary>
|
||||||
): IrModuleInfo {
|
): IrModuleInfo {
|
||||||
val depsDescriptors = ModulesStructure(project, mainModule, configuration, allDependencies, friendDependencies)
|
val depsDescriptors = ModulesStructure(project, mainModule, analyzer, configuration, allDependencies, friendDependencies)
|
||||||
|
|
||||||
when (mainModule) {
|
when (mainModule) {
|
||||||
is MainModule.SourceFiles -> {
|
is MainModule.SourceFiles -> {
|
||||||
@@ -323,6 +319,7 @@ sealed class MainModule {
|
|||||||
private class ModulesStructure(
|
private class ModulesStructure(
|
||||||
private val project: Project,
|
private val project: Project,
|
||||||
private val mainModule: MainModule,
|
private val mainModule: MainModule,
|
||||||
|
private val analyzer: AbstractAnalyzerWithCompilerReport,
|
||||||
val compilerConfiguration: CompilerConfiguration,
|
val compilerConfiguration: CompilerConfiguration,
|
||||||
val allDependencies: KotlinLibraryResolveResult,
|
val allDependencies: KotlinLibraryResolveResult,
|
||||||
private val friendDependencies: List<KotlinLibrary>
|
private val friendDependencies: List<KotlinLibrary>
|
||||||
@@ -345,16 +342,7 @@ private class ModulesStructure(
|
|||||||
require(mainModule is MainModule.SourceFiles)
|
require(mainModule is MainModule.SourceFiles)
|
||||||
val files = mainModule.files
|
val files = mainModule.files
|
||||||
|
|
||||||
// TODO: Should we not provide default message collector?
|
analyzer.analyzeAndReport(files) {
|
||||||
val messageCollector: MessageCollector =
|
|
||||||
compilerConfiguration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: MessageCollector.NONE
|
|
||||||
|
|
||||||
val analyzerWithCompilerReport = AnalyzerWithCompilerReport(
|
|
||||||
messageCollector,
|
|
||||||
compilerConfiguration.languageVersionSettings
|
|
||||||
)
|
|
||||||
|
|
||||||
analyzerWithCompilerReport.analyzeAndReport(files) {
|
|
||||||
TopDownAnalyzerFacadeForJSIR.analyzeFiles(
|
TopDownAnalyzerFacadeForJSIR.analyzeFiles(
|
||||||
files,
|
files,
|
||||||
project,
|
project,
|
||||||
@@ -368,12 +356,12 @@ private class ModulesStructure(
|
|||||||
|
|
||||||
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
|
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
|
||||||
|
|
||||||
val analysisResult = analyzerWithCompilerReport.analysisResult
|
val analysisResult = analyzer.analysisResult
|
||||||
if (IncrementalCompilation.isEnabledForJs()) {
|
if (IncrementalCompilation.isEnabledForJs()) {
|
||||||
/** can throw [IncrementalNextRoundException] */
|
/** can throw [IncrementalNextRoundException] */
|
||||||
compareMetadataAndGoToNextICRoundIfNeeded(analysisResult, compilerConfiguration, files)
|
compareMetadataAndGoToNextICRoundIfNeeded(analysisResult, compilerConfiguration, files)
|
||||||
}
|
}
|
||||||
if (analyzerWithCompilerReport.hasErrors() || analysisResult !is JsAnalysisResult)
|
if (analyzer.hasErrors() || analysisResult !is JsAnalysisResult)
|
||||||
throw JsIrCompilationError
|
throw JsIrCompilationError
|
||||||
|
|
||||||
TopDownAnalyzerFacadeForJSIR.checkForErrors(files, analysisResult.bindingContext)
|
TopDownAnalyzerFacadeForJSIR.checkForErrors(files, analysisResult.bindingContext)
|
||||||
@@ -557,4 +545,4 @@ private fun KlibMetadataIncrementalSerializer(
|
|||||||
metadataVersion = configuration.metadataVersion,
|
metadataVersion = configuration.metadataVersion,
|
||||||
descriptorTable = descriptorTable,
|
descriptorTable = descriptorTable,
|
||||||
skipExpects = !configuration.klibMpp
|
skipExpects = !configuration.klibMpp
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.js.test
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||||
import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap
|
import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap
|
||||||
|
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.cli.js.messageCollectorLogger
|
import org.jetbrains.kotlin.cli.js.messageCollectorLogger
|
||||||
import org.jetbrains.kotlin.ir.backend.js.*
|
import org.jetbrains.kotlin.ir.backend.js.*
|
||||||
@@ -113,6 +114,7 @@ abstract class BasicIrBoxTest(
|
|||||||
val compiledModule = compile(
|
val compiledModule = compile(
|
||||||
project = config.project,
|
project = config.project,
|
||||||
mainModule = MainModule.SourceFiles(filesToCompile),
|
mainModule = MainModule.SourceFiles(filesToCompile),
|
||||||
|
analyzer = AnalyzerWithCompilerReport(config.configuration),
|
||||||
configuration = config.configuration,
|
configuration = config.configuration,
|
||||||
phaseConfig = phaseConfig,
|
phaseConfig = phaseConfig,
|
||||||
allDependencies = resolvedLibraries,
|
allDependencies = resolvedLibraries,
|
||||||
@@ -140,6 +142,7 @@ abstract class BasicIrBoxTest(
|
|||||||
generateKLib(
|
generateKLib(
|
||||||
project = config.project,
|
project = config.project,
|
||||||
files = filesToCompile,
|
files = filesToCompile,
|
||||||
|
analyzer = AnalyzerWithCompilerReport(config.configuration),
|
||||||
configuration = config.configuration,
|
configuration = config.configuration,
|
||||||
allDependencies = resolvedLibraries,
|
allDependencies = resolvedLibraries,
|
||||||
friendDependencies = emptyList(),
|
friendDependencies = emptyList(),
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
|||||||
import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap
|
import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap
|
||||||
import org.jetbrains.kotlin.backend.wasm.compileWasm
|
import org.jetbrains.kotlin.backend.wasm.compileWasm
|
||||||
import org.jetbrains.kotlin.backend.wasm.wasmPhases
|
import org.jetbrains.kotlin.backend.wasm.wasmPhases
|
||||||
|
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
||||||
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
|
||||||
@@ -112,6 +113,7 @@ abstract class BasicWasmBoxTest(
|
|||||||
val compilerResult = compileWasm(
|
val compilerResult = compileWasm(
|
||||||
project = config.project,
|
project = config.project,
|
||||||
files = filesToCompile,
|
files = filesToCompile,
|
||||||
|
analyzer = AnalyzerWithCompilerReport(config.configuration),
|
||||||
configuration = config.configuration,
|
configuration = config.configuration,
|
||||||
phaseConfig = phaseConfig,
|
phaseConfig = phaseConfig,
|
||||||
// TODO: Bypass the resolver fow wasm.
|
// TODO: Bypass the resolver fow wasm.
|
||||||
|
|||||||
Reference in New Issue
Block a user