FIR: Get rid of the cycle in delegated properties resolution
^KT-32725 In Progress
This commit is contained in:
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
|
||||
import org.jetbrains.kotlin.fir.resolve.withNullability
|
||||
import org.jetbrains.kotlin.fir.returnExpressions
|
||||
@@ -46,8 +47,19 @@ fun Candidate.resolveArgumentExpression(
|
||||
isSafeCall,
|
||||
typeProvider
|
||||
)
|
||||
// TODO:!
|
||||
is FirCallableReferenceAccess -> preprocessCallableReference(argument, expectedType)
|
||||
is FirCallableReferenceAccess ->
|
||||
if (argument.calleeReference is FirResolvedNamedReference)
|
||||
resolvePlainExpressionArgument(
|
||||
csBuilder,
|
||||
argument,
|
||||
expectedType,
|
||||
sink,
|
||||
isReceiver,
|
||||
isSafeCall,
|
||||
typeProvider
|
||||
)
|
||||
else
|
||||
preprocessCallableReference(argument, expectedType)
|
||||
// NB: FirCallableReferenceAccess should be checked earlier
|
||||
is FirQualifiedAccessExpression -> resolvePlainExpressionArgument(
|
||||
csBuilder,
|
||||
|
||||
+4
@@ -258,6 +258,10 @@ class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransformer) :
|
||||
callableReferenceAccess: FirCallableReferenceAccess,
|
||||
data: Any?
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
if (callableReferenceAccess.calleeReference is FirResolvedNamedReference) {
|
||||
return callableReferenceAccess.compose()
|
||||
}
|
||||
|
||||
val transformedLHS =
|
||||
callableReferenceAccess.explicitReceiver?.transformSingle(this, noExpectedType)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user