[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 {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirJavaClass {
|
||||||
typeParameters.transformInplace(transformer, data)
|
typeParameters.transformInplace(transformer, data)
|
||||||
declarations.transformInplace(transformer, data)
|
transformDeclarations(transformer, data)
|
||||||
status = status.transformSingle(transformer, data)
|
status = status.transformSingle(transformer, data)
|
||||||
superTypeRefs.transformInplace(transformer, data)
|
superTypeRefs.transformInplace(transformer, data)
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
@@ -97,6 +97,15 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
|||||||
annotations.transformInplace(transformer, data)
|
annotations.transformInplace(transformer, data)
|
||||||
return this
|
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
|
@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)
|
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 override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||||
|
|
||||||
abstract fun <D> transformControlFlowGraphReference(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 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>
|
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> 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
|
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> 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
|
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 {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||||
typeParameters.transformInplace(transformer, data)
|
typeParameters.transformInplace(transformer, data)
|
||||||
superTypeRefs.transformInplace(transformer, data)
|
superTypeRefs.transformInplace(transformer, data)
|
||||||
declarations.transformInplace(transformer, data)
|
transformDeclarations(transformer, data)
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
typeRef = typeRef.transformSingle(transformer, data)
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
transformControlFlowGraphReference(transformer, data)
|
transformControlFlowGraphReference(transformer, data)
|
||||||
return this
|
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 {
|
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||||
annotations.transformInplace(transformer, data)
|
annotations.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
|
|||||||
@@ -79,6 +79,16 @@ internal class FirClassImpl(
|
|||||||
return this
|
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 {
|
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirClassImpl {
|
||||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||||
return this
|
return this
|
||||||
|
|||||||
+10
@@ -82,6 +82,16 @@ internal class FirSealedClassImpl(
|
|||||||
return this
|
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 {
|
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
|
||||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||||
return this
|
return this
|
||||||
|
|||||||
+2
-2
@@ -229,7 +229,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
+symbol("FirClassSymbol", "F")
|
+symbol("FirClassSymbol", "F")
|
||||||
+classKind
|
+classKind
|
||||||
+superTypeRefs(withReplace = true)
|
+superTypeRefs(withReplace = true)
|
||||||
+declarations
|
+declarations.withTransform()
|
||||||
+annotations
|
+annotations
|
||||||
+scopeProvider
|
+scopeProvider
|
||||||
}
|
}
|
||||||
@@ -238,7 +238,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
parentArg(klass, "F", regularClass)
|
parentArg(klass, "F", regularClass)
|
||||||
+name
|
+name
|
||||||
+symbol("FirRegularClassSymbol")
|
+symbol("FirRegularClassSymbol")
|
||||||
+field("companionObject", regularClass, nullable = true)
|
+field("companionObject", regularClass, nullable = true).withTransform()
|
||||||
+booleanField("hasLazyNestedClassifiers")
|
+booleanField("hasLazyNestedClassifiers")
|
||||||
+superTypeRefs(withReplace = true)
|
+superTypeRefs(withReplace = true)
|
||||||
+controlFlowGraphReferenceField
|
+controlFlowGraphReferenceField
|
||||||
|
|||||||
Reference in New Issue
Block a user