diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index 1653503f2cf..811fcc78f50 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -139,7 +139,12 @@ class FirCallCompletionResultsWriterTransformer( qualifiedAccessExpression.replaceContextReceiverArguments(subCandidate.contextReceiverArguments()) if (qualifiedAccessExpression is FirPropertyAccessExpressionImpl && calleeReference.candidate.currentApplicability == CandidateApplicability.K2_PROPERTY_AS_OPERATOR) { - qualifiedAccessExpression.nonFatalDiagnostics.add(ConePropertyAsOperator(calleeReference.candidate.symbol as FirPropertySymbol)) + val conePropertyAsOperator = ConePropertyAsOperator(calleeReference.candidate.symbol as FirPropertySymbol) + val nonFatalDiagnostics: List = buildList { + addAll(qualifiedAccessExpression.nonFatalDiagnostics) + add(conePropertyAsOperator) + } + qualifiedAccessExpression.replaceNonFatalDiagnostics(nonFatalDiagnostics) } if (qualifiedAccessExpression is FirQualifiedAccessExpression) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirPropertyAccessExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirPropertyAccessExpression.kt index 4f82eebf63b..51837ed4e7b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirPropertyAccessExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirPropertyAccessExpression.kt @@ -56,6 +56,8 @@ abstract class FirPropertyAccessExpression : FirQualifiedAccessExpression() { abstract override fun replaceExtensionReceiver(newExtensionReceiver: FirExpression) + abstract fun replaceNonFatalDiagnostics(newNonFatalDiagnostics: List) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirPropertyAccessExpression abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirPropertyAccessExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirErrorResolvedQualifierBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirErrorResolvedQualifierBuilder.kt index 6c152a322bd..c1763d57ae2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirErrorResolvedQualifierBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirErrorResolvedQualifierBuilder.kt @@ -51,7 +51,7 @@ class FirErrorResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, Fi relativeClassFqName, symbol, isNullableLHSForCallableReference, - nonFatalDiagnostics, + nonFatalDiagnostics.toMutableOrEmpty(), typeArguments, diagnostic, ) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirPropertyAccessExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirPropertyAccessExpressionBuilder.kt index bbd6f5dc3e8..786ab1d4f65 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirPropertyAccessExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirPropertyAccessExpressionBuilder.kt @@ -57,7 +57,7 @@ class FirPropertyAccessExpressionBuilder : FirQualifiedAccessBuilder, FirAnnotat explicitReceiver, dispatchReceiver, extensionReceiver, - nonFatalDiagnostics, + nonFatalDiagnostics.toMutableOrEmpty(), ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirResolvedQualifierBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirResolvedQualifierBuilder.kt index ad7fb9fe077..84a4d6be5f4 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirResolvedQualifierBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirResolvedQualifierBuilder.kt @@ -53,7 +53,7 @@ class FirResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, FirAnno relativeClassFqName, symbol, isNullableLHSForCallableReference, - nonFatalDiagnostics, + nonFatalDiagnostics.toMutableOrEmpty(), typeArguments, ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirErrorResolvedQualifierImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirErrorResolvedQualifierImpl.kt index f00764e43f4..2453ab541bb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirErrorResolvedQualifierImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirErrorResolvedQualifierImpl.kt @@ -33,7 +33,7 @@ internal class FirErrorResolvedQualifierImpl( override val relativeClassFqName: FqName?, override val symbol: FirClassLikeSymbol<*>?, override var isNullableLHSForCallableReference: Boolean, - override val nonFatalDiagnostics: MutableList, + override var nonFatalDiagnostics: MutableOrEmptyList, override val typeArguments: MutableList, override val diagnostic: ConeDiagnostic, ) : FirErrorResolvedQualifier() { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt index b8cbd0edb4c..5ac08f3c36a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt @@ -35,7 +35,7 @@ class FirPropertyAccessExpressionImpl @FirImplementationDetail constructor( override var explicitReceiver: FirExpression?, override var dispatchReceiver: FirExpression, override var extensionReceiver: FirExpression, - override val nonFatalDiagnostics: MutableList, + override var nonFatalDiagnostics: MutableOrEmptyList, ) : FirPropertyAccessExpression() { override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) @@ -126,4 +126,8 @@ class FirPropertyAccessExpressionImpl @FirImplementationDetail constructor( override fun replaceExtensionReceiver(newExtensionReceiver: FirExpression) { extensionReceiver = newExtensionReceiver } + + override fun replaceNonFatalDiagnostics(newNonFatalDiagnostics: List) { + nonFatalDiagnostics = newNonFatalDiagnostics.toMutableOrEmpty() + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt index 510ec5de644..3f969d64f8a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirResolvedQualifierImpl.kt @@ -34,7 +34,7 @@ internal class FirResolvedQualifierImpl( override var relativeClassFqName: FqName?, override val symbol: FirClassLikeSymbol<*>?, override var isNullableLHSForCallableReference: Boolean, - override val nonFatalDiagnostics: MutableList, + override var nonFatalDiagnostics: MutableOrEmptyList, override val typeArguments: MutableList, ) : FirResolvedQualifier() { override val classId: ClassId? get() = relativeClassFqName?.let { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index f6d408b10b0..d46077e7fdf 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.fir.tree.generator.FieldSets.typeParameters import org.jetbrains.kotlin.fir.tree.generator.FieldSets.typeRefField import org.jetbrains.kotlin.fir.tree.generator.FieldSets.visibility import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFieldConfigurator -import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder.Companion.baseFirElement import org.jetbrains.kotlin.fir.tree.generator.context.type import org.jetbrains.kotlin.fir.tree.generator.model.* @@ -38,7 +37,7 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuilder) { fun configureFields() = configure { - AbstractFirTreeBuilder.baseFirElement.configure { + baseFirElement.configure { +field("source", sourceElementType, nullable = true) } @@ -213,7 +212,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild } propertyAccessExpression.configure { - +fieldList("nonFatalDiagnostics", coneDiagnosticType) + +fieldList("nonFatalDiagnostics", coneDiagnosticType, useMutableOrEmpty = true, withReplace = true) } qualifiedErrorAccessExpression.configure { @@ -267,7 +266,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild classLikeDeclaration.configure { +symbol("FirClassLikeSymbol", "out FirClassLikeDeclaration") - +field("deprecationsProvider", deprecationsProviderType).withReplace().apply { isMutable = true} + +field("deprecationsProvider", deprecationsProviderType).withReplace().apply { isMutable = true } } klass.configure { @@ -591,7 +590,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +field("symbol", classLikeSymbolType, nullable = true) +booleanField("isNullableLHSForCallableReference", withReplace = true) +booleanField("resolvedToCompanionObject", withReplace = true) - +fieldList("nonFatalDiagnostics", coneDiagnosticType) + +fieldList("nonFatalDiagnostics", coneDiagnosticType, useMutableOrEmpty = true) +typeArguments.withTransform() } @@ -733,6 +732,8 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild fun Element.withArgs(vararg replacements: Pair): AbstractElement { val replaceMap = replacements.toMap() - val newArguments = typeArguments.map { replaceMap[it.name]?.let { SimpleTypeArgument(it, null) } ?: it } + val newArguments = typeArguments.map { typeArgument -> + replaceMap[typeArgument.name]?.let { SimpleTypeArgument(it, null) } ?: typeArgument + } return ElementWithArguments(this, newArguments) }