FIR: Introduce FirContextReceiverArgumentListOwner

Add it as a supertype for FirQualifiedAccess and FirDelegatedConstructorCall

^KT-51889 Related
This commit is contained in:
Denis.Zharkov
2022-04-29 18:21:14 +03:00
committed by teamcity
parent 81416d1c46
commit 299c02a822
41 changed files with 173 additions and 108 deletions
@@ -100,7 +100,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val equalityOperatorCall by element(Expression, expression, call)
val whenExpression by element(Expression, expression, resolvable)
val whenBranch by element(Expression)
val qualifiedAccess by element(Expression, resolvable, statement)
val contextReceiverArgumentListOwner by element(Expression)
val qualifiedAccess by element(Expression, resolvable, statement, contextReceiverArgumentListOwner)
val checkNotNullCall by element(Expression, expression, call, resolvable)
val elvisExpression by element(Expression, expression, resolvable)
@@ -115,7 +116,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val functionCall by element(Expression, qualifiedAccessExpression, call)
val integerLiteralOperatorCall by element(Expression, functionCall)
val implicitInvokeCall by element(Expression, functionCall)
val delegatedConstructorCall by element(Expression, resolvable, call)
val delegatedConstructorCall by element(Expression, resolvable, call, contextReceiverArgumentListOwner)
val componentCall by element(Expression, functionCall)
val callableReferenceAccess by element(Expression, qualifiedAccessExpression)
val thisReceiverExpression by element(Expression, qualifiedAccessExpression)
@@ -191,11 +191,14 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+field("rhs", expression).withTransform()
}
contextReceiverArgumentListOwner.configure {
+fieldList("contextReceiverArguments", expressionType, withReplace = true)
}
qualifiedAccess.configure {
+typeArguments.withTransform()
+receivers
+field("source", sourceElementType, nullable = true, withReplace = true)
+fieldList("contextReceiverArguments", expressionType, withReplace = true)
}
propertyAccessExpression.configure {