Add IrSimpleFunction : IrFunction

NB can't make 'override val descriptor: SimpleFunctionDescriptor' there,
because there are quite some FunctionDescriptors that are not
SimpleFunctionDescriptor, but actually belong to this category.
This commit is contained in:
Dmitry Petrov
2017-03-20 17:50:09 +03:00
parent a416cddcb2
commit b817638851
7 changed files with 17 additions and 2 deletions
@@ -29,7 +29,10 @@ interface IrFunction : IrDeclaration, IrTypeParametersContainer {
val valueParameters: MutableList<IrValueParameter>
var body: IrBody?
}
interface IrSimpleFunction : IrFunction {
override val declarationKind: IrDeclarationKind
get() = IrDeclarationKind.FUNCTION
}
@@ -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,
@@ -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),
@@ -37,6 +37,7 @@ interface IrElementTransformer<in D> : IrElementVisitor<IrElement, D> {
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)
@@ -43,6 +43,9 @@ abstract class IrElementTransformerVoid : IrElementTransformer<Nothing?> {
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)
@@ -29,6 +29,7 @@ interface IrElementVisitor<out R, in D> {
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)
@@ -42,6 +42,9 @@ interface IrElementVisitorVoid : IrElementVisitor<Unit, Nothing?> {
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<Unit, Nothing?> {
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)