Don't wrap ProcessCanceledException with other exceptions ProcessCanceledException indicates that the compilation process was terminated by user. This kind of exception should not be wrapped anyhow in order to be handled on toplevel in CLICompiler. #KT-38483 Fixed
diff --git a/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt index 0d2b899..8662c59 100644 --- a/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt +++ b/compiler/backend-common/src/org/jetbrains/kotlin/backend/common/CodegenUtil.kt
@@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.common import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import org.jetbrains.kotlin.descriptors.* @@ -236,6 +237,7 @@ // CompilationException (the only KotlinExceptionWithAttachments possible here) is already supposed // to have all information about the context. if (exception is KotlinExceptionWithAttachments) throw exception + if (exception is ProcessCanceledException) throw exception throw BackendException( getExceptionMessage("Backend", "Exception during $phase", exception, location) + additionalMessage?.let { "\n" + it }.orEmpty(),
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CompilationException.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CompilationException.kt index fcfc90c..edb9890 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CompilationException.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/CompilationException.kt
@@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.common +import com.intellij.openapi.progress.ProcessCanceledException import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.IrDeclaration @@ -96,13 +97,16 @@ message: String, file: IrFile, element: IrElement? -): CompilationException { - return CompilationException( - "$message: ${this::class.qualifiedName}: ${this.message}", - file, - element, - cause = this - ).apply { - stackTrace = this@wrapWithCompilationException.stackTrace - } +): RuntimeException { + return if (this is ProcessCanceledException) + this + else + CompilationException( + "$message: ${this::class.qualifiedName}: ${this.message}", + file, + element, + cause = this + ).apply { + stackTrace = this@wrapWithCompilationException.stackTrace + } } \ No newline at end of file
diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt index 2dfce61..0700f6f 100644 --- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt +++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
@@ -5,6 +5,7 @@ package org.jetbrains.kotlin.backend.jvm.codegen +import com.intellij.openapi.progress.ProcessCanceledException import org.jetbrains.kotlin.backend.common.lower.BOUND_RECEIVER_PARAMETER import org.jetbrains.kotlin.backend.common.lower.BOUND_VALUE_PARAMETER import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin @@ -42,6 +43,8 @@ ): SMAPAndMethodNode = try { doGenerate(reifiedTypeParameters) + } catch (e: ProcessCanceledException) { + throw e } catch (e: Throwable) { throw RuntimeException("Exception while generating code for:\n${irFunction.dump()}", e) }