[SIR] Fix transformer auto-generation

The default implementation of a transformer method should delegate to
`parentInVisitor`
This commit is contained in:
Sergej Jaskiewicz
2023-12-06 13:46:49 +01:00
committed by Space Team
parent 0d2032f3ef
commit 701a48b211
2 changed files with 9 additions and 9 deletions
@@ -47,7 +47,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
}
open fun transformForeignDeclaration(foreignDeclaration: SirForeignDeclaration, data: D): SirDeclaration {
return transformElement(foreignDeclaration, data)
return transformDeclaration(foreignDeclaration, data)
}
final override fun visitForeignDeclaration(foreignDeclaration: SirForeignDeclaration, data: D): SirDeclaration {
@@ -56,7 +56,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
open fun transformNamedDeclaration(namedDeclaration: SirNamedDeclaration, data: D): SirDeclaration {
return transformElement(namedDeclaration, data)
return transformDeclaration(namedDeclaration, data)
}
final override fun visitNamedDeclaration(namedDeclaration: SirNamedDeclaration, data: D): SirDeclaration {
@@ -64,7 +64,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
}
open fun transformEnum(enum: SirEnum, data: D): SirDeclaration {
return transformElement(enum, data)
return transformNamedDeclaration(enum, data)
}
final override fun visitEnum(enum: SirEnum, data: D): SirDeclaration {
@@ -72,7 +72,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
}
open fun transformStruct(struct: SirStruct, data: D): SirDeclaration {
return transformElement(struct, data)
return transformNamedDeclaration(struct, data)
}
final override fun visitStruct(struct: SirStruct, data: D): SirDeclaration {
@@ -80,7 +80,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
}
open fun transformCallable(callable: SirCallable, data: D): SirDeclaration {
return transformElement(callable, data)
return transformDeclaration(callable, data)
}
final override fun visitCallable(callable: SirCallable, data: D): SirDeclaration {
@@ -88,7 +88,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
}
open fun transformFunction(function: SirFunction, data: D): SirDeclaration {
return transformElement(function, data)
return transformCallable(function, data)
}
final override fun visitFunction(function: SirFunction, data: D): SirDeclaration {
@@ -96,7 +96,7 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
}
open fun transformForeignFunction(foreignFunction: SirForeignFunction, data: D): SirDeclaration {
return transformElement(foreignFunction, data)
return transformCallable(foreignFunction, data)
}
final override fun visitForeignFunction(foreignFunction: SirForeignFunction, data: D): SirDeclaration {
@@ -53,7 +53,7 @@ internal class TransformerPrinter(
)
println()
} else {
if (element.parentInVisitor == null) return
val parentInVisitor = element.parentInVisitor ?: return
printFunctionWithBlockBody(
name = "transform" + element.name,
parameters = listOf(
@@ -64,7 +64,7 @@ internal class TransformerPrinter(
typeParameters = element.params,
modality = Modality.OPEN,
) {
println("return transformElement(", elementParameterName, ", data)")
println("return ", "transform", parentInVisitor.name, "(", elementParameterName, ", data)")
}
}
println()