From 038ec8edcfe59de46cf00161faf4d3caaaf95882 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 11 Dec 2019 12:25:00 +0300 Subject: [PATCH] Rethrow ProcessCanceledException in FIR resolve Before this commit, we catched all exceptions at some points and wrap them. For ProcessCanceledException it's incorrect, because IDE logic does not expect wrapping of ProcessCanceledException --- .../kotlin/fir/resolve/calls/ConstructorProcessing.kt | 3 +++ .../body/resolve/FirExpressionsResolveTransformer.kt | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt index 5c16dc19403..e0e550ba4b8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.calls +import com.intellij.openapi.progress.ProcessCanceledException import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.impl.FirConstructorImpl @@ -164,6 +165,8 @@ private fun processConstructors( } } return ProcessorAction.NEXT + } catch (e: ProcessCanceledException) { + throw e } catch (e: Throwable) { throw RuntimeException("While processing constructors", e) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 84a689dace3..3236a067d2e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -5,11 +5,11 @@ package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve -import org.jetbrains.kotlin.fir.* -import org.jetbrains.kotlin.fir.declarations.FirClass +import com.intellij.openapi.progress.ProcessCanceledException +import org.jetbrains.kotlin.fir.BuiltinTypes +import org.jetbrains.kotlin.fir.FirCallResolver import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind -import org.jetbrains.kotlin.fir.diagnostics.FirDiagnostic import org.jetbrains.kotlin.fir.diagnostics.FirSimpleDiagnostic import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.impl.FirErrorExpressionImpl @@ -22,14 +22,15 @@ import org.jetbrains.kotlin.fir.references.FirThisReference import org.jetbrains.kotlin.fir.references.impl.FirErrorNamedReferenceImpl import org.jetbrains.kotlin.fir.references.impl.FirExplicitThisReference import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference +import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.calls.candidate import org.jetbrains.kotlin.fir.resolve.diagnostics.FirOperatorAmbiguityError import org.jetbrains.kotlin.fir.resolve.diagnostics.FirTypeMismatchError import org.jetbrains.kotlin.fir.resolve.diagnostics.FirVariableExpectedError -import org.jetbrains.kotlin.fir.resolve.transformers.IntegerLiteralTypeApproximationTransformer import org.jetbrains.kotlin.fir.resolve.transformers.InvocationKindTransformer import org.jetbrains.kotlin.fir.resolve.transformers.StoreReceiver +import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLookupTagWithFixedSymbol @@ -155,6 +156,8 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) : completionResult.transformArguments(transformer, ResolutionMode.LambdaResolution(null)) } completionResult + } catch (e: ProcessCanceledException) { + throw e } catch (e: Throwable) { throw RuntimeException("While resolving call ${functionCall.render()}", e) }