From bb645a7962f34b35a4eb6a85a46b7e408fc7da98 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 28 Apr 2020 11:53:27 +0300 Subject: [PATCH] [FIR] Add `transformSuperTypeRefs` to FirClass --- .../jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt | 7 ++++++- .../kotlin/fir/declarations/FirAnonymousObject.kt | 2 ++ .../gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt | 2 ++ .../jetbrains/kotlin/fir/declarations/FirRegularClass.kt | 2 ++ .../jetbrains/kotlin/fir/declarations/FirSealedClass.kt | 2 ++ .../kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt | 7 ++++++- .../jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt | 7 ++++++- .../kotlin/fir/declarations/impl/FirSealedClassImpl.kt | 7 ++++++- .../kotlin/fir/tree/generator/NodeConfigurator.kt | 2 +- 9 files changed, 33 insertions(+), 5 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt index c32ffd30ab0..f1019e1f046 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt @@ -81,11 +81,16 @@ class FirJavaClass @FirImplementationDetail internal constructor( typeParameters.transformInplace(transformer, data) transformDeclarations(transformer, data) status = status.transformSingle(transformer, data) - superTypeRefs.transformInplace(transformer, data) + transformSuperTypeRefs(transformer, data) transformAnnotations(transformer, data) return this } + override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirRegularClass { + superTypeRefs.transformInplace(transformer, data) + return this + } + override fun transformStatus(transformer: FirTransformer, data: D): FirJavaClass { status = status.transformSingle(transformer, data) return this 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 60aef0869c2..a8322529837 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 @@ -44,6 +44,8 @@ abstract class FirAnonymousObject : FirClass, FirExpression( abstract override fun replaceTypeRef(newTypeRef: FirTypeRef) + abstract override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirAnonymousObject + 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/FirClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt index 1b45cde1add..a0c2ab6e877 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 @@ -40,6 +40,8 @@ interface FirClass> : FirClassLikeDeclaration, FirStatement, fun replaceSuperTypeRefs(newSuperTypeRefs: List) + fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirClass + fun transformDeclarations(transformer: FirTransformer, data: D): FirClass override fun transformAnnotations(transformer: FirTransformer, data: D): FirClass 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 5d81a5ac11e..1f25bca64b0 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 @@ -54,5 +54,7 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration, abstract fun transformCompanionObject(transformer: FirTransformer, data: D): FirRegularClass + abstract override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirRegularClass + abstract fun transformControlFlowGraphReference(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 dc2bdcda704..45df565d57f 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 @@ -57,5 +57,7 @@ abstract class FirSealedClass : FirRegularClass() { abstract override fun transformCompanionObject(transformer: FirTransformer, data: D): FirSealedClass + abstract override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirSealedClass + abstract override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirSealedClass } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt index 34ac7d521c0..6f3b22a6721 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt @@ -57,7 +57,7 @@ internal class FirAnonymousObjectImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { typeParameters.transformInplace(transformer, data) - superTypeRefs.transformInplace(transformer, data) + transformSuperTypeRefs(transformer, data) transformDeclarations(transformer, data) transformAnnotations(transformer, data) typeRef = typeRef.transformSingle(transformer, data) @@ -65,6 +65,11 @@ internal class FirAnonymousObjectImpl( return this } + override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { + superTypeRefs.transformInplace(transformer, data) + return this + } + override fun transformDeclarations(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { declarations.transformInplace(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt index 79d003883cb..a4a0b9dc1ee 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirClassImpl.kt @@ -66,7 +66,7 @@ internal class FirClassImpl( transformStatus(transformer, data) transformDeclarations(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } - superTypeRefs.transformInplace(transformer, data) + transformSuperTypeRefs(transformer, data) transformControlFlowGraphReference(transformer, data) return this } @@ -91,6 +91,11 @@ internal class FirClassImpl( return this } + override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirClassImpl { + superTypeRefs.transformInplace(transformer, data) + return this + } + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirClassImpl { controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt index 8b6da02f8af..c6a518a7110 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSealedClassImpl.kt @@ -69,7 +69,7 @@ internal class FirSealedClassImpl( transformStatus(transformer, data) transformDeclarations(transformer, data) companionObject = declarations.asSequence().filterIsInstance().firstOrNull { it.status.isCompanion } - superTypeRefs.transformInplace(transformer, data) + transformSuperTypeRefs(transformer, data) transformControlFlowGraphReference(transformer, data) return this } @@ -94,6 +94,11 @@ internal class FirSealedClassImpl( return this } + override fun transformSuperTypeRefs(transformer: FirTransformer, data: D): FirSealedClassImpl { + superTypeRefs.transformInplace(transformer, data) + return this + } + override fun transformControlFlowGraphReference(transformer: FirTransformer, data: D): FirSealedClassImpl { controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data) return this 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 7ef11037545..447905883ae 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 @@ -230,7 +230,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild parentArg(classLikeDeclaration, "F", "F") +symbol("FirClassSymbol", "F") +classKind - +superTypeRefs(withReplace = true) + +superTypeRefs(withReplace = true).withTransform() +declarations.withTransform() +annotations +scopeProvider