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