// SKIP_TXT // !DIAGNOSTICS: -UNUSED_VARIABLE interface OutBase interface OutDerived : OutBase fun OutBase.myLast(): X = TODO() fun foo(x: OutBase) { if (x is OutDerived<*>) { val l: T = x.myLast() // required T, found Cap(*). Only in NI } } interface InvBase interface InvDerived : InvBase fun InvBase.myLastInv(): X = TODO() fun fooInv(x: InvBase) { if (x is InvDerived<*>) { val l: T = x.myLastInv() // required T, found Cap(*). Only in NI } } interface Base fun Base.foo(): Q = TODO() fun Base.baz(): Q = TODO() interface Derived : Base fun Number.num() {} fun main(b: Base) { b.foo().num() if (b is Derived<*>) { b.foo().num() b.baz().length } }