FIR: Fix incorrect inference errors for <expr>::class

Do not use outer expect type for <expr>
This commit is contained in:
Denis.Zharkov
2021-11-15 16:19:45 +03:00
committed by teamcityserver
parent 3ec7866ead
commit 07440ee4a1
4 changed files with 7 additions and 22 deletions
@@ -825,19 +825,19 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
override fun transformGetClassCall(getClassCall: FirGetClassCall, data: ResolutionMode): FirStatement {
val arg = getClassCall.argument
val dataWithExpectedType = if (arg is FirConstExpression<*>) {
val dataForLhs = if (arg is FirConstExpression<*>) {
withExpectedType(arg.typeRef.resolvedTypeFromPrototype(arg.kind.expectedConeType(session)))
} else {
data
ResolutionMode.ContextIndependent
}
val transformedGetClassCall = run {
val argument = getClassCall.argument
val replacedArgument: FirExpression =
if (argument is FirPropertyAccessExpression)
transformQualifiedAccessExpression(argument, dataWithExpectedType, isUsedAsReceiver = true) as FirExpression
transformQualifiedAccessExpression(argument, dataForLhs, isUsedAsReceiver = true) as FirExpression
else
argument.transform(this, dataWithExpectedType)
argument.transform(this, dataForLhs)
getClassCall.argumentList.transformArguments(object : FirTransformer<Nothing?>() {
@Suppress("UNCHECKED_CAST")