From cd2f5895a62d16d42f7fa27ffbb9a206a0ce9bcf Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 6 May 2020 11:43:21 +0300 Subject: [PATCH] FIR: add minor fix of super reference handling --- .../src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index c2624236092..e6f92ee896c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -355,10 +355,12 @@ fun BodyResolveComponents.typeFromCallee(access: T): FirReso } is FirSuperReference -> { val labelName = newCallee.labelName - val implicitReceiver = implicitReceiverStack[labelName] as? ImplicitDispatchReceiverValue + val implicitReceiver = + if (labelName != null) implicitReceiverStack[labelName] as? ImplicitDispatchReceiverValue + else implicitReceiverStack.lastDispatchReceiver() val resolvedTypeRef = - if (implicitReceiver != null) implicitReceiver.boundSymbol.phasedFir.superTypeRefs.singleOrNull() as? FirResolvedTypeRef - else newCallee.superTypeRef as? FirResolvedTypeRef + newCallee.superTypeRef as? FirResolvedTypeRef + ?: implicitReceiver?.boundSymbol?.phasedFir?.superTypeRefs?.singleOrNull() as? FirResolvedTypeRef resolvedTypeRef ?: buildErrorTypeRef { source = newCallee.source diagnostic = ConeUnresolvedNameError(Name.identifier("super"))