From 276754260a3514c116d4558734b50b98c493ea1d Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 15 Apr 2020 13:28:36 +0300 Subject: [PATCH] [FIR] Add `replaceCalleeReference` to all FirResolvable Also improve tree generator: now it generates abstract overrides for `replace` functions and correctly generates replace for fields with overriden type --- .../fir/declarations/FirAnonymousFunction.kt | 10 +++++++ .../declarations/FirAnonymousInitializer.kt | 2 ++ .../fir/declarations/FirAnonymousObject.kt | 6 ++++ .../declarations/FirCallableDeclaration.kt | 4 +++ .../FirCallableMemberDeclaration.kt | 6 ++++ .../kotlin/fir/declarations/FirClass.kt | 2 ++ .../declarations/FirClassLikeDeclaration.kt | 2 ++ .../kotlin/fir/declarations/FirConstructor.kt | 8 ++++++ .../kotlin/fir/declarations/FirEnumEntry.kt | 6 ++++ .../fir/declarations/FirErrorFunction.kt | 8 ++++++ .../kotlin/fir/declarations/FirField.kt | 6 ++++ .../kotlin/fir/declarations/FirFile.kt | 2 ++ .../kotlin/fir/declarations/FirFunction.kt | 6 ++++ .../fir/declarations/FirMemberDeclaration.kt | 2 ++ .../kotlin/fir/declarations/FirProperty.kt | 6 ++++ .../fir/declarations/FirPropertyAccessor.kt | 10 +++++++ .../fir/declarations/FirRegularClass.kt | 2 ++ .../kotlin/fir/declarations/FirSealedClass.kt | 4 +++ .../fir/declarations/FirSimpleFunction.kt | 10 +++++++ .../kotlin/fir/declarations/FirTypeAlias.kt | 2 ++ .../fir/declarations/FirTypeParameter.kt | 2 ++ .../fir/declarations/FirTypedDeclaration.kt | 2 ++ .../fir/declarations/FirValueParameter.kt | 6 ++++ .../kotlin/fir/declarations/FirVariable.kt | 6 ++++ .../fir/expressions/FirAnnotationCall.kt | 4 +++ .../kotlin/fir/expressions/FirArrayOfCall.kt | 4 +++ .../expressions/FirBinaryLogicExpression.kt | 2 ++ .../fir/expressions/FirBreakExpression.kt | 2 ++ .../expressions/FirCallableReferenceAccess.kt | 9 ++++++ .../fir/expressions/FirCheckNotNullCall.kt | 6 ++++ .../FirClassReferenceExpression.kt | 2 ++ .../expressions/FirComparisonExpression.kt | 2 ++ .../fir/expressions/FirComponentCall.kt | 11 ++++++++ .../fir/expressions/FirConstExpression.kt | 2 ++ .../fir/expressions/FirContinueExpression.kt | 2 ++ .../FirDelegatedConstructorCall.kt | 4 +++ .../fir/expressions/FirErrorExpression.kt | 2 ++ .../expressions/FirExpressionWithSmartcast.kt | 6 ++++ .../kotlin/fir/expressions/FirFunctionCall.kt | 11 ++++++++ .../kotlin/fir/expressions/FirGetClassCall.kt | 4 +++ .../kotlin/fir/expressions/FirJump.kt | 2 ++ .../FirLambdaArgumentExpression.kt | 2 ++ .../kotlin/fir/expressions/FirLoopJump.kt | 2 ++ .../expressions/FirNamedArgumentExpression.kt | 2 ++ .../kotlin/fir/expressions/FirOperatorCall.kt | 4 +++ .../fir/expressions/FirQualifiedAccess.kt | 4 +++ .../FirQualifiedAccessExpression.kt | 6 ++++ .../kotlin/fir/expressions/FirResolvable.kt | 2 ++ .../fir/expressions/FirResolvedQualifier.kt | 2 ++ .../FirResolvedReifiedParameterReference.kt | 2 ++ .../fir/expressions/FirReturnExpression.kt | 2 ++ .../FirSpreadArgumentExpression.kt | 2 ++ .../expressions/FirStringConcatenationCall.kt | 4 +++ .../expressions/FirThisReceiverExpression.kt | 9 ++++++ .../fir/expressions/FirThrowExpression.kt | 2 ++ .../fir/expressions/FirTryExpression.kt | 4 +++ .../fir/expressions/FirTypeOperatorCall.kt | 4 +++ .../FirVarargArgumentsExpression.kt | 2 ++ .../fir/expressions/FirVariableAssignment.kt | 4 +++ .../fir/expressions/FirWhenExpression.kt | 4 +++ .../expressions/FirWhenSubjectExpression.kt | 2 ++ .../FirWrappedArgumentExpression.kt | 2 ++ .../FirWrappedDelegateExpression.kt | 2 ++ .../fir/expressions/FirWrappedExpression.kt | 2 ++ .../FirCallableReferenceAccessBuilder.kt | 1 + .../builder/FirComponentCallBuilder.kt | 1 + .../builder/FirFunctionCallBuilder.kt | 1 + .../FirThisReceiverExpressionBuilder.kt | 1 + .../impl/FirCallableReferenceAccessImpl.kt | 10 +++++++ .../impl/FirCheckNotNullCallImpl.kt | 4 +++ .../expressions/impl/FirComponentCallImpl.kt | 10 +++++++ .../impl/FirDelegatedConstructorCallImpl.kt | 4 +++ .../expressions/impl/FirFunctionCallImpl.kt | 10 +++++++ .../impl/FirQualifiedAccessExpressionImpl.kt | 4 +++ .../impl/FirThisReceiverExpressionImpl.kt | 10 +++++++ .../expressions/impl/FirTryExpressionImpl.kt | 4 +++ .../impl/FirVariableAssignmentImpl.kt | 4 +++ .../expressions/impl/FirWhenExpressionImpl.kt | 4 +++ .../impl/FirExpressionWithSmartcastImpl.kt | 4 +++ .../fir/tree/generator/NodeConfigurator.kt | 5 ++-- .../fir/tree/generator/model/Element.kt | 28 +++++++++++++------ .../kotlin/fir/tree/generator/model/Field.kt | 18 ++++++++---- .../fir/tree/generator/printer/element.kt | 17 +++++++---- .../tree/generator/printer/implementation.kt | 26 +++++++++++++---- .../fir/tree/generator/printer/utils.kt | 6 ++-- .../kotlin/fir/tree/generator/util/util.kt | 10 +++++++ 86 files changed, 419 insertions(+), 29 deletions(-) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt index b57487cffc5..4f844b824fa 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt @@ -41,6 +41,16 @@ abstract class FirAnonymousFunction : FirFunction, FirExpr override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousFunction(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + + abstract override fun replaceValueParameters(newValueParameters: List) + + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract fun replaceInvocationKind(newInvocationKind: InvocationKind?) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnonymousFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt index a76babd839e..c24dbc6e02c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousInitializer.kt @@ -29,5 +29,7 @@ abstract class FirAnonymousInitializer : FirPureAbstractElement(), FirDeclaratio override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousInitializer(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirAnonymousInitializer } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt index bf902924326..066846359f2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt @@ -37,6 +37,12 @@ abstract class FirAnonymousObject : FirClass, FirExpression( override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousObject(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) + + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformDeclarations(transformer: FirTransformer, data: D): FirAnonymousObject abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnonymousObject diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt index 9afc5cdaee0..d4bc41e80ff 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt @@ -29,6 +29,10 @@ interface FirCallableDeclaration> : FirTypedDeclar override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableDeclaration(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableDeclaration diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt index 1ee83c651cb..8c85944dc3f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt @@ -32,6 +32,12 @@ interface FirCallableMemberDeclaration> : Fi override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableMemberDeclaration(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableMemberDeclaration override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableMemberDeclaration diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt index 6a799d2009a..f0c308be74e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt @@ -35,6 +35,8 @@ interface FirClass> : FirClassLikeDeclaration, FirStatement, override fun accept(visitor: FirVisitor, data: D): R = visitor.visitClass(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + fun replaceSuperTypeRefs(newSuperTypeRefs: List) fun transformDeclarations(transformer: FirTransformer, data: D): FirClass diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt index d069f80d8c9..d0ecdd3c2b5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt @@ -27,5 +27,7 @@ interface FirClassLikeDeclaration> : FirDeclarati override fun accept(visitor: FirVisitor, data: D): R = visitor.visitClassLikeDeclaration(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + override fun transformAnnotations(transformer: FirTransformer, data: D): FirClassLikeDeclaration } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt index 6b9d24c66f3..f60960b7f76 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt @@ -41,6 +41,14 @@ abstract class FirConstructor : FirPureAbstractElement(), FirFunction accept(visitor: FirVisitor, data: D): R = visitor.visitConstructor(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + + abstract override fun replaceValueParameters(newValueParameters: List) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirConstructor abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirConstructor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index 30fbbb26597..fabd81ae1cd 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -43,6 +43,12 @@ abstract class FirEnumEntry : FirVariable(), FirCallableMemberDecl override fun accept(visitor: FirVisitor, data: D): R = visitor.visitEnumEntry(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirEnumEntry abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirEnumEntry diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt index ae0c98a8af9..f401ac55858 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt @@ -38,6 +38,14 @@ abstract class FirErrorFunction : FirPureAbstractElement(), FirFunction accept(visitor: FirVisitor, data: D): R = visitor.visitErrorFunction(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + + abstract override fun replaceValueParameters(newValueParameters: List) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirErrorFunction abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirErrorFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt index f0b56f57b04..f3dae780923 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -43,6 +43,12 @@ abstract class FirField : FirVariable(), FirTypeParametersOwner, FirCa override fun accept(visitor: FirVisitor, data: D): R = visitor.visitField(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirField abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirField diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt index 620b1035770..e88046bfa25 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFile.kt @@ -30,5 +30,7 @@ abstract class FirFile : FirPureAbstractElement(), FirAnnotationContainer, FirDe override fun accept(visitor: FirVisitor, data: D): R = visitor.visitFile(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirFile } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt index 75c55e7ca38..647bd1fa20b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt @@ -37,6 +37,12 @@ interface FirFunction> : FirCallableDeclaration, FirTarget override fun accept(visitor: FirVisitor, data: D): R = visitor.visitFunction(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + fun replaceValueParameters(newValueParameters: List) override fun transformAnnotations(transformer: FirTransformer, data: D): FirFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt index 2da2ec14d8a..9bedbb1c542 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirMemberDeclaration.kt @@ -26,6 +26,8 @@ interface FirMemberDeclaration : FirDeclaration, FirAnnotationContainer { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitMemberDeclaration(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + override fun transformAnnotations(transformer: FirTransformer, data: D): FirMemberDeclaration fun transformStatus(transformer: FirTransformer, data: D): FirMemberDeclaration diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index 52f62d1cf33..60786b211ac 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -48,6 +48,12 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, override fun accept(visitor: FirVisitor, data: D): R = visitor.visitProperty(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirProperty abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirProperty diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt index 707a0e65ffd..b5ca070c8c9 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt @@ -40,6 +40,16 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction accept(visitor: FirVisitor, data: D): R = visitor.visitPropertyAccessor(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + + abstract override fun replaceValueParameters(newValueParameters: List) + + abstract override fun replaceContractDescription(newContractDescription: FirContractDescription) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirPropertyAccessor abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirPropertyAccessor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt index 909a285aa3f..09e7326488d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt @@ -41,6 +41,8 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration, override fun accept(visitor: FirVisitor, data: D): R = visitor.visitRegularClass(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirRegularClass diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt index 752e57dadc0..eadc90618e1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSealedClass.kt @@ -42,6 +42,10 @@ abstract class FirSealedClass : FirRegularClass() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSealedClass(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) + abstract fun replaceInheritors(newInheritors: List) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirSealedClass diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt index cfc12da4d94..0bad0b9d51b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt @@ -42,6 +42,16 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirFunction accept(visitor: FirVisitor, data: D): R = visitor.visitSimpleFunction(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + + abstract override fun replaceValueParameters(newValueParameters: List) + + abstract override fun replaceContractDescription(newContractDescription: FirContractDescription) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirSimpleFunction abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirSimpleFunction diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt index 31cd50f63a1..29254fc970a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt @@ -32,6 +32,8 @@ abstract class FirTypeAlias : FirPureAbstractElement(), FirClassLikeDeclaration< override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeAlias(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef) abstract override fun transformStatus(transformer: FirTransformer, data: D): FirTypeAlias diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt index cb49aa5b23e..64e91921b5f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeParameter.kt @@ -35,5 +35,7 @@ abstract class FirTypeParameter : FirPureAbstractElement(), FirTypeParameterRef, override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeParameter(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirTypeParameter } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt index c26d29eb136..e364ee53e36 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypedDeclaration.kt @@ -26,6 +26,8 @@ interface FirTypedDeclaration : FirDeclaration, FirAnnotationContainer { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypedDeclaration(this, data) + override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) override fun transformAnnotations(transformer: FirTransformer, data: D): FirTypedDeclaration diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index 176ec5aefad..dc7ae49b9af 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -43,6 +43,12 @@ abstract class FirValueParameter : FirVariable() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitValueParameter(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirValueParameter abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirValueParameter diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt index d4902cc0959..b21dd481a4a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt @@ -41,6 +41,12 @@ abstract class FirVariable> : FirPureAbstractElement(), FirCa override fun accept(visitor: FirVisitor, data: D): R = visitor.visitVariable(this, data) + abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + + abstract override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) + + abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirVariable abstract override fun transformReceiverTypeRef(transformer: FirTransformer, data: D): FirVariable diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt index b2ff5bf7195..88f3aabb742 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirAnnotationCall.kt @@ -26,6 +26,10 @@ abstract class FirAnnotationCall : FirExpression(), FirCall { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnnotationCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract fun replaceResolved(newResolved: Boolean) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnnotationCall diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt index fe35fe1715d..16043c20735 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirArrayOfCall.kt @@ -22,5 +22,9 @@ abstract class FirArrayOfCall : FirExpression(), FirCall { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitArrayOfCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirArrayOfCall } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt index 82ddc0b30f5..e5f23558eac 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBinaryLogicExpression.kt @@ -24,6 +24,8 @@ abstract class FirBinaryLogicExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBinaryLogicExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirBinaryLogicExpression abstract fun transformLeftOperand(transformer: FirTransformer, data: D): FirBinaryLogicExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt index f37952c3de7..e7854ff9873 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirBreakExpression.kt @@ -23,5 +23,7 @@ abstract class FirBreakExpression : FirLoopJump() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitBreakExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirBreakExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt index 71429cb683f..cb3a9f67a53 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCallableReferenceAccess.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -29,6 +30,14 @@ abstract class FirCallableReferenceAccess : FirQualifiedAccessExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableReferenceAccess(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract fun replaceCalleeReference(newCalleeReference: FirNamedReference) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableReferenceAccess abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirCallableReferenceAccess diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCheckNotNullCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCheckNotNullCall.kt index 9c61b50dafd..a647f3c12ac 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCheckNotNullCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirCheckNotNullCall.kt @@ -24,6 +24,12 @@ abstract class FirCheckNotNullCall : FirExpression(), FirCall, FirResolvable { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCheckNotNullCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirCheckNotNullCall abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirCheckNotNullCall diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt index 749222ff38f..4f43386c5fb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirClassReferenceExpression.kt @@ -22,5 +22,7 @@ abstract class FirClassReferenceExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitClassReferenceExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirClassReferenceExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComparisonExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComparisonExpression.kt index 98ba963eeca..3884678b96b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComparisonExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComparisonExpression.kt @@ -23,5 +23,7 @@ abstract class FirComparisonExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitComparisonExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirComparisonExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt index e826779c08a..795c0b3ce8a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirComponentCall.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -31,6 +32,16 @@ abstract class FirComponentCall : FirFunctionCall() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitComponentCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + + abstract override fun replaceCalleeReference(newCalleeReference: FirNamedReference) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirComponentCall abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirComponentCall diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt index 4cd0c646fed..dd97203b1ca 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirConstExpression.kt @@ -23,6 +23,8 @@ abstract class FirConstExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitConstExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract fun replaceKind(newKind: FirConstKind) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirConstExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt index 68c8f54f276..6a435bc183e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirContinueExpression.kt @@ -23,5 +23,7 @@ abstract class FirContinueExpression : FirLoopJump() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitContinueExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirContinueExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt index de01dd25141..ce098637464 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirDelegatedConstructorCall.kt @@ -27,6 +27,10 @@ abstract class FirDelegatedConstructorCall : FirPureAbstractElement(), FirResolv override fun accept(visitor: FirVisitor, data: D): R = visitor.visitDelegatedConstructorCall(this, data) + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract fun replaceConstructedTypeRef(newConstructedTypeRef: FirTypeRef) abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirDelegatedConstructorCall diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt index 14ec4894bba..d87e3a13b6b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirErrorExpression.kt @@ -24,5 +24,7 @@ abstract class FirErrorExpression : FirExpression(), FirDiagnosticHolder { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitErrorExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirErrorExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt index e4d25247e3c..7ecf83270cc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirExpressionWithSmartcast.kt @@ -33,6 +33,12 @@ abstract class FirExpressionWithSmartcast : FirQualifiedAccessExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitExpressionWithSmartcast(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirExpressionWithSmartcast abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirExpressionWithSmartcast diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt index 299bc7425b8..9a16d8c161e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirFunctionCall.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.expressions import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -30,6 +31,16 @@ abstract class FirFunctionCall : FirQualifiedAccessExpression(), FirCall { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitFunctionCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + + abstract fun replaceCalleeReference(newCalleeReference: FirNamedReference) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirFunctionCall abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirFunctionCall diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt index 15fea47c1d3..9aa51e1ac19 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirGetClassCall.kt @@ -23,5 +23,9 @@ abstract class FirGetClassCall : FirExpression(), FirCall { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitGetClassCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirGetClassCall } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirJump.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirJump.kt index 35d2960d196..cd802d73288 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirJump.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirJump.kt @@ -24,5 +24,7 @@ abstract class FirJump : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitJump(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirJump } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt index 10c6d1fb98f..8321ad3989f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLambdaArgumentExpression.kt @@ -23,5 +23,7 @@ abstract class FirLambdaArgumentExpression : FirWrappedArgumentExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitLambdaArgumentExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirLambdaArgumentExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLoopJump.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLoopJump.kt index ee8b570c6a9..3944d2df64f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLoopJump.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirLoopJump.kt @@ -23,5 +23,7 @@ abstract class FirLoopJump : FirJump() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitLoopJump(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirLoopJump } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt index a5d604af50f..7a46bc94b11 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirNamedArgumentExpression.kt @@ -25,5 +25,7 @@ abstract class FirNamedArgumentExpression : FirWrappedArgumentExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitNamedArgumentExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirNamedArgumentExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt index 15aedb191fc..ef524efe9bb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirOperatorCall.kt @@ -23,5 +23,9 @@ abstract class FirOperatorCall : FirExpression(), FirCall { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitOperatorCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirOperatorCall } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccess.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccess.kt index 59cc773f1dc..0225d0e0c6b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccess.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccess.kt @@ -27,6 +27,10 @@ interface FirQualifiedAccess : FirQualifiedAccessWithoutCallee, FirResolvable { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitQualifiedAccess(this, data) + override fun replaceTypeArguments(newTypeArguments: List) + + override fun replaceCalleeReference(newCalleeReference: FirReference) + override fun transformAnnotations(transformer: FirTransformer, data: D): FirQualifiedAccess override fun transformTypeArguments(transformer: FirTransformer, data: D): FirQualifiedAccess diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt index 2427008c7d5..4de2b847c36 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirQualifiedAccessExpression.kt @@ -29,6 +29,12 @@ abstract class FirQualifiedAccessExpression : FirExpression(), FirQualifiedAcces override fun accept(visitor: FirVisitor, data: D): R = visitor.visitQualifiedAccessExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirQualifiedAccessExpression abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirQualifiedAccessExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvable.kt index 7dba848d8e9..fad2ef9dcd7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvable.kt @@ -21,5 +21,7 @@ interface FirResolvable : FirElement { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvable(this, data) + fun replaceCalleeReference(newCalleeReference: FirReference) + fun transformCalleeReference(transformer: FirTransformer, data: D): FirResolvable } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt index 0c53f2d110d..edcfb954cf5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedQualifier.kt @@ -31,6 +31,8 @@ abstract class FirResolvedQualifier : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedQualifier(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract fun replaceSafe(newSafe: Boolean) abstract fun replaceTypeArguments(newTypeArguments: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedReifiedParameterReference.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedReifiedParameterReference.kt index fa46768d1fa..2017ab2d5b3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedReifiedParameterReference.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirResolvedReifiedParameterReference.kt @@ -23,5 +23,7 @@ abstract class FirResolvedReifiedParameterReference : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitResolvedReifiedParameterReference(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirResolvedReifiedParameterReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt index c245a69771a..1c2963da218 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirReturnExpression.kt @@ -25,6 +25,8 @@ abstract class FirReturnExpression : FirJump>() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitReturnExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirReturnExpression abstract fun transformResult(transformer: FirTransformer, data: D): FirReturnExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt index fd5cbda7598..ac8b77473bc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirSpreadArgumentExpression.kt @@ -23,5 +23,7 @@ abstract class FirSpreadArgumentExpression : FirWrappedArgumentExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitSpreadArgumentExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirSpreadArgumentExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt index 7e4f4490756..60e4c65f6d7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirStringConcatenationCall.kt @@ -22,5 +22,9 @@ abstract class FirStringConcatenationCall : FirCall, FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitStringConcatenationCall(this, data) + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirStringConcatenationCall } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt index aa0d4c347e6..26bbd102878 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThisReceiverExpression.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirThisReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -29,6 +30,14 @@ abstract class FirThisReceiverExpression : FirQualifiedAccessExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitThisReceiverExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract fun replaceCalleeReference(newCalleeReference: FirThisReference) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirThisReceiverExpression abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirThisReceiverExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt index b82f056d3e4..e68d06e6643 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirThrowExpression.kt @@ -22,5 +22,7 @@ abstract class FirThrowExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitThrowExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirThrowExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt index b55b493f992..77ea7029f28 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTryExpression.kt @@ -26,6 +26,10 @@ abstract class FirTryExpression : FirExpression(), FirResolvable { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTryExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirTryExpression abstract override fun transformCalleeReference(transformer: FirTransformer, data: D): FirTryExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt index 6c96eaa2f7b..ae0bd0a8df8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirTypeOperatorCall.kt @@ -24,5 +24,9 @@ abstract class FirTypeOperatorCall : FirExpression(), FirCall { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitTypeOperatorCall(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceArgumentList(newArgumentList: FirArgumentList) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirTypeOperatorCall } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVarargArgumentsExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVarargArgumentsExpression.kt index 27d857f50ef..e791c92ac06 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVarargArgumentsExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVarargArgumentsExpression.kt @@ -23,5 +23,7 @@ abstract class FirVarargArgumentsExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitVarargArgumentsExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirVarargArgumentsExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt index a582a358ce5..9135da5c31d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirVariableAssignment.kt @@ -30,6 +30,10 @@ abstract class FirVariableAssignment : FirPureAbstractElement(), FirQualifiedAcc override fun accept(visitor: FirVisitor, data: D): R = visitor.visitVariableAssignment(this, data) + abstract override fun replaceTypeArguments(newTypeArguments: List) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirVariableAssignment abstract override fun transformTypeArguments(transformer: FirTransformer, data: D): FirVariableAssignment diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt index 703428fdc4c..11520ae17d5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenExpression.kt @@ -28,6 +28,10 @@ abstract class FirWhenExpression : FirExpression(), FirResolvable { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + + abstract override fun replaceCalleeReference(newCalleeReference: FirReference) + abstract fun replaceIsExhaustive(newIsExhaustive: Boolean) abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWhenExpression diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt index 45ef785aa21..f22a697142b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWhenSubjectExpression.kt @@ -23,5 +23,7 @@ abstract class FirWhenSubjectExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWhenSubjectExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWhenSubjectExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt index da4067b68fb..c5fc599b8ce 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedArgumentExpression.kt @@ -23,5 +23,7 @@ abstract class FirWrappedArgumentExpression : FirWrappedExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedArgumentExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWrappedArgumentExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt index f05ec29d01f..65d5ab3cca2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedDelegateExpression.kt @@ -23,5 +23,7 @@ abstract class FirWrappedDelegateExpression : FirWrappedExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedDelegateExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWrappedDelegateExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt index a1593df209f..f13c0d6e158 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/FirWrappedExpression.kt @@ -22,5 +22,7 @@ abstract class FirWrappedExpression : FirExpression() { override fun accept(visitor: FirVisitor, data: D): R = visitor.visitWrappedExpression(this, data) + abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirWrappedExpression } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirCallableReferenceAccessBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirCallableReferenceAccessBuilder.kt index 654e337a978..69b8b54ce13 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirCallableReferenceAccessBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirCallableReferenceAccessBuilder.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirCallableReferenceAccessImpl import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirComponentCallBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirComponentCallBuilder.kt index dba14035f37..61b1e2c3cce 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirComponentCallBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirComponentCallBuilder.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder import org.jetbrains.kotlin.fir.expressions.impl.FirComponentCallImpl import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirFunctionCallBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirFunctionCallBuilder.kt index fd93d0a564b..b2d64951c98 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirFunctionCallBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirFunctionCallBuilder.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirFunctionCallImpl import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThisReceiverExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThisReceiverExpressionBuilder.kt index d4431ed875f..dc62c011a10 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThisReceiverExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThisReceiverExpressionBuilder.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.FirQualifiedAccessBuilder import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression import org.jetbrains.kotlin.fir.expressions.impl.FirThisReceiverExpressionImpl +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirThisReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt index bbd5927b627..8ca30fd30cc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirCallableReferenceAccess import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -98,4 +99,13 @@ internal class FirCallableReferenceAccessImpl( typeArguments.clear() typeArguments.addAll(newTypeArguments) } + + override fun replaceCalleeReference(newCalleeReference: FirNamedReference) { + calleeReference = newCalleeReference + } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + require(newCalleeReference is FirNamedReference) + replaceCalleeReference(newCalleeReference) + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCheckNotNullCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCheckNotNullCallImpl.kt index f292702c7d9..ebdcb0d5f7b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCheckNotNullCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCheckNotNullCallImpl.kt @@ -57,4 +57,8 @@ internal class FirCheckNotNullCallImpl( override fun replaceArgumentList(newArgumentList: FirArgumentList) { argumentList = newArgumentList } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt index 08b9bb6ecec..1cfd6202419 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.expressions.FirArgumentList import org.jetbrains.kotlin.fir.expressions.FirComponentCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -112,4 +113,13 @@ internal class FirComponentCallImpl( override fun replaceArgumentList(newArgumentList: FirArgumentList) { argumentList = newArgumentList } + + override fun replaceCalleeReference(newCalleeReference: FirNamedReference) { + calleeReference = newCalleeReference + } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + require(newCalleeReference is FirNamedReference) + replaceCalleeReference(newCalleeReference) + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt index 7738278e1eb..ea60c03fbae 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt @@ -55,6 +55,10 @@ internal class FirDelegatedConstructorCallImpl( return this } + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } + override fun replaceArgumentList(newArgumentList: FirArgumentList) { argumentList = newArgumentList } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt index a2ec4cc17eb..405622485a5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirFunctionCall import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -107,4 +108,13 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor( override fun replaceArgumentList(newArgumentList: FirArgumentList) { argumentList = newArgumentList } + + override fun replaceCalleeReference(newCalleeReference: FirNamedReference) { + calleeReference = newCalleeReference + } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + require(newCalleeReference is FirNamedReference) + replaceCalleeReference(newCalleeReference) + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt index 927c650d49d..512b2a3532c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirQualifiedAccessExpressionImpl.kt @@ -98,4 +98,8 @@ internal class FirQualifiedAccessExpressionImpl( typeArguments.clear() typeArguments.addAll(newTypeArguments) } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt index 447fb75040c..13bdca4cdda 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression +import org.jetbrains.kotlin.fir.references.FirReference import org.jetbrains.kotlin.fir.references.FirThisReference import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -100,4 +101,13 @@ internal class FirThisReceiverExpressionImpl( typeArguments.clear() typeArguments.addAll(newTypeArguments) } + + override fun replaceCalleeReference(newCalleeReference: FirThisReference) { + calleeReference = newCalleeReference + } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + require(newCalleeReference is FirThisReference) + replaceCalleeReference(newCalleeReference) + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt index c2fff56975e..e306c99e625 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirTryExpressionImpl.kt @@ -80,4 +80,8 @@ internal class FirTryExpressionImpl( override fun replaceTypeRef(newTypeRef: FirTypeRef) { typeRef = newTypeRef } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt index ea508a2a465..b7726327275 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt @@ -104,4 +104,8 @@ internal class FirVariableAssignmentImpl( typeArguments.clear() typeArguments.addAll(newTypeArguments) } + + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt index 483c4c1ea71..daf83431096 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirWhenExpressionImpl.kt @@ -85,6 +85,10 @@ internal class FirWhenExpressionImpl( typeRef = newTypeRef } + override fun replaceCalleeReference(newCalleeReference: FirReference) { + calleeReference = newCalleeReference + } + override fun replaceIsExhaustive(newIsExhaustive: Boolean) { isExhaustive = newIsExhaustive } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt index 7530bf6fa45..d1947bc437d 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/expressions/impl/FirExpressionWithSmartcastImpl.kt @@ -75,5 +75,9 @@ internal class FirExpressionWithSmartcastImpl( throw IllegalStateException() } + override fun replaceCalleeReference(newCalleeReference: FirReference) { + throw IllegalStateException() + } + override fun replaceTypeRef(newTypeRef: FirTypeRef) {} } \ No newline at end of file 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 def131610ac..68bf7869df6 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 @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.tree.generator import org.jetbrains.kotlin.fir.tree.generator.FieldSets.annotations import org.jetbrains.kotlin.fir.tree.generator.FieldSets.arguments import org.jetbrains.kotlin.fir.tree.generator.FieldSets.body +import org.jetbrains.kotlin.fir.tree.generator.FieldSets.calleeReference import org.jetbrains.kotlin.fir.tree.generator.FieldSets.classKind import org.jetbrains.kotlin.fir.tree.generator.FieldSets.controlFlowGraphReferenceField import org.jetbrains.kotlin.fir.tree.generator.FieldSets.declarations @@ -62,7 +63,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild } resolvable.configure { - +field("calleeReference", reference).withTransform() + +calleeReference.withTransform() } diagnosticHolder.configure { @@ -440,7 +441,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild } callableReferenceAccess.configure { - +field("calleeReference", namedReference) + +field("calleeReference", namedReference, withReplace = true).withTransform() } getClassCall.configure { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt index ebdeceb9b5e..9364334304b 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.tree.generator.model import org.jetbrains.kotlin.fir.tree.generator.printer.BASE_PACKAGE import org.jetbrains.kotlin.fir.tree.generator.printer.typeWithArguments +import org.jetbrains.kotlin.fir.tree.generator.util.set interface KindOwner : Importable { var kind: Implementation.Kind? @@ -31,6 +32,7 @@ interface AbstractElement : FieldContainer, KindOwner { val allFirFields: List val defaultImplementation: Implementation? val customImplementations: List + val overridenFields: Map> override val allParents: List get() = parents } @@ -60,10 +62,10 @@ class Element(val name: String, kind: Kind) : AbstractElement { override var doesNotNeedImplementation: Boolean = false override val needTransformOtherChildren: Boolean get() = _needTransformOtherChildren || parents.any { it.needTransformOtherChildren } - + override val overridenFields: MutableMap> = mutableMapOf() override val allImplementations: List by lazy { if (doesNotNeedImplementation) { - emptyList() + emptyList() } else { val implementations = customImplementations.toMutableList() defaultImplementation?.let { implementations += it } @@ -74,13 +76,23 @@ class Element(val name: String, kind: Kind) : AbstractElement { override val allFields: List by lazy { val result = LinkedHashSet() result.addAll(fields.toList().asReversed()) - for (field in parentFields.asReversed()) { - val overrides = !result.add(field) + result.forEach { overridenFields[it, it] = false } + for (parentField in parentFields.asReversed()) { + val overrides = !result.add(parentField) if (overrides) { - val existingField = result.first { it == field } + val existingField = result.first { it == parentField } existingField.fromParent = true - existingField.needsSeparateTransform = existingField.needsSeparateTransform || field.needsSeparateTransform - existingField.needTransformInOtherChildren = existingField.needTransformInOtherChildren || field.needTransformInOtherChildren + existingField.needsSeparateTransform = existingField.needsSeparateTransform || parentField.needsSeparateTransform + existingField.needTransformInOtherChildren = existingField.needTransformInOtherChildren || parentField.needTransformInOtherChildren + existingField.withReplace = parentField.withReplace || existingField.withReplace + if (parentField.type != existingField.type && parentField.withReplace) { + existingField.overridenTypes += parentField + overridenFields[existingField, parentField] = false + } else { + overridenFields[existingField, parentField] = true + } + } else { + overridenFields[parentField, parentField] = true } } result.toList().asReversed() @@ -160,4 +172,4 @@ class TypeArgumentWithMultipleUpperBounds(name: String, override val upperBounds override fun toString(): String { return name } -} +} \ No newline at end of file diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt index 46aa1362d31..090e3b33cb1 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt @@ -11,7 +11,7 @@ sealed class Field : Importable { abstract val name: String open val arguments = mutableListOf() abstract val nullable: Boolean - abstract val withReplace: Boolean + open var withReplace: Boolean = false abstract val isFirType: Boolean var fromParent: Boolean = false @@ -22,10 +22,11 @@ sealed class Field : Importable { abstract var isMutable: Boolean open var isMutableInInterface: Boolean = false open val withGetter: Boolean get() = false - open val isLateinit: Boolean get() = false open val customSetter: String? get() = null open val fromDelegate: Boolean get() = false + open val overridenTypes: MutableSet = mutableSetOf() + fun copy(): Field = internalCopy().also { updateFieldsInCopy(it) } @@ -37,6 +38,7 @@ sealed class Field : Importable { copy.needsSeparateTransform = needsSeparateTransform copy.needTransformInOtherChildren = needTransformInOtherChildren copy.isMutable = isMutable + copy.overridenTypes += overridenTypes } copy.fromParent = fromParent } @@ -66,7 +68,9 @@ class FieldWithDefault(val origin: Field) : Field() { override val name: String get() = origin.name override val type: String get() = origin.type override val nullable: Boolean get() = origin.nullable - override val withReplace: Boolean get() = origin.withReplace + override var withReplace: Boolean + get() = origin.withReplace + set(_) {} override val packageName: String? get() = origin.packageName override val isFirType: Boolean get() = origin.isFirType override var needsSeparateTransform: Boolean @@ -91,6 +95,8 @@ class FieldWithDefault(val origin: Field) : Field() { override var customSetter: String? = null override var fromDelegate: Boolean = false var needAcceptAndTransform: Boolean = true + override val overridenTypes: MutableSet + get() = origin.overridenTypes override fun internalCopy(): Field { return FieldWithDefault(origin).also { @@ -109,7 +115,7 @@ class SimpleField( override val packageName: String?, val customType: Importable? = null, override val nullable: Boolean, - override val withReplace: Boolean + override var withReplace: Boolean ) : Field() { override val isFirType: Boolean = false override val fullQualifiedName: String? @@ -144,7 +150,7 @@ class FirField( override val name: String, val element: AbstractElement, override val nullable: Boolean, - override val withReplace: Boolean + override var withReplace: Boolean ) : Field() { init { if (element is ElementWithArguments) { @@ -173,7 +179,7 @@ class FirField( class FieldList( override val name: String, val baseType: Importable, - override val withReplace: Boolean + override var withReplace: Boolean ) : Field() { override var defaultValueInImplementation: String? = null override val packageName: String? get() = baseType.packageName diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt index 95f818c03b3..6ac8215879f 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/element.kt @@ -6,9 +6,9 @@ package org.jetbrains.kotlin.fir.tree.generator.printer import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder -import org.jetbrains.kotlin.fir.tree.generator.model.Element -import org.jetbrains.kotlin.fir.tree.generator.model.Implementation +import org.jetbrains.kotlin.fir.tree.generator.model.* import org.jetbrains.kotlin.fir.tree.generator.pureAbstractElementType +import org.jetbrains.kotlin.fir.tree.generator.util.get import java.io.File @@ -84,11 +84,18 @@ fun SmartPrinter.printElement(element: Element) { override() println("fun accept(visitor: FirVisitor, data: D): R = visitor.visit$name(this, data)") - fields.filter { it.withReplace }.forEach { + fun Field.replaceDeclaration(override: Boolean, overridenType: Importable? = null) { println() abstract() - if (it.fromParent) print("override ") - println(it.replaceFunctionDeclaration()) + if (override) print("override ") + println(replaceFunctionDeclaration(overridenType)) + } + + allFields.filter { it.withReplace }.forEach { + it.replaceDeclaration(overridenFields[it, it]) + for (overridenType in it.overridenTypes) { + it.replaceDeclaration(true, overridenType) + } } for (field in allFields) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt index 6144b6395b3..2ee87e96557 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/implementation.kt @@ -302,22 +302,30 @@ fun SmartPrinter.printImplementation(implementation: Implementation) { } } - for (field in allFields.filter { it.withReplace }) { + fun generateReplace(field: Field, overridenType: Importable? = null, body: () -> Unit) { println() abstract() - print("override ${field.replaceFunctionDeclaration()}") + print("override ${field.replaceFunctionDeclaration(overridenType)}") if (isInterface || isAbstract) { println() - continue + return } print(" {") if (!field.isMutable) { println("}") - continue + return } println() withIndent { - val newValue = "new${field.name.capitalize()}" + body() + } + println("}") + } + + for (field in allFields.filter { it.withReplace }) { + val capitalizedFieldName = field.name.capitalize() + val newValue = "new$capitalizedFieldName" + generateReplace(field) { when { field.withGetter -> {} @@ -331,7 +339,13 @@ fun SmartPrinter.printImplementation(implementation: Implementation) { } } } - println("}") + + for (overridenType in field.overridenTypes) { + generateReplace(field, overridenType) { + println("require($newValue is ${field.typeWithArguments})") + println("replace$capitalizedFieldName($newValue)") + } + } } } println("}") diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt index e5407fae6a7..12b471fa88a 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt @@ -62,6 +62,7 @@ fun Element.collectImports(): List { private fun Element.collectImportsInternal(base: List, kind: ImportKind): List { val fqns = base + allFields.mapNotNull { it.fullQualifiedName } + + allFields.flatMap { it.overridenTypes.mapNotNull { it.fullQualifiedName } } + allFields.flatMap { it.arguments.mapNotNull { it.fullQualifiedName } } + typeArguments.flatMap { it.upperBounds.mapNotNull { it.fullQualifiedName } } return fqns.filterRedundantImports(packageName, kind) @@ -93,9 +94,10 @@ fun transformFunctionDeclaration(transformName: String, returnType: String): Str return "fun transform$transformName(transformer: FirTransformer, data: D): $returnType" } -fun Field.replaceFunctionDeclaration(): String { +fun Field.replaceFunctionDeclaration(overridenType: Importable? = null): String { val capName = name.capitalize() - return "fun replace$capName(new$capName: $typeWithArguments)" + val type = overridenType?.typeWithArguments ?: typeWithArguments + return "fun replace$capName(new$capName: $type)" } val Field.mutableType: String diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/util.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/util.kt index ebfd6d7934b..f6fa47393d7 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/util.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/util/util.kt @@ -11,3 +11,13 @@ fun Element.traverseParents(block: (Element) -> Unit) { block(this) parents.forEach { it.traverseParents(block) } } + +operator fun MutableMap>.set(k1: K, k2: V, value: U) { + this.putIfAbsent(k1, mutableMapOf()) + val map = getValue(k1) + map[k2] = value +} + +operator fun Map>.get(k1: K, k2: V): U { + return getValue(k1).getValue(k2) +} \ No newline at end of file