frontend: Stop compilation in case of frontend error
This commit is contained in:
@@ -1,26 +1,18 @@
|
|||||||
package org.jetbrains.kotlin.cli.bc
|
package org.jetbrains.kotlin.cli.bc
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.konan.*
|
|
||||||
import org.jetbrains.kotlin.backend.konan.util.profile
|
|
||||||
import com.intellij.openapi.Disposable
|
import com.intellij.openapi.Disposable
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.backend.konan.KonanCompilationException
|
||||||
|
import org.jetbrains.kotlin.backend.konan.KonanConfig
|
||||||
|
import org.jetbrains.kotlin.backend.konan.KonanConfigKeys
|
||||||
|
import org.jetbrains.kotlin.backend.konan.runTopLevelPhases
|
||||||
|
import org.jetbrains.kotlin.backend.konan.util.profile
|
||||||
import org.jetbrains.kotlin.cli.common.CLICompiler
|
import org.jetbrains.kotlin.cli.common.CLICompiler
|
||||||
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
|
||||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
|
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
|
|
||||||
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
|
||||||
import org.jetbrains.kotlin.backend.konan.KonanConfigKeys
|
|
||||||
import org.jetbrains.kotlin.backend.konan.Distribution
|
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.Services
|
import org.jetbrains.kotlin.config.Services
|
||||||
import org.jetbrains.kotlin.config.addKotlinSourceRoots
|
import org.jetbrains.kotlin.config.addKotlinSourceRoots
|
||||||
import org.jetbrains.kotlin.ir.util.DumpIrTreeVisitor
|
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import java.lang.System.out
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
||||||
@@ -36,7 +28,12 @@ class K2Native : CLICompiler<K2NativeCompilerArguments>() {
|
|||||||
val project = environment.project
|
val project = environment.project
|
||||||
val konanConfig = KonanConfig(project, configuration)
|
val konanConfig = KonanConfig(project, configuration)
|
||||||
|
|
||||||
runTopLevelPhases(konanConfig, environment)
|
try {
|
||||||
|
runTopLevelPhases(konanConfig, environment)
|
||||||
|
} catch (e: KonanCompilationException) {
|
||||||
|
return ExitCode.COMPILATION_ERROR
|
||||||
|
}
|
||||||
|
// TODO: catch Errors and IllegalStateException.
|
||||||
|
|
||||||
return ExitCode.OK
|
return ExitCode.OK
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
package org.jetbrains.kotlin.backend.konan
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a compilation error caused by mistakes in an input file, e.g. undefined reference.
|
||||||
|
*/
|
||||||
|
class KonanCompilationException(message: String = "", cause: Throwable? = null) : Exception(message, cause) {}
|
||||||
+5
-10
@@ -1,23 +1,15 @@
|
|||||||
package org.jetbrains.kotlin.backend.konan
|
package org.jetbrains.kotlin.backend.konan
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.backend.konan.llvm.emitLLVM
|
|
||||||
import org.jetbrains.kotlin.backend.konan.util.profile
|
|
||||||
import org.jetbrains.kotlin.backend.konan.Context
|
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.ModuleIndex
|
import org.jetbrains.kotlin.backend.konan.ir.ModuleIndex
|
||||||
import org.jetbrains.kotlin.cli.common.CLICompiler
|
import org.jetbrains.kotlin.backend.konan.llvm.emitLLVM
|
||||||
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
||||||
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
|
||||||
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.CompilerConfiguration
|
|
||||||
import org.jetbrains.kotlin.config.kotlinSourceRoots
|
import org.jetbrains.kotlin.config.kotlinSourceRoots
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
|
|
||||||
class NativeAnalyzer(
|
class NativeAnalyzer(
|
||||||
val environment: KotlinCoreEnvironment,
|
val environment: KotlinCoreEnvironment,
|
||||||
@@ -60,6 +52,9 @@ public fun runTopLevelPhases(konanConfig: KonanConfig, environment: KotlinCoreEn
|
|||||||
// Build AST and binding info.
|
// Build AST and binding info.
|
||||||
analyzerWithCompilerReport.analyzeAndReport(environment.getSourceFiles(),
|
analyzerWithCompilerReport.analyzeAndReport(environment.getSourceFiles(),
|
||||||
NativeAnalyzer(environment, environment.getSourceFiles(), konanConfig))
|
NativeAnalyzer(environment, environment.getSourceFiles(), konanConfig))
|
||||||
|
if (analyzerWithCompilerReport.hasErrors()) {
|
||||||
|
throw KonanCompilationException()
|
||||||
|
}
|
||||||
context.moduleDescriptor = analyzerWithCompilerReport.analysisResult.moduleDescriptor
|
context.moduleDescriptor = analyzerWithCompilerReport.analysisResult.moduleDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user