// !WITH_NEW_INFERENCE // !CHECK_TYPE // !DIAGNOSTICS: -UNUSED_VALUE -VARIABLE_WITH_REDUNDANT_INITIALIZER -TOPLEVEL_TYPEALIASES_ONLY class A class Outer { inner class Inner { private fun foobar() = { open class LocalOuter { inner class LocalInner { fun a() = A() } typealias LocalAlias = A } class Derived : LocalOuter() { fun foo(): LocalInner = null!! fun bar(): LocalAlias = null!! } Derived() } private fun noParameters() = { open class LocalOuter2 { inner class LocalInner2 { fun a() = A() } typealias LocalAlias2 = A } class Derived2 : LocalOuter2() { fun foo(): LocalInner2 = null!! fun bar(): LocalAlias2 = null!! } Derived2() } fun test(z: Outer.Inner) { var x = foobar() x = foobar() x().foo().a() checkType { _>() } x().bar() checkType { _>() } x = foobar() x = z.foobar() var y = noParameters() y = noParameters() y().foo().a() checkType { _>() } y().bar() checkType { _>() } } } }