[FIR] Add special node for elvis call

#KT-39074
This commit is contained in:
Dmitriy Novozhilov
2020-06-30 13:54:29 +03:00
parent 648953085f
commit b49b3245af
10 changed files with 237 additions and 0 deletions
@@ -287,6 +287,11 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
useTypes(stubReferenceType)
}
builder(elvisCall) {
default("calleeReference", "FirStubReference")
useTypes(stubReferenceType)
}
builder(anonymousInitializer) {
default("symbol", "FirAnonymousInitializerSymbol()")
}
@@ -91,6 +91,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val qualifiedAccessWithoutCallee = element("QualifiedAccessWithoutCallee", Expression, statement)
val qualifiedAccess = element("QualifiedAccess", Expression, qualifiedAccessWithoutCallee, resolvable)
val checkNotNullCall = element("CheckNotNullCall", Expression, expression, call, resolvable)
val elvisCall = element("ElvisCall", Expression, expression, resolvable)
val arrayOfCall = element("ArrayOfCall", Expression, expression, call)
val arraySetCall = element("AugmentedArraySetCall", Expression, statement)
@@ -187,6 +187,11 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
needTransformOtherChildren()
}
elvisCall.configure {
+field("lhs", expression).withTransform()
+field("rhs", expression).withTransform()
}
qualifiedAccessWithoutCallee.configure {
+typeArguments.withTransform()
+receivers