FIR: add minor fix of super reference handling

This commit is contained in:
Mikhail Glukhikh
2020-05-06 11:43:21 +03:00
parent 7b01cf7b04
commit cd2f5895a6
@@ -355,10 +355,12 @@ fun <T : FirResolvable> 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"))