| // RUN_PIPELINE_TILL: CODEGEN | |
| object Foo { | |
| tailrec fun foo1() { | |
| foo1() | |
| } | |
| tailrec fun foo2() { | |
| this.foo2() | |
| } | |
| tailrec fun foo3() { | |
| Foo.foo3() | |
| } | |
| } | |
| class Bar { | |
| companion object { | |
| tailrec fun bar1() { | |
| bar1() | |
| } | |
| tailrec fun bar2() { | |
| this.bar2() | |
| } | |
| tailrec fun bar3() { | |
| Bar.bar3() | |
| } | |
| tailrec fun bar4() { | |
| Bar.Companion.bar4() | |
| } | |
| } | |
| } | |
| enum class E { | |
| A { | |
| override tailrec fun rec() { | |
| rec() | |
| } | |
| }, | |
| B { | |
| override tailrec fun rec() { | |
| this.rec() | |
| } | |
| }, | |
| C { | |
| override <!NO_TAIL_CALLS_FOUND!>tailrec<!> fun rec() { | |
| C.rec() // resolution goes to `E.rec`. Hence the resolved symbol is considered different from `C.rec`. | |
| } | |
| }; | |
| abstract fun rec() | |
| } | |
| /* GENERATED_FIR_TAGS: classDeclaration, companionObject, enumDeclaration, enumEntry, functionDeclaration, | |
| objectDeclaration, tailrec, thisExpression */ |