[FIR] do not use FirValueParameter for function type parameter

As it is a different abstraction, introduced FirFunctionTypeParameter instead

Also, fix syntax checkers for function type parameter

^KT-55035 fixed
This commit is contained in:
Ilya Kirillov
2022-10-21 02:52:24 +02:00
committed by teamcity
parent 1b9fdeadfe
commit b6481ed891
40 changed files with 479 additions and 165 deletions
@@ -45,6 +45,8 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val field by element(Declaration, variable, controlFlowGraphOwner)
val enumEntry by element(Declaration, variable)
val functionTypeParameter by element(Other, baseFirElement)
val classLikeDeclaration by sealedElement(Declaration, memberDeclaration, statement)
val klass by sealedElement("Class", Declaration, classLikeDeclaration, statement, typeParameterRefsOwner)
val regularClass by element(Declaration, klass, controlFlowGraphOwner)
@@ -411,6 +411,12 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
needTransformOtherChildren()
}
functionTypeParameter.configure {
+field("name", nameType, nullable = true)
+field("returnTypeRef", typeRef)
}
errorProperty.configure {
+symbol("FirErrorPropertySymbol")
}
@@ -640,7 +646,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
functionTypeRef.configure {
+field("receiverTypeRef", typeRef, nullable = true)
+valueParameters
+fieldList("parameters", functionTypeParameter)
+returnTypeRef
+booleanField("isSuspend")