diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt index cf4ba657771..2a5097562ca 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/tower/PSICallResolver.kt @@ -564,7 +564,7 @@ class PSICallResolver( is DoubleColonLHS.Type -> { val qualifier = expressionTypingContext.trace.get(BindingContext.QUALIFIER, ktExpression.receiverExpression!!.referenceExpression()) if (qualifier is ClassQualifier) { - LHSResult.Type(qualifier) + LHSResult.Type(qualifier, lhsResult.type.unwrap()) } else { LHSResult.Empty // this is error case actually diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallArguments.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallArguments.kt index d2de50397e5..b345ff030bf 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallArguments.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/model/KotlinCallArguments.kt @@ -81,7 +81,7 @@ interface FunctionExpression : LambdaKotlinCallArgument { * D.E::foo <-> Expression */ sealed class LHSResult { - class Type(val qualifier: QualifierReceiver): LHSResult() { + class Type(val qualifier: QualifierReceiver, resolvedType: UnwrappedType): LHSResult() { val unboundDetailedReceiver: ReceiverValueWithSmartCastInfo init { @@ -89,7 +89,7 @@ sealed class LHSResult { "Should be ClassDescriptor: ${qualifier.descriptor}" } - val unboundReceiver = TransientReceiver((qualifier.descriptor as ClassDescriptor).defaultType) + val unboundReceiver = TransientReceiver(resolvedType) unboundDetailedReceiver = ReceiverValueWithSmartCastInfo(unboundReceiver, emptySet(), isStable = true) } }