[JS IR] Properly report compiler errors
Report compiler errors using message collector Instead of crashing with stack trace
This commit is contained in:
@@ -8,6 +8,7 @@ dependencies {
|
||||
compile(project(":compiler:ir.psi2ir"))
|
||||
compile(project(":compiler:ir.serialization.common"))
|
||||
compile(project(":js:js.frontend"))
|
||||
compile(project(":compiler:cli"))
|
||||
|
||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||
|
||||
|
||||
@@ -16,6 +16,9 @@ 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.KlibMetadataVersion
|
||||
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.MessageCollector
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
@@ -256,6 +259,8 @@ fun getModuleDescriptorByLibrary(current: KotlinLibrary, mapping: Map<String, Mo
|
||||
return md
|
||||
}
|
||||
|
||||
object JsIrCompilationError : Throwable()
|
||||
|
||||
private class ModulesStructure(
|
||||
private val project: Project,
|
||||
private val files: List<KtFile>,
|
||||
@@ -278,7 +283,14 @@ private class ModulesStructure(
|
||||
val builtInsDep = allDependencies.getFullList().find { it.isBuiltIns }
|
||||
|
||||
fun runAnalysis(): JsAnalysisResult {
|
||||
val analysisResult =
|
||||
val messageCollector: MessageCollector =
|
||||
compilerConfiguration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY) ?: MessageCollector.NONE
|
||||
val analyzerWithCompilerReport = AnalyzerWithCompilerReport(
|
||||
messageCollector,
|
||||
compilerConfiguration.languageVersionSettings
|
||||
)
|
||||
|
||||
analyzerWithCompilerReport.analyzeAndReport(files) {
|
||||
TopDownAnalyzerFacadeForJSIR.analyzeFiles(
|
||||
files,
|
||||
project,
|
||||
@@ -288,6 +300,12 @@ private class ModulesStructure(
|
||||
thisIsBuiltInsModule = builtInModuleDescriptor == null,
|
||||
customBuiltInsModule = builtInModuleDescriptor
|
||||
)
|
||||
}
|
||||
|
||||
val analysisResult = analyzerWithCompilerReport.analysisResult
|
||||
|
||||
if (analyzerWithCompilerReport.hasErrors() || analysisResult !is JsAnalysisResult)
|
||||
throw JsIrCompilationError
|
||||
|
||||
ProgressIndicatorAndCompilationCanceledStatus.checkCanceled()
|
||||
TopDownAnalyzerFacadeForJSIR.checkForErrors(files, analysisResult.bindingContext)
|
||||
|
||||
Reference in New Issue
Block a user