[FIR] Add transformSuperTypeRefs to FirClass
This commit is contained in:
@@ -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 <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirRegularClass {
|
||||
superTypeRefs.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirJavaClass {
|
||||
status = status.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
@@ -44,6 +44,8 @@ abstract class FirAnonymousObject : FirClass<FirAnonymousObject>, FirExpression(
|
||||
|
||||
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||
|
||||
abstract override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||
|
||||
abstract override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||
|
||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirAnonymousObject
|
||||
|
||||
@@ -40,6 +40,8 @@ interface FirClass<F : FirClass<F>> : FirClassLikeDeclaration<F>, FirStatement,
|
||||
|
||||
fun replaceSuperTypeRefs(newSuperTypeRefs: List<FirTypeRef>)
|
||||
|
||||
fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirClass<F>
|
||||
|
||||
fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirClass<F>
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirClass<F>
|
||||
|
||||
@@ -54,5 +54,7 @@ abstract class FirRegularClass : FirPureAbstractElement(), FirMemberDeclaration,
|
||||
|
||||
abstract fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
|
||||
abstract override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
|
||||
abstract fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirRegularClass
|
||||
}
|
||||
|
||||
@@ -57,5 +57,7 @@ abstract class FirSealedClass : FirRegularClass() {
|
||||
|
||||
abstract override fun <D> transformCompanionObject(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
|
||||
abstract override fun <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
|
||||
abstract override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClass
|
||||
}
|
||||
|
||||
+6
-1
@@ -57,7 +57,7 @@ internal class FirAnonymousObjectImpl(
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, 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 <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||
superTypeRefs.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirAnonymousObjectImpl {
|
||||
declarations.transformInplace(transformer, data)
|
||||
return this
|
||||
|
||||
@@ -66,7 +66,7 @@ internal class FirClassImpl(
|
||||
transformStatus(transformer, data)
|
||||
transformDeclarations(transformer, data)
|
||||
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().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 <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirClassImpl {
|
||||
superTypeRefs.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirClassImpl {
|
||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+6
-1
@@ -69,7 +69,7 @@ internal class FirSealedClassImpl(
|
||||
transformStatus(transformer, data)
|
||||
transformDeclarations(transformer, data)
|
||||
companionObject = declarations.asSequence().filterIsInstance<FirRegularClass>().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 <D> transformSuperTypeRefs(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
|
||||
superTypeRefs.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun <D> transformControlFlowGraphReference(transformer: FirTransformer<D>, data: D): FirSealedClassImpl {
|
||||
controlFlowGraphReference = controlFlowGraphReference.transformSingle(transformer, data)
|
||||
return this
|
||||
|
||||
+1
-1
@@ -230,7 +230,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
parentArg(classLikeDeclaration, "F", "F")
|
||||
+symbol("FirClassSymbol", "F")
|
||||
+classKind
|
||||
+superTypeRefs(withReplace = true)
|
||||
+superTypeRefs(withReplace = true).withTransform()
|
||||
+declarations.withTransform()
|
||||
+annotations
|
||||
+scopeProvider
|
||||
|
||||
Reference in New Issue
Block a user