// 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(val default: T) { abstract fun foo() } private val obj1 = object : Inner(Enum.Entry1) { override fun foo() { TODO("not related") } fun bar(): Enum { return default } } private val obj2 = object : Inner(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" }