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