[FIR] Add special node for implicit invoke calls
This commit is contained in:
+11
-3
@@ -65,6 +65,12 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
fields from constructor without listOf("isPrimary", "attributes")
|
||||
}
|
||||
|
||||
val abstractFunctionCallBuilder by builder {
|
||||
parents += qualifiedAccessBuilder
|
||||
parents += callBuilder
|
||||
fields from functionCall
|
||||
}
|
||||
|
||||
for (constructorType in listOf("FirPrimaryConstructor", "FirConstructorImpl")) {
|
||||
builder(constructor, constructorType) {
|
||||
parents += abstractConstructorBuilder
|
||||
@@ -148,9 +154,8 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
useTypes(emptyArgumentListType)
|
||||
}
|
||||
|
||||
builder(functionCall) {
|
||||
parents += qualifiedAccessBuilder
|
||||
parents += callBuilder
|
||||
val configurationForFunctionCallBuilder: LeafBuilderConfigurationContext.() -> Unit = {
|
||||
parents += abstractFunctionCallBuilder
|
||||
defaultNoReceivers()
|
||||
openBuilder()
|
||||
default("argumentList") {
|
||||
@@ -159,6 +164,9 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
useTypes(emptyArgumentListType)
|
||||
}
|
||||
|
||||
builder(functionCall, init = configurationForFunctionCallBuilder)
|
||||
builder(implicitInvokeCall, init = configurationForFunctionCallBuilder)
|
||||
|
||||
builder(qualifiedAccessExpression) {
|
||||
parents += qualifiedAccessBuilder
|
||||
defaultNoReceivers()
|
||||
|
||||
+1
@@ -102,6 +102,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val errorProperty = element("ErrorProperty", Declaration, variable, diagnosticHolder, typeParametersOwner)
|
||||
val qualifiedAccessExpression = element("QualifiedAccessExpression", Expression, expression, qualifiedAccess)
|
||||
val functionCall = element("FunctionCall", Expression, qualifiedAccessExpression, call)
|
||||
val implicitInvokeCall = element("ImplicitInvokeCall", Expression, functionCall)
|
||||
val delegatedConstructorCall = element("DelegatedConstructorCall", Expression, resolvable, call)
|
||||
val componentCall = element("ComponentCall", Expression, functionCall)
|
||||
val callableReferenceAccess = element("CallableReferenceAccess", Expression, qualifiedAccessExpression)
|
||||
|
||||
Reference in New Issue
Block a user