| // KT-44050 | |
| enum class Enum { | |
| Entry1() { | |
| fun bogus() = 42 | |
| }, | |
| Entry2() { | |
| fun bogus() = 42 | |
| } | |
| } | |
| class Outer { | |
| fun barCaller(): Enum = obj1.bar() | |
| fun bazCaller(): Enum = obj2.baz() | |
| private abstract inner class Inner<T>(val default: T) { | |
| abstract fun foo() | |
| } | |
| private val obj1 = object : Inner<Enum>(Enum.Entry1) { | |
| override fun foo() { | |
| TODO("not related") | |
| } | |
| fun bar(): Enum { | |
| return default | |
| } | |
| } | |
| private val obj2 = object : Inner<Enum>(Enum.Entry2) { | |
| override fun foo() { | |
| TODO("not related") | |
| } | |
| fun baz(): Enum { | |
| return default | |
| } | |
| } | |
| } | |
| fun box(): String { | |
| val o = Outer() | |
| if (o.barCaller() != Enum.Entry1) return "Fail1" | |
| if (o.bazCaller() != Enum.Entry2) return "Fail2" | |
| return "OK" | |
| } |