diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt index 7f7abaef3d2..08aca00bdad 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrFunction.kt @@ -29,7 +29,10 @@ interface IrFunction : IrDeclaration, IrTypeParametersContainer { val valueParameters: MutableList var body: IrBody? +} + +interface IrSimpleFunction : IrFunction { override val declarationKind: IrDeclarationKind get() = IrDeclarationKind.FUNCTION } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt index 608136c6e2a..12b19d84138 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFunctionImpl.kt @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.ir.declarations.impl import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction import org.jetbrains.kotlin.ir.expressions.IrBody import org.jetbrains.kotlin.ir.visitors.IrElementVisitor @@ -26,7 +27,7 @@ class IrFunctionImpl( endOffset: Int, origin: IrDeclarationOrigin, override val descriptor: FunctionDescriptor -) : IrFunctionBase(startOffset, endOffset, origin) { +) : IrFunctionBase(startOffset, endOffset, origin), IrSimpleFunction { constructor( startOffset: Int, endOffset: Int, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTree.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTree.kt index ce7d3f140d8..dfa3c72f3fc 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTree.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTree.kt @@ -96,7 +96,7 @@ open class DeepCopyIrTree : IrElementTransformerVoid() { mapTypeAliasDeclaration(declaration.descriptor) ) - override fun visitFunction(declaration: IrFunction): IrFunction = + override fun visitSimpleFunction(declaration: IrSimpleFunction): IrSimpleFunction = IrFunctionImpl( declaration.startOffset, declaration.endOffset, mapDeclarationOrigin(declaration.origin), diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt index d1f02c7687f..6ed8842252d 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformer.kt @@ -37,6 +37,7 @@ interface IrElementTransformer : IrElementVisitor { override fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data) override fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data) override fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data) + override fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data) override fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data) override fun visitProperty(declaration: IrProperty, data: D) = visitDeclaration(declaration, data) override fun visitField(declaration: IrField, data: D) = visitDeclaration(declaration, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt index 1c90523658a..c941b7d1bee 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementTransformerVoid.kt @@ -43,6 +43,9 @@ abstract class IrElementTransformerVoid : IrElementTransformer { open fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration) override final fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration) + open fun visitSimpleFunction(declaration: IrSimpleFunction) = visitFunction(declaration) + override final fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?) = visitSimpleFunction(declaration) + open fun visitConstructor(declaration: IrConstructor) = visitFunction(declaration) override final fun visitConstructor(declaration: IrConstructor, data: Nothing?) = visitConstructor(declaration) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt index 432d08641ec..d094e5e9589 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitor.kt @@ -29,6 +29,7 @@ interface IrElementVisitor { fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data) fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data) fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data) + fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data) fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data) fun visitProperty(declaration: IrProperty, data: D) = visitDeclaration(declaration, data) fun visitField(declaration: IrField, data: D) = visitDeclaration(declaration, data) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt index 145d73ea3ae..2e660586ffc 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/visitors/IrElementVisitorVoid.kt @@ -42,6 +42,9 @@ interface IrElementVisitorVoid : IrElementVisitor { fun visitFunction(declaration: IrFunction) = visitDeclaration(declaration) override fun visitFunction(declaration: IrFunction, data: Nothing?) = visitFunction(declaration) + fun visitSimpleFunction(declaration: IrSimpleFunction) = visitFunction(declaration) + override fun visitSimpleFunction(declaration: IrSimpleFunction, data: Nothing?) = visitSimpleFunction(declaration) + fun visitConstructor(declaration: IrConstructor) = visitFunction(declaration) override fun visitConstructor(declaration: IrConstructor, data: Nothing?) = visitConstructor(declaration) @@ -168,6 +171,9 @@ interface IrElementVisitorVoid : IrElementVisitor { fun visitBranch(branch: IrBranch) = visitElement(branch) override fun visitBranch(branch: IrBranch, data: Nothing?) = visitBranch(branch) + fun visitElseBranch(branch: IrElseBranch) = visitBranch(branch) + override fun visitElseBranch(branch: IrElseBranch, data: Nothing?) = visitElseBranch(branch) + fun visitLoop(loop: IrLoop) = visitExpression(loop) override fun visitLoop(loop: IrLoop, data: Nothing?) = visitLoop(loop)