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:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user