[FIR] Make extensionReceiver and dispatchReceiver nullable
Get rid of FirNoReceiverExpression ^KT-59650 Fixed
This commit is contained in:
committed by
Space Team
parent
585c3fe4b5
commit
f203681ffa
+1
-2
@@ -212,8 +212,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
default("argumentList") {
|
||||
value = "FirEmptyArgumentList"
|
||||
}
|
||||
default("dispatchReceiver", "FirNoReceiverExpression")
|
||||
useTypes(noReceiverExpressionType)
|
||||
defaultNull("dispatchReceiver")
|
||||
useTypes(emptyArgumentListType)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -26,8 +26,8 @@ object FieldSets {
|
||||
val receivers by lazy {
|
||||
fieldSet(
|
||||
field("explicitReceiver", expression, nullable = true, withReplace = true).withTransform(),
|
||||
field("dispatchReceiver", expression, withReplace = true),
|
||||
field("extensionReceiver", expression, withReplace = true)
|
||||
field("dispatchReceiver", expression, nullable = true, withReplace = true),
|
||||
field("extensionReceiver", expression, nullable = true, withReplace = true)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -234,8 +234,8 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
integerLiteralOperatorCall.configure {
|
||||
// we need methods for transformation of receivers
|
||||
+field("dispatchReceiver", expression, withReplace = true).withTransform()
|
||||
+field("extensionReceiver", expression, withReplace = true).withTransform()
|
||||
+field("dispatchReceiver", expression, nullable = true, withReplace = true).withTransform()
|
||||
+field("extensionReceiver", expression, nullable = true, withReplace = true).withTransform()
|
||||
}
|
||||
|
||||
comparisonExpression.configure {
|
||||
@@ -411,7 +411,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
delegatedConstructorCall.configure {
|
||||
+field("constructedTypeRef", typeRef, withReplace = true)
|
||||
+field("dispatchReceiver", expression, withReplace = true).withTransform()
|
||||
+field("dispatchReceiver", expression, nullable = true, withReplace = true).withTransform()
|
||||
+field("calleeReference", reference, withReplace = true)
|
||||
generateBooleanFields("this", "super")
|
||||
}
|
||||
|
||||
@@ -56,7 +56,6 @@ val referenceToSimpleExpressionType = generatedType("", "FirExpressionRef<FirExp
|
||||
val safeCallCheckedSubjectReferenceType = generatedType("", "FirExpressionRef<FirCheckedSafeCallSubject>")
|
||||
|
||||
val firModuleDataType = type("fir", "FirModuleData")
|
||||
val noReceiverExpressionType = generatedType("expressions.impl", "FirNoReceiverExpression", firType = true)
|
||||
val firImplicitTypeWithoutSourceType = generatedType("types.impl", "FirImplicitTypeRefImplWithoutSource")
|
||||
val firQualifierPartType = type("fir.types", "FirQualifierPart")
|
||||
val simpleNamedReferenceType = generatedType("references.impl", "FirSimpleNamedReference")
|
||||
|
||||
+1
-4
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.fir.tree.generator.context
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.model.*
|
||||
import org.jetbrains.kotlin.fir.tree.generator.noReceiverExpressionType
|
||||
import org.jetbrains.kotlin.fir.tree.generator.util.DummyDelegate
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
import kotlin.reflect.KProperty
|
||||
@@ -27,9 +26,7 @@ abstract class AbstractBuilderConfigurator<T : AbstractFirTreeBuilder>(val firTr
|
||||
if (!notNullExplicitReceiver) {
|
||||
defaultNull("explicitReceiver")
|
||||
}
|
||||
default("dispatchReceiver", "FirNoReceiverExpression")
|
||||
default("extensionReceiver", "FirNoReceiverExpression")
|
||||
useTypes(noReceiverExpressionType)
|
||||
defaultNull("dispatchReceiver", "extensionReceiver")
|
||||
}
|
||||
|
||||
fun default(field: String, value: String) {
|
||||
|
||||
+1
-5
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.tree.generator.context
|
||||
|
||||
import org.jetbrains.kotlin.fir.tree.generator.constructClassLikeTypeImport
|
||||
import org.jetbrains.kotlin.fir.tree.generator.model.*
|
||||
import org.jetbrains.kotlin.fir.tree.generator.noReceiverExpressionType
|
||||
import org.jetbrains.kotlin.fir.tree.generator.printer.call
|
||||
import org.jetbrains.kotlin.fir.tree.generator.standardClassIdsType
|
||||
|
||||
@@ -109,10 +108,7 @@ abstract class AbstractFirTreeImplementationConfigurator {
|
||||
}
|
||||
|
||||
fun defaultNoReceivers() {
|
||||
defaultNull("explicitReceiver")
|
||||
default("dispatchReceiver", "FirNoReceiverExpression")
|
||||
default("extensionReceiver", "FirNoReceiverExpression")
|
||||
useTypes(noReceiverExpressionType)
|
||||
defaultNull("explicitReceiver", "dispatchReceiver", "extensionReceiver")
|
||||
}
|
||||
|
||||
fun default(field: String, value: String) {
|
||||
|
||||
+2
-2
@@ -223,7 +223,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
||||
println(
|
||||
"""
|
||||
|if (dispatchReceiver !== explicitReceiver) {
|
||||
| dispatchReceiver = dispatchReceiver.transform(transformer, data)
|
||||
| dispatchReceiver = dispatchReceiver?.transform(transformer, data)
|
||||
| }
|
||||
""".trimMargin(),
|
||||
)
|
||||
@@ -232,7 +232,7 @@ fun SmartPrinter.printImplementation(implementation: Implementation) {
|
||||
println(
|
||||
"""
|
||||
|if (extensionReceiver !== explicitReceiver && extensionReceiver !== dispatchReceiver) {
|
||||
| extensionReceiver = extensionReceiver.transform(transformer, data)
|
||||
| extensionReceiver = extensionReceiver?.transform(transformer, data)
|
||||
| }
|
||||
""".trimMargin(),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user