[FIR] introduce FirReceiverParameter

^KT-54417
This commit is contained in:
Dmitrii Gridin
2022-10-12 16:26:28 +02:00
committed by Space Team
parent e6801abce8
commit be7d282974
142 changed files with 821 additions and 580 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -60,7 +60,13 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
val functionBuilder by builder {
parents += declarationBuilder
parents += annotationContainerBuilder
fields from function without listOf("symbol", "resolvePhase", "controlFlowGraphReference", "receiverTypeRef", "typeParameters")
fields from function without listOf(
"symbol",
"resolvePhase",
"controlFlowGraphReference",
"receiverParameter",
"typeParameters",
)
}
val loopJumpBuilder by builder {
@@ -112,6 +118,14 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
withCopy()
}
builder(annotation) {
withCopy()
}
builder(receiverParameter) {
withCopy()
}
builder(annotationCall) {
parents += callBuilder
default("argumentList") {
@@ -120,6 +134,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
default("argumentMapping", "FirEmptyAnnotationArgumentMapping")
default("annotationTypeRef", "FirImplicitTypeRefImpl(null)")
useTypes(emptyArgumentListType, emptyAnnotationArgumentMappingType, implicitTypeRefType)
withCopy()
}
builder(errorAnnotationCall) {
@@ -303,7 +318,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
}
builder(valueParameter, type = "FirDefaultSetterValueParameter") {
defaultNull("defaultValue", "initializer", "delegate", "receiverTypeRef", "getter", "setter")
defaultNull("defaultValue", "initializer", "delegate", "receiverParameter", "getter", "setter")
defaultFalse("isCrossinline", "isNoinline", "isVararg", "isVar")
defaultTrue("isVal")
}
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -53,8 +53,6 @@ object FieldSets {
val typeRefField = field(typeRef, withReplace = true)
fun receiverTypeRef(nullable: Boolean = false) = field("receiverTypeRef", typeRef, nullable)
val valueParameters by lazy { fieldList(valueParameter) }
val typeParameters by lazy { fieldList("typeParameters", typeParameter) }
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -40,6 +40,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val variable by sealedElement(Declaration, callableDeclaration, statement)
val valueParameter by element(Declaration, variable, controlFlowGraphOwner)
val receiverParameter by element(Declaration, annotationContainer)
val property by element(Declaration, variable, typeParametersOwner, controlFlowGraphOwner)
val field by element(Declaration, variable, controlFlowGraphOwner)
val enumEntry by element(Declaration, variable)
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -219,7 +219,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
defaultFalse("isVar", withGetter = true)
defaultNull(
"receiverTypeRef",
"receiverParameter",
"initializer",
"delegate",
"getter", "setter",
@@ -236,13 +236,13 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
}
publicImplementation()
defaultNull("receiverTypeRef", "delegate", "getter", "setter", withGetter = true)
defaultNull("receiverParameter", "delegate", "getter", "setter", withGetter = true)
}
impl(enumEntry) {
defaultTrue("isVal", withGetter = true)
defaultFalse("isVar", withGetter = true)
defaultNull("receiverTypeRef", "delegate", "getter", "setter", withGetter = true)
defaultNull("receiverParameter", "delegate", "getter", "setter", withGetter = true)
}
impl(namedArgumentExpression) {
@@ -331,7 +331,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
noImpl(anonymousFunctionExpression)
impl(propertyAccessor) {
default("receiverTypeRef") {
default("receiverParameter") {
value = "null"
withGetter = true
}
@@ -434,7 +434,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
}
impl(errorFunction) {
defaultNull("receiverTypeRef", "body", withGetter = true)
defaultNull("receiverParameter", "body", withGetter = true)
default("returnTypeRef", "FirErrorTypeRefImpl(null, null, diagnostic, false)")
useTypes(errorTypeRefImplType)
}
@@ -469,7 +469,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
impl(valueParameter) {
defaultTrue("isVal", withGetter = true)
defaultFalse("isVar", withGetter = true)
defaultNull("getter", "setter", "initializer", "delegate", "receiverTypeRef", withGetter = true)
defaultNull("getter", "setter", "initializer", "delegate", "receiverParameter", withGetter = true)
}
impl(valueParameter, "FirDefaultSetterValueParameter") {
@@ -88,7 +88,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
callableDeclaration.configure {
+field("returnTypeRef", typeRef, withReplace = true).withTransform()
+field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform()
+field("receiverParameter", receiverParameter, nullable = true, withReplace = true).withTransform()
+field("deprecationsProvider", deprecationsProviderType).withReplace().apply { isMutable = true }
+symbol("FirCallableSymbol", "out FirCallableDeclaration")
@@ -393,6 +393,11 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
generateBooleanFields("crossinline", "noinline", "vararg")
}
receiverParameter.configure {
+field("type", typeRef).withTransform()
+annotations
}
variable.configure {
+name
+symbol("FirVariableSymbol", "out FirVariable")