[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.inference.inferenceComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.StoreNameReference
|
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.FirAbstractBodyResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirExpressionsResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
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) {
|
if (reducedCandidates.size == 1) {
|
||||||
val candidate = reducedCandidates.single()
|
val candidate = reducedCandidates.single()
|
||||||
resultExpression = resultExpression.transformDispatchReceiver(StoreReceiver, candidate.dispatchReceiverExpression())
|
resultExpression.apply {
|
||||||
resultExpression = resultExpression.transformExtensionReceiver(StoreReceiver, candidate.chosenExtensionReceiverExpression())
|
replaceDispatchReceiver(candidate.dispatchReceiverExpression())
|
||||||
resultExpression.replaceContextReceiverArguments(candidate.contextReceiverArguments())
|
replaceExtensionReceiver(candidate.chosenExtensionReceiverExpression())
|
||||||
|
replaceContextReceiverArguments(candidate.contextReceiverArguments())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (resultExpression is FirExpression) transformer.storeTypeFromCallee(resultExpression)
|
if (resultExpression is FirExpression) transformer.storeTypeFromCallee(resultExpression)
|
||||||
return resultExpression
|
return resultExpression
|
||||||
@@ -592,7 +593,7 @@ class FirCallResolver(
|
|||||||
if (singleCandidate != null) {
|
if (singleCandidate != null) {
|
||||||
val symbol = singleCandidate.symbol
|
val symbol = singleCandidate.symbol
|
||||||
if (symbol is FirConstructorSymbol && symbol.fir.isInner) {
|
if (symbol is FirConstructorSymbol && symbol.fir.isInner) {
|
||||||
transformDispatchReceiver(StoreReceiver, singleCandidate.dispatchReceiverExpression())
|
replaceDispatchReceiver(singleCandidate.dispatchReceiverExpression())
|
||||||
}
|
}
|
||||||
replaceContextReceiverArguments(singleCandidate.contextReceiverArguments())
|
replaceContextReceiverArguments(singleCandidate.contextReceiverArguments())
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-5
@@ -135,9 +135,10 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
.transformCalleeReference(
|
.transformCalleeReference(
|
||||||
StoreCalleeReference,
|
StoreCalleeReference,
|
||||||
calleeReference.toResolvedReference(),
|
calleeReference.toResolvedReference(),
|
||||||
)
|
).apply {
|
||||||
.transformDispatchReceiver(StoreReceiver, dispatchReceiver)
|
replaceDispatchReceiver(dispatchReceiver)
|
||||||
.transformExtensionReceiver(StoreReceiver, extensionReceiver) as T
|
replaceExtensionReceiver(extensionReceiver)
|
||||||
|
} as T
|
||||||
|
|
||||||
result.replaceContextReceiverArguments(subCandidate.contextReceiverArguments())
|
result.replaceContextReceiverArguments(subCandidate.contextReceiverArguments())
|
||||||
|
|
||||||
@@ -388,8 +389,10 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
return callableReferenceAccess.transformCalleeReference(
|
return callableReferenceAccess.transformCalleeReference(
|
||||||
StoreCalleeReference,
|
StoreCalleeReference,
|
||||||
resolvedReference,
|
resolvedReference,
|
||||||
).transformDispatchReceiver(StoreReceiver, subCandidate.dispatchReceiverExpression())
|
).apply {
|
||||||
.transformExtensionReceiver(StoreReceiver, subCandidate.chosenExtensionReceiverExpression())
|
replaceDispatchReceiver(subCandidate.dispatchReceiverExpression())
|
||||||
|
replaceExtensionReceiver(subCandidate.chosenExtensionReceiverExpression())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirNamedReferenceWithCandidate.toErrorReference(diagnostic: ConeDiagnostic): FirNamedReference {
|
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() {
|
internal fun FirValueParameter.transformVarargTypeToArrayType() {
|
||||||
if (isVararg) {
|
if (isVararg) {
|
||||||
this.transformTypeToArrayType()
|
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.diagnostics.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.FirStubInferenceSession
|
import org.jetbrains.kotlin.fir.resolve.inference.FirStubInferenceSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
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.resolve.transformers.replaceLambdaArgumentInvocationKinds
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperator
|
import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperator
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperatorForUnsignedType
|
import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperatorForUnsignedType
|
||||||
@@ -235,7 +234,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT
|
|||||||
lastDispatchReceiver
|
lastDispatchReceiver
|
||||||
}
|
}
|
||||||
implicitReceiver?.receiverExpression?.let {
|
implicitReceiver?.receiverExpression?.let {
|
||||||
superReferenceContainer.transformDispatchReceiver(StoreReceiver, it)
|
superReferenceContainer.replaceDispatchReceiver(it)
|
||||||
}
|
}
|
||||||
val superTypeRefs = implicitReceiver?.boundSymbol?.fir?.superTypeRefs
|
val superTypeRefs = implicitReceiver?.boundSymbol?.fir?.superTypeRefs
|
||||||
val superTypeRef = superReference.superTypeRef
|
val superTypeRef = superReference.superTypeRef
|
||||||
|
|||||||
Reference in New Issue
Block a user