IR: move IrElement.transform implementation to IrElementBase
To avoid extra indirection via `IrElement$DefaultImpls` for elements whose `transform` uses the default implementation. And also, to simplify migration to auto-generated IR tree.
This commit is contained in:
@@ -27,9 +27,11 @@ class MergeCfgElement(val from: IrElement, val name: String) : CfgIrElement {
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D) = visitor.visitElement(this, data)
|
||||
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement = accept(transformer, data)
|
||||
|
||||
override fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D) = Unit
|
||||
|
||||
override fun <D> transformChildren(transformer: IrElementTransformer<D>, data: D) = Unit
|
||||
|
||||
override fun toString() = "$name: ${from.dump()}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,7 @@ interface IrElement {
|
||||
|
||||
fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R
|
||||
|
||||
fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||
accept(transformer, data)
|
||||
fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement
|
||||
|
||||
fun <D> acceptChildren(visitor: IrElementVisitor<Unit, D>, data: D)
|
||||
|
||||
|
||||
@@ -16,4 +16,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
abstract class IrElementBase : IrElement
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
|
||||
|
||||
abstract class IrElementBase : IrElement {
|
||||
override fun <D> transform(transformer: IrElementTransformer<D>, data: D): IrElement =
|
||||
accept(transformer, data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user