package foo.bar fun Int.f0(s: S): S { return s } fun Int.f1(s: S): C0? { return null } open class C0 {} class C1(val t: T) : C0() { fun f1(t: T) {} fun f2(u: U): C1 { return C1(u) } } class C2() { fun

f4(p: P) {} } fun m() { val c1 = C1(1) c1.f1(2) val x1 = c1.f2("") val c2 = C1("") c2.f1("a") val x2 = c2.f2(3) val c3 = C2() c3.f4(5) val c4: C0<*> = C0() } class BoundedTest { fun m(s: S, t: T) { } } class Outer { inner class Inner1 { fun fn1(t1: T1, t2: T2, t3: T3, t4: T4) { val c = Inner1() } } class Nested1 { fun fn2(t3: T3, t4: T4) { val c = Nested1() } } } class Class1 { fun fn1(t: T2) { class Local { fun fn2(t2: T2, t4: T4) {} } Local().fn2(t, "") } } // Diagnostic Matches: % Found more type arguments than parameters: foo.bar.Class1 ...while extracting a enclosing class (fn1) at %generics.kt:57:5:62:5%