FIR: provide 'replaceSource' only for FirQualifiedAccess inheritors
This commit is contained in:
+10
-1
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
|
||||
object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuilder) {
|
||||
fun configureFields() = configure {
|
||||
AbstractFirTreeBuilder.baseFirElement.configure {
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
+field("source", sourceElementType, nullable = true)
|
||||
}
|
||||
|
||||
annotationContainer.configure {
|
||||
@@ -195,6 +195,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
qualifiedAccess.configure {
|
||||
+typeArguments.withTransform()
|
||||
+receivers
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
}
|
||||
|
||||
constExpression.configure {
|
||||
@@ -203,8 +204,13 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+field("value", "T", null)
|
||||
}
|
||||
|
||||
qualifiedAccessExpression.configure {
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
}
|
||||
|
||||
functionCall.configure {
|
||||
+field("calleeReference", namedReference)
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
}
|
||||
|
||||
comparisonExpression.configure {
|
||||
@@ -451,6 +457,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+field("originalExpression", qualifiedAccessExpression)
|
||||
+field("typesFromSmartCast", "Collection<ConeKotlinType>", null, customType = coneKotlinTypeType)
|
||||
+field("originalType", typeRef)
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
}
|
||||
|
||||
safeCallExpression.configure {
|
||||
@@ -468,6 +475,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
callableReferenceAccess.configure {
|
||||
+field("calleeReference", namedReference, withReplace = true).withTransform()
|
||||
+booleanField("hasQuestionMarkAtLHS", withReplace = true)
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
}
|
||||
|
||||
getClassCall.configure {
|
||||
@@ -583,6 +591,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
|
||||
thisReceiverExpression.configure {
|
||||
+field("calleeReference", thisReference)
|
||||
+field("source", sourceElementType, nullable = true, withReplace = true)
|
||||
}
|
||||
|
||||
whenExpression.configure {
|
||||
|
||||
+2
-1
@@ -95,7 +95,8 @@ fun SmartPrinter.printElement(element: Element) {
|
||||
}
|
||||
|
||||
allFields.filter { it.withReplace }.forEach {
|
||||
it.replaceDeclaration(overridenFields[it, it], forceNullable = it.useNullableForReplace)
|
||||
val override = overridenFields[it, it] && !(it.name == "source" && fullQualifiedName.endsWith("FirQualifiedAccess"))
|
||||
it.replaceDeclaration(override, forceNullable = it.useNullableForReplace)
|
||||
for (overridenType in it.overridenTypes) {
|
||||
it.replaceDeclaration(true, overridenType)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user