[FIR] Add FirPropertyAccessExpression that inherits FirQualifiedAccessExpression
This commit is contained in:
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeStubDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedReifiedParameterReference
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirQualifiedAccessExpressionImpl
|
||||
import org.jetbrains.kotlin.fir.references.*
|
||||
import org.jetbrains.kotlin.fir.references.builder.buildBackingFieldReference
|
||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||
@@ -287,7 +286,7 @@ class FirCallResolver(
|
||||
nameReference.source,
|
||||
qualifiedAccess.explicitReceiver,
|
||||
referencedSymbol,
|
||||
(qualifiedAccess as? FirQualifiedAccessExpressionImpl)?.nonFatalDiagnostics
|
||||
(qualifiedAccess as? FirPropertyAccessExpression)?.nonFatalDiagnostics
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -124,12 +124,10 @@ class CandidateFactory private constructor(
|
||||
|
||||
fun PostponedArgumentsAnalyzerContext.addSubsystemFromExpression(statement: FirStatement) {
|
||||
when (statement) {
|
||||
is FirFunctionCall,
|
||||
is FirQualifiedAccessExpression,
|
||||
is FirWhenExpression,
|
||||
is FirTryExpression,
|
||||
is FirCheckNotNullCall,
|
||||
is FirCallableReferenceAccess,
|
||||
is FirElvisExpression
|
||||
-> (statement as FirResolvable).candidate()?.let { addOtherSystem(it.system.asReadOnlyStorage()) }
|
||||
|
||||
|
||||
+2
-3
@@ -8,10 +8,9 @@ package org.jetbrains.kotlin.fir.resolve.calls.tower
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessExpressionBuilder
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.FirPropertyAccessExpressionBuilder
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
@@ -278,7 +277,7 @@ private fun BodyResolveComponents.createExplicitReceiverForInvokeByCallable(
|
||||
extensionReceiverExpression: FirExpression,
|
||||
symbol: FirCallableSymbol<*>
|
||||
): FirExpression {
|
||||
return FirQualifiedAccessExpressionBuilder().apply {
|
||||
return FirPropertyAccessExpressionBuilder().apply {
|
||||
calleeReference = FirNamedReferenceWithCandidate(
|
||||
null,
|
||||
symbol.callableId.callableName,
|
||||
|
||||
+11
@@ -170,6 +170,13 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
return result
|
||||
}
|
||||
|
||||
override fun transformPropertyAccessExpression(
|
||||
propertyAccessExpression: FirPropertyAccessExpression,
|
||||
data: ExpectedArgumentType?
|
||||
): FirStatement {
|
||||
return transformQualifiedAccessExpression(propertyAccessExpression, data)
|
||||
}
|
||||
|
||||
override fun transformFunctionCall(functionCall: FirFunctionCall, data: ExpectedArgumentType?): FirStatement {
|
||||
val calleeReference = functionCall.calleeReference as? FirNamedReferenceWithCandidate
|
||||
?: return functionCall
|
||||
@@ -406,6 +413,10 @@ class FirCallCompletionResultsWriterTransformer(
|
||||
session.lookupTracker?.recordTypeResolveAsLookup(resolvedTypeRef, qualifiedAccessExpression.source, null)
|
||||
return qualifiedAccessExpression
|
||||
}
|
||||
|
||||
override fun transformPropertyAccessExpression(propertyAccessExpression: FirPropertyAccessExpression, data: Any?): FirStatement {
|
||||
return transformQualifiedAccessExpression(propertyAccessExpression, data)
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirTypeRef.substitute(candidate: Candidate): ConeKotlinType =
|
||||
|
||||
+7
@@ -103,6 +103,13 @@ open class FirBodyResolveTransformer(
|
||||
return expressionsTransformer.transformQualifiedAccessExpression(qualifiedAccessExpression, data)
|
||||
}
|
||||
|
||||
override fun transformPropertyAccessExpression(
|
||||
propertyAccessExpression: FirPropertyAccessExpression,
|
||||
data: ResolutionMode
|
||||
): FirStatement {
|
||||
return expressionsTransformer.transformQualifiedAccessExpression(propertyAccessExpression, data)
|
||||
}
|
||||
|
||||
override fun transformFunctionCall(functionCall: FirFunctionCall, data: ResolutionMode): FirStatement {
|
||||
return expressionsTransformer.transformFunctionCall(functionCall, data)
|
||||
}
|
||||
|
||||
+7
@@ -153,6 +153,13 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
|
||||
return result
|
||||
}
|
||||
|
||||
override fun transformPropertyAccessExpression(
|
||||
propertyAccessExpression: FirPropertyAccessExpression,
|
||||
data: ResolutionMode
|
||||
): FirStatement {
|
||||
return transformQualifiedAccessExpression(propertyAccessExpression, data)
|
||||
}
|
||||
|
||||
protected open fun resolveQualifiedAccessAndSelectCandidate(qualifiedAccessExpression: FirQualifiedAccessExpression): FirStatement {
|
||||
return callResolver.resolveVariableAccessAndSelectCandidate(qualifiedAccessExpression)
|
||||
}
|
||||
|
||||
+7
@@ -138,6 +138,13 @@ class ConeEffectExtractor(
|
||||
return toValueParameterReference(type, index, name)
|
||||
}
|
||||
|
||||
override fun visitPropertyAccessExpression(
|
||||
propertyAccessExpression: FirPropertyAccessExpression,
|
||||
data: Nothing?
|
||||
): ConeContractDescriptionElement? {
|
||||
return visitQualifiedAccessExpression(propertyAccessExpression, data)
|
||||
}
|
||||
|
||||
private fun toValueParameterReference(
|
||||
type: ConeKotlinType,
|
||||
index: Int,
|
||||
|
||||
-1
@@ -43,7 +43,6 @@ class FirIntegerOperatorCall @FirImplementationDetail constructor(
|
||||
explicitReceiver,
|
||||
dispatchReceiver,
|
||||
extensionReceiver,
|
||||
mutableListOf(),
|
||||
argumentList,
|
||||
calleeReference,
|
||||
FirFunctionCallOrigin.Operator
|
||||
|
||||
Reference in New Issue
Block a user