From d718b596bc0eb9edafc823134eb065afcc302be2 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 13 Apr 2020 11:55:08 +0300 Subject: [PATCH] [FIR] Add transform declaration and companion to regular class --- .../kotlin/fir/java/declarations/FirJavaClass.kt | 11 ++++++++++- .../kotlin/fir/declarations/FirAnonymousObject.kt | 2 ++ .../org/jetbrains/kotlin/fir/declarations/FirClass.kt | 2 ++ .../kotlin/fir/declarations/FirRegularClass.kt | 4 ++++ .../kotlin/fir/declarations/FirSealedClass.kt | 4 ++++ .../fir/declarations/impl/FirAnonymousObjectImpl.kt | 7 ++++++- .../kotlin/fir/declarations/impl/FirClassImpl.kt | 10 ++++++++++ .../fir/declarations/impl/FirSealedClassImpl.kt | 10 ++++++++++ .../kotlin/fir/tree/generator/NodeConfigurator.kt | 4 ++-- 9 files changed, 50 insertions(+), 4 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 62146d8be16..f23c5a012e1 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 @@ -77,7 +77,7 @@ class FirJavaClass @FirImplementationDetail internal constructor( override fun transformChildren(transformer: FirTransformer, data: D): FirJavaClass { typeParameters.transformInplace(transformer, data) - declarations.transformInplace(transformer, data) + transformDeclarations(transformer, data) status = status.transformSingle(transformer, data) superTypeRefs.transformInplace(transformer, data) transformAnnotations(transformer, data) @@ -97,6 +97,15 @@ class FirJavaClass @FirImplementationDetail internal constructor( annotations.transformInplace(transformer, data) return this } + + override fun transformDeclarations(transformer: FirTransformer, data: D): FirJavaClass { + declarations.transformInplace(transformer, data) + return this + } + + override fun transformCompanionObject(transformer: FirTransformer, data: D): FirJavaClass { + return this + } } @FirBuilderDsl 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 425e7a47a6c..bf902924326 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,8 @@ abstract class FirAnonymousObject : FirClass, FirExpression( override fun accept(visitor: FirVisitor, data: D): R = visitor.visitAnonymousObject(this, data) + abstract override fun transformDeclarations(transformer: FirTransformer, data: D): FirAnonymousObject + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnonymousObject abstract fun transformControlFlowGraphReference(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 5dfcda4e9cf..6a799d2009a 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 @@ -37,5 +37,7 @@ interface FirClass> : FirClassLikeDeclaration, FirStatement, fun replaceSuperTypeRefs(newSuperTypeRefs: List) + 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 23cf7bf03c2..909a285aa3f 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 @@ -47,5 +47,9 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration, abstract override fun transformStatus(transformer: FirTransformer, data: D): FirRegularClass + abstract override fun transformDeclarations(transformer: FirTransformer, data: D): FirRegularClass + + abstract fun transformCompanionObject(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 9ff9bbac52b..752e57dadc0 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 @@ -48,5 +48,9 @@ abstract class FirSealedClass : FirRegularClass() { abstract override fun transformStatus(transformer: FirTransformer, data: D): FirSealedClass + abstract override fun transformDeclarations(transformer: FirTransformer, data: D): FirSealedClass + + abstract override fun transformCompanionObject(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 a025374d280..f5774aa397c 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 @@ -56,13 +56,18 @@ internal class FirAnonymousObjectImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { typeParameters.transformInplace(transformer, data) superTypeRefs.transformInplace(transformer, data) - declarations.transformInplace(transformer, data) + transformDeclarations(transformer, data) transformAnnotations(transformer, data) typeRef = typeRef.transformSingle(transformer, data) transformControlFlowGraphReference(transformer, data) return this } + override fun transformDeclarations(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { + declarations.transformInplace(transformer, data) + return this + } + override fun transformAnnotations(transformer: FirTransformer, data: D): FirAnonymousObjectImpl { annotations.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 8090aa59d09..dd79976acbf 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 @@ -79,6 +79,16 @@ internal class FirClassImpl( return this } + override fun transformDeclarations(transformer: FirTransformer, data: D): FirClassImpl { + declarations.transformInplace(transformer, data) + return this + } + + override fun transformCompanionObject(transformer: FirTransformer, data: D): FirClassImpl { + companionObject = companionObject?.transformSingle(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 cf6c3956b27..f386331c3ea 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 @@ -82,6 +82,16 @@ internal class FirSealedClassImpl( return this } + override fun transformDeclarations(transformer: FirTransformer, data: D): FirSealedClassImpl { + declarations.transformInplace(transformer, data) + return this + } + + override fun transformCompanionObject(transformer: FirTransformer, data: D): FirSealedClassImpl { + companionObject = companionObject?.transformSingle(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 2b989ab3c53..c169c24c475 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 @@ -229,7 +229,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild +symbol("FirClassSymbol", "F") +classKind +superTypeRefs(withReplace = true) - +declarations + +declarations.withTransform() +annotations +scopeProvider } @@ -238,7 +238,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild parentArg(klass, "F", regularClass) +name +symbol("FirRegularClassSymbol") - +field("companionObject", regularClass, nullable = true) + +field("companionObject", regularClass, nullable = true).withTransform() +booleanField("hasLazyNestedClassifiers") +superTypeRefs(withReplace = true) +controlFlowGraphReferenceField