[FIR] Get rid of StoreReceiver
All usages of it are replaced with `replaceXXXReceiver`
This commit is contained in:
committed by
Space Team
parent
d45ae59d33
commit
3f8beb0b52
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.fir.resolve.inference.ResolvedCallableReferenceAtom
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.StoreNameReference
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.StoreReceiver
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
||||
@@ -320,12 +319,14 @@ class FirCallResolver(
|
||||
}
|
||||
}
|
||||
|
||||
var resultExpression = qualifiedAccess.transformCalleeReference(StoreNameReference, nameReference)
|
||||
val resultExpression = qualifiedAccess.transformCalleeReference(StoreNameReference, nameReference)
|
||||
if (reducedCandidates.size == 1) {
|
||||
val candidate = reducedCandidates.single()
|
||||
resultExpression = resultExpression.transformDispatchReceiver(StoreReceiver, candidate.dispatchReceiverExpression())
|
||||
resultExpression = resultExpression.transformExtensionReceiver(StoreReceiver, candidate.chosenExtensionReceiverExpression())
|
||||
resultExpression.replaceContextReceiverArguments(candidate.contextReceiverArguments())
|
||||
resultExpression.apply {
|
||||
replaceDispatchReceiver(candidate.dispatchReceiverExpression())
|
||||
replaceExtensionReceiver(candidate.chosenExtensionReceiverExpression())
|
||||
replaceContextReceiverArguments(candidate.contextReceiverArguments())
|
||||
}
|
||||
}
|
||||
if (resultExpression is FirExpression) transformer.storeTypeFromCallee(resultExpression)
|
||||
return resultExpression
|
||||
@@ -592,7 +593,7 @@ class FirCallResolver(
|
||||
if (singleCandidate != null) {
|
||||
val symbol = singleCandidate.symbol
|
||||
if (symbol is FirConstructorSymbol && symbol.fir.isInner) {
|
||||
transformDispatchReceiver(StoreReceiver, singleCandidate.dispatchReceiverExpression())
|
||||
replaceDispatchReceiver(singleCandidate.dispatchReceiverExpression())
|
||||
}
|
||||
replaceContextReceiverArguments(singleCandidate.contextReceiverArguments())
|
||||
}
|
||||
|
||||
+8
-5
@@ -135,9 +135,10 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
.transformCalleeReference(
|
||||
StoreCalleeReference,
|
||||
calleeReference.toResolvedReference(),
|
||||
)
|
||||
.transformDispatchReceiver(StoreReceiver, dispatchReceiver)
|
||||
.transformExtensionReceiver(StoreReceiver, extensionReceiver) as T
|
||||
).apply {
|
||||
replaceDispatchReceiver(dispatchReceiver)
|
||||
replaceExtensionReceiver(extensionReceiver)
|
||||
} as T
|
||||
|
||||
result.replaceContextReceiverArguments(subCandidate.contextReceiverArguments())
|
||||
|
||||
@@ -388,8 +389,10 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
return callableReferenceAccess.transformCalleeReference(
|
||||
StoreCalleeReference,
|
||||
resolvedReference,
|
||||
).transformDispatchReceiver(StoreReceiver, subCandidate.dispatchReceiverExpression())
|
||||
.transformExtensionReceiver(StoreReceiver, subCandidate.chosenExtensionReceiverExpression())
|
||||
).apply {
|
||||
replaceDispatchReceiver(subCandidate.dispatchReceiverExpression())
|
||||
replaceExtensionReceiver(subCandidate.chosenExtensionReceiverExpression())
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirNamedReferenceWithCandidate.toErrorReference(diagnostic: ConeDiagnostic): FirNamedReference {
|
||||
|
||||
-7
@@ -100,13 +100,6 @@ internal object StoreCalleeReference : FirTransformer<FirNamedReference>() {
|
||||
}
|
||||
}
|
||||
|
||||
internal object StoreReceiver : FirTransformer<FirExpression>() {
|
||||
override fun <E : FirElement> transformElement(element: E, data: FirExpression): E {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return (data as E)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun FirValueParameter.transformVarargTypeToArrayType() {
|
||||
if (isVararg) {
|
||||
this.transformTypeToArrayType()
|
||||
|
||||
+1
-2
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.fir.resolve.dfa.unwrapSmartcastExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.*
|
||||
import org.jetbrains.kotlin.fir.resolve.inference.FirStubInferenceSession
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.StoreReceiver
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.replaceLambdaArgumentInvocationKinds
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperator
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperatorForUnsignedType
|
||||
@@ -235,7 +234,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
||||
lastDispatchReceiver
|
||||
}
|
||||
implicitReceiver?.receiverExpression?.let {
|
||||
superReferenceContainer.transformDispatchReceiver(StoreReceiver, it)
|
||||
superReferenceContainer.replaceDispatchReceiver(it)
|
||||
}
|
||||
val superTypeRefs = implicitReceiver?.boundSymbol?.fir?.superTypeRefs
|
||||
val superTypeRef = superReference.superTypeRef
|
||||
|
||||
Reference in New Issue
Block a user