From 4bec1b08f9a9b058b3c3d3ec0cb52f3890a27b8b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 9 Feb 2022 01:20:28 +0100 Subject: [PATCH] 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. --- .../org/jetbrains/kotlin/ir2cfg/nodes/MergeCfgElement.kt | 4 +++- .../ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt | 3 +-- .../ir.tree/src/org/jetbrains/kotlin/ir/IrElementBase.kt | 7 ++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/nodes/MergeCfgElement.kt b/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/nodes/MergeCfgElement.kt index 3f2f4a32701..93abcc02ed1 100644 --- a/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/nodes/MergeCfgElement.kt +++ b/compiler/ir/ir.ir2cfg/src/org/jetbrains/kotlin/ir2cfg/nodes/MergeCfgElement.kt @@ -27,9 +27,11 @@ class MergeCfgElement(val from: IrElement, val name: String) : CfgIrElement { override fun accept(visitor: IrElementVisitor, data: D) = visitor.visitElement(this, data) + override fun transform(transformer: IrElementTransformer, data: D): IrElement = accept(transformer, data) + override fun acceptChildren(visitor: IrElementVisitor, data: D) = Unit override fun transformChildren(transformer: IrElementTransformer, data: D) = Unit override fun toString() = "$name: ${from.dump()}" -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt index 397928b29dd..8d7b87453a9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElement.kt @@ -15,8 +15,7 @@ interface IrElement { fun accept(visitor: IrElementVisitor, data: D): R - fun transform(transformer: IrElementTransformer, data: D): IrElement = - accept(transformer, data) + fun transform(transformer: IrElementTransformer, data: D): IrElement fun acceptChildren(visitor: IrElementVisitor, data: D) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElementBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElementBase.kt index 9635351419c..eee723926ae 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElementBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/IrElementBase.kt @@ -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 transform(transformer: IrElementTransformer, data: D): IrElement = + accept(transformer, data) +}