blob: 082c3b4b3ab8ef527bcfb0b90cbd4357bd196eb4 [file]
// RUN_PIPELINE_TILL: CODEGEN
// ISSUES: KT-81932
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo1() {
try {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo1<!>()
} catch (e: Exception) {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo1<!>()
} finally {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo1<!>()
}
}
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo2() {
try {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo2<!>()
foo1()
} catch (e: Exception) {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo2<!>()
foo1()
} finally {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo2<!>()
foo1()
}
}
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo3() {
try {
try {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo3<!>()
} finally {
}
} catch (e: Exception) {
try {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo3<!>()
} finally {
}
} finally {
try {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo3<!>()
} finally {
}
}
}
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo4() {
try {
if (true) {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo4<!>()
} else {
foo1()
}
} catch (e: Exception) {
if (true) {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo4<!>()
} else {
foo1()
}
} finally {
if (true) {
<!TAIL_RECURSION_IN_TRY_IS_NOT_SUPPORTED!>foo4<!>()
} else {
foo1()
}
}
}
tailrec fun foo5(param: Int) {
if (true) {
return foo5(param)
} else {
try { } finally { }
}
}
open class DefaultArgumentBase {
open fun recurse(value: Int = 0) {}
}
class DefaultArgumentOverride : DefaultArgumentBase() {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> override fun recurse(value: Int) {
try {
<!NON_TAIL_RECURSIVE_CALL!>recurse<!>()
} finally {
}
}
}
class ForeignReceiver {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun recurse(other: ForeignReceiver) {
try {
other.<!NON_TAIL_RECURSIVE_CALL!>recurse<!>(other)
} finally {
}
}
}
/* GENERATED_FIR_TAGS: classDeclaration, functionDeclaration, ifExpression, integerLiteral, localProperty, override,
propertyDeclaration, tailrec, tryExpression */