FIR2IR: distinguish constructor when picking return target
This commit is contained in:
committed by
Mikhail Glukhikh
parent
5ab822be36
commit
aa488eabc9
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -97,7 +98,13 @@ class Fir2IrConversionScope {
|
||||
|
||||
fun returnTarget(expression: FirReturnExpression, declarationStorage: Fir2IrDeclarationStorage): IrFunction {
|
||||
val firTarget = expression.target.labeledElement
|
||||
val irTarget = (firTarget as? FirFunction)?.let { declarationStorage.getCachedIrFunction(it) }
|
||||
val irTarget = (firTarget as? FirFunction)?.let {
|
||||
if (it is FirConstructor) {
|
||||
declarationStorage.getCachedIrConstructor(it)
|
||||
} else {
|
||||
declarationStorage.getCachedIrFunction(it)
|
||||
}
|
||||
}
|
||||
for (potentialTarget in functionStack.asReversed()) {
|
||||
if (potentialTarget == irTarget) {
|
||||
return potentialTarget
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
inline fun run2(block: () -> Unit) = block()
|
||||
|
||||
class A {
|
||||
|
||||
Reference in New Issue
Block a user