Skip to content

Commit 6aa0c99

Browse files
Add IrFunctionExpression.irReturn and IrFunction.irReturn functions
1 parent ef5cde8 commit 6aa0c99

File tree

4 files changed

+20
-4
lines changed

4 files changed

+20
-4
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44

55
### Added
66

7+
- `IrFunctionExpression.irReturn: IrReturn?`
8+
- `IrFunction.irReturn: IrReturn?`
9+
710
### Changed
811

12+
- `IrFunction.buildIrReturn` to `IrFunction.copyIrReturn`
13+
914
### Deprecated
1015

1116
### Removed

kotlin-compiler-extensions/api/kotlin-compiler-extensions.api

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ public final class com/javiersc/kotlin/compiler/extensions/ir/IrGetEnumValueKt {
5959
}
6060

6161
public final class com/javiersc/kotlin/compiler/extensions/ir/IrReturnKt {
62-
public static final fun buildIrReturn (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;Lorg/jetbrains/kotlin/ir/expressions/IrExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrReturn;
62+
public static final fun copyIrReturn (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;Lorg/jetbrains/kotlin/ir/expressions/IrExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrReturn;
63+
public static final fun getIrReturn (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;)Lorg/jetbrains/kotlin/ir/expressions/IrReturn;
64+
public static final fun getIrReturn (Lorg/jetbrains/kotlin/ir/expressions/IrFunctionExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrReturn;
6365
}
6466

6567
public final class com/javiersc/kotlin/compiler/extensions/ir/IrTreeNodeKt {

kotlin-compiler-extensions/main/kotlin/com/javiersc/kotlin/compiler/extensions/ir/irReturn.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,18 @@ package com.javiersc.kotlin.compiler.extensions.ir
22

33
import org.jetbrains.kotlin.ir.declarations.IrFunction
44
import org.jetbrains.kotlin.ir.expressions.IrExpression
5+
import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
56
import org.jetbrains.kotlin.ir.expressions.IrReturn
67
import org.jetbrains.kotlin.ir.expressions.impl.IrReturnImpl
78
import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET
9+
import org.jetbrains.kotlin.ir.util.statements
10+
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
811

9-
public fun IrFunction.buildIrReturn(value: IrExpression): IrReturn =
12+
public val IrFunctionExpression.irReturn: IrReturn?
13+
get() = function.irReturn
14+
15+
public val IrFunction.irReturn: IrReturn?
16+
get() = body?.statements?.firstIsInstanceOrNull()
17+
18+
public fun IrFunction.copyIrReturn(value: IrExpression): IrReturn =
1019
IrReturnImpl(SYNTHETIC_OFFSET, SYNTHETIC_OFFSET, this.returnType, this.symbol, value)

kotlin-compiler-extensions/test/kotlin/com/javiersc/kotlin/compiler/extensions/FakeIrExtension.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.javiersc.kotlin.compiler.extensions
22

33
import com.javiersc.kotlin.compiler.extensions.ir.IrTreeNode
4-
import com.javiersc.kotlin.compiler.extensions.ir.buildIrReturn
54
import com.javiersc.kotlin.compiler.extensions.ir.name
65
import com.javiersc.kotlin.compiler.extensions.ir.treeNode
76
import com.javiersc.kotlin.compiler.extensions.ir.asIr
7+
import com.javiersc.kotlin.compiler.extensions.ir.copyIrReturn
88
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
99
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
1010
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
@@ -27,7 +27,7 @@ class FakeIrExtension : IrGenerationExtension {
2727
.asIr<IrCall>()
2828
val greetingsIrSimpleFunction: IrSimpleFunction = greetingsIrCall?.symbol?.owner ?: return
2929
val hiIrExpression: IrConst<*> = "hi".toIrConst(builtIns.stringType)
30-
val hiIrReturn: IrReturn = greetingsIrSimpleFunction.buildIrReturn(hiIrExpression)
30+
val hiIrReturn: IrReturn = greetingsIrSimpleFunction.copyIrReturn(hiIrExpression)
3131
greetingsIrSimpleFunction.body.asIr<IrBlockBody>()?.statements?.apply {
3232
clear()
3333
add(hiIrReturn)

0 commit comments

Comments
 (0)