[FIR] Mark more calls origin as OPERATOR

This commit is contained in:
Andrey Zinovyev
2021-05-18 18:19:46 +03:00
committed by TeamCityServer
parent 0a45b3a50b
commit 07a8ae7e71
18 changed files with 51 additions and 54 deletions
@@ -388,10 +388,11 @@ class ExpressionsConverter(
buildFunctionCall {
source = unaryExpression.toFirSourceElement()
calleeReference = buildSimpleNamedReference {
source = this@buildFunctionCall.source
source = operationReference?.toFirSourceElement() ?: this@buildFunctionCall.source
name = conventionCallName
}
explicitReceiver = receiver
origin = FirFunctionCallOrigin.OPERATOR
}
}
else -> throw IllegalStateException("Unexpected expression: ${unaryExpression.asText}")
@@ -843,6 +844,7 @@ class ExpressionsConverter(
arguments += indices
getArgument?.let { arguments += it }
}
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -1968,6 +1968,7 @@ open class RawFirBuilder(
name = conventionCallName
}
explicitReceiver = receiver
origin = FirFunctionCallOrigin.OPERATOR
}
}
else -> throw IllegalStateException("Unexpected expression: ${expression.text}")
@@ -2064,6 +2065,7 @@ open class RawFirBuilder(
arguments += getArgument
}
}
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -520,6 +520,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
} else {
generateResolvedAccessExpression(desugaredSource, initialValueVar)
}
origin = FirFunctionCallOrigin.OPERATOR
}
// resultVar is only used for prefix increment/decrement.
@@ -643,6 +644,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
} else {
generateResolvedAccessExpression(desugaredSource, initialValueVar)
}
origin = FirFunctionCallOrigin.OPERATOR
}
// resultVar is only used for prefix increment/decrement.
@@ -759,6 +761,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
arguments += generateResolvedAccessExpression(indexVar.source, indexVar)
}
}
origin = FirFunctionCallOrigin.OPERATOR
}
// initialValueVar is only used for postfix increment/decrement (stores the argument value before increment/decrement).
@@ -781,6 +784,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
} else {
generateResolvedAccessExpression(desugaredSource, initialValueVar)
}
origin = FirFunctionCallOrigin.OPERATOR
}
// resultVar is only used for prefix increment/decrement.
@@ -809,6 +813,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
resultInitializer
}
}
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -979,6 +984,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
ConeSimpleDiagnostic("No value for array set", DiagnosticKind.Syntax)
)
}
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -1021,6 +1027,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
calleeReference = buildSimpleNamedReference {
name = OperatorNameConventions.SET
}
origin = FirFunctionCallOrigin.OPERATOR
argumentList = buildArgumentList {
for (indexVariable in indexVariables) {
arguments += indexVariable.toQualifiedAccess()
@@ -1036,6 +1043,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
arguments += indexVariable.toQualifiedAccess()
}
}
origin = FirFunctionCallOrigin.OPERATOR
}
val operatorCall = buildFunctionCall {
@@ -1052,6 +1060,7 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
)
)
}
origin = FirFunctionCallOrigin.OPERATOR
}
arguments += operatorCall
}
@@ -193,6 +193,7 @@ fun FirExpression.generateContainsOperation(
name = OperatorNameConventions.NOT
}
explicitReceiver = containsCall
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -242,6 +243,7 @@ private fun FirExpression.createConventionCall(
}
explicitReceiver = this@createConventionCall
argumentList = buildUnaryArgumentList(argument)
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -396,6 +398,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate(
name = PROVIDE_DELEGATE
}
argumentList = buildBinaryArgumentList(thisRef(forDispatchReceiver = true), propertyRef())
origin = FirFunctionCallOrigin.OPERATOR
}
delegate = delegateBuilder.build()
if (stubMode) return
@@ -421,6 +424,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate(
name = GET_VALUE
}
argumentList = buildBinaryArgumentList(thisRef(), propertyRef())
origin = FirFunctionCallOrigin.OPERATOR
}
target = returnTarget
}
@@ -473,6 +477,7 @@ fun FirPropertyBuilder.generateAccessorsByDelegate(
}
}
}
origin = FirFunctionCallOrigin.OPERATOR
}
)
if (annotations != null) {
@@ -276,6 +276,8 @@ internal object CheckCallModifiers : CheckerStage() {
sink.reportDiagnostic(InfixCallOfNonInfixFunction(functionSymbol))
callInfo.callSite.origin == FirFunctionCallOrigin.OPERATOR && !functionSymbol.fir.isOperator ->
sink.reportDiagnostic(OperatorCallOfNonOperatorFunction(functionSymbol))
callInfo.isImplicitInvoke && !functionSymbol.fir.isOperator ->
sink.reportDiagnostic(OperatorCallOfNonOperatorFunction(functionSymbol))
}
}
}
@@ -51,6 +51,7 @@ private class ConeConditionalEffectToFirVisitor(
return buildFunctionCall {
calleeReference = buildSimpleNamedReference { name = OperatorNameConventions.NOT }
this.explicitReceiver = explicitReceiver
origin = FirFunctionCallOrigin.OPERATOR
}
}
@@ -35,7 +35,7 @@ internal class FirImplicitInvokeCallImpl(
override var calleeReference: FirNamedReference,
) : FirImplicitInvokeCall() {
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
override val origin: FirFunctionCallOrigin = FirFunctionCallOrigin.REGULAR
override val origin: FirFunctionCallOrigin = FirFunctionCallOrigin.OPERATOR
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
typeRef.accept(visitor, data)
@@ -153,16 +153,12 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
kind = OpenClass
}
fun ImplementationContext.defaultFunctionOrigin() {
default("origin", "FirFunctionCallOrigin.REGULAR")
}
impl(implicitInvokeCall) {
defaultFunctionOrigin()
default("origin", "FirFunctionCallOrigin.OPERATOR")
}
impl(componentCall) {
defaultFunctionOrigin()
default("origin", "FirFunctionCallOrigin.REGULAR")
}
impl(qualifiedAccessExpression)