[FIR] Add transform declaration and companion to regular class
This commit is contained in:
@@ -77,7 +77,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, 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 <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirJavaClass {
|
||||
declarations.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirJavaClass {
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
@FirBuilderDsl
|
||||
|
||||
@@ -37,6 +37,8 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirExpression(
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousObject(this, data)
|
||||
|
||||
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||
|
||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||
|
||||
@@ -37,5 +37,7 @@ interface FirClass<F : FirClass<F>> : FirClassLikeDeclaration<F>, FirStatement,
|
||||
|
||||
fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
|
||||
|
||||
fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirClass<F>
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClass<F>
|
||||
}
|
||||
|
||||
@@ -47,5 +47,9 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
|
||||
|
||||
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
|
||||
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
|
||||
abstract fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
|
||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
}
|
||||
|
||||
@@ -48,5 +48,9 @@ abstract class FirSealedClass : FirRegularClass() {
|
||||
|
||||
abstract override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
|
||||
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
|
||||
abstract override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
|
||||
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
}
|
||||
|
||||
+6
-1
@@ -56,13 +56,18 @@ internal class FirAnonymousObjectImpl(
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, 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 <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||
declarations.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||
annotations.transformInplace(transformer, data)
|
||||
return this
|
||||
|
||||
@@ -79,6 +79,16 @@ internal class FirClassImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirClassImpl {
|
||||
declarations.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirClassImpl {
|
||||
companionObject = companionObject?.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirClassImpl {
|
||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+10
@@ -82,6 +82,16 @@ internal class FirSealedClassImpl(
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
|
||||
declarations.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
|
||||
companionObject = companionObject?.transformSingle(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
|
||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+2
-2
@@ -229,7 +229,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
+symbol("FirClassSymbol", "F")
|
||||
+classKind
|
||||
+superTypeRefs(withReplace = true)
|
||||
+declarations
|
||||
+declarations.withTransform()
|
||||
+annotations
|
||||
+scopeProvider
|
||||
}
|
||||
@@ -238,7 +238,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(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
|
||||
|
||||
Reference in New Issue
Block a user