Fix several bugs in serialization of inner generic classes
- Interner was working incorrectly with parents - nested classes were serialized in codegen out of any context #KT-5660 Fixed
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package test
|
||||
|
||||
class A<TA> {
|
||||
inner class B<TB> {
|
||||
inner class C<TC> {
|
||||
inner class D<TD> {
|
||||
fun <P1, P2, P3, P4> foo(p1: P1, p2: P2, p3: P3, p4: P4): Nothing = null!!
|
||||
|
||||
fun bar(ta: TA, tb: TB, tc: TC, td: TD): A<TA>.B<TB>.C<TC>.D<TD> = foo<TA, TB, TC, TD>(ta, tb, tc, td)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package test
|
||||
|
||||
internal final class A</*0*/ TA> {
|
||||
/*primary*/ public constructor A</*0*/ TA>()
|
||||
|
||||
internal final inner class B</*0*/ TB> {
|
||||
/*primary*/ public constructor B</*0*/ TB>()
|
||||
|
||||
internal final inner class C</*0*/ TC> {
|
||||
/*primary*/ public constructor C</*0*/ TC>()
|
||||
|
||||
internal final inner class D</*0*/ TD> {
|
||||
/*primary*/ public constructor D</*0*/ TD>()
|
||||
internal final fun bar(/*0*/ ta: TA, /*1*/ tb: TB, /*2*/ tc: TC, /*3*/ td: TD): test.A.B.C.D<TD>
|
||||
internal final fun </*0*/ P1, /*1*/ P2, /*2*/ P3, /*3*/ P4> foo(/*0*/ p1: P1, /*1*/ p2: P2, /*2*/ p3: P3, /*3*/ p4: P4): kotlin.Nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package test
|
||||
|
||||
class InnerClassReferencesOuterTP<P> {
|
||||
inner class Inner<Q : P>
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package test
|
||||
|
||||
internal final class InnerClassReferencesOuterTP</*0*/ P> {
|
||||
/*primary*/ public constructor InnerClassReferencesOuterTP</*0*/ P>()
|
||||
|
||||
internal final inner class Inner</*0*/ Q : P> {
|
||||
/*primary*/ public constructor Inner</*0*/ Q : P>()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package test
|
||||
|
||||
class MembersReferenceOuterTP<P> {
|
||||
inner class Inner {
|
||||
fun f<Q : P>() {}
|
||||
fun g(p: P): P = null!!
|
||||
|
||||
val v: P = null!!
|
||||
val <Q : P> w: Q = null!!
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package test
|
||||
|
||||
internal final class MembersReferenceOuterTP</*0*/ P> {
|
||||
/*primary*/ public constructor MembersReferenceOuterTP</*0*/ P>()
|
||||
|
||||
internal final inner class Inner {
|
||||
/*primary*/ public constructor Inner()
|
||||
internal final val v: P
|
||||
internal final fun <get-v>(): P
|
||||
internal final val </*0*/ Q : P> w: Q
|
||||
internal final fun <get-w>(): Q
|
||||
internal final fun </*0*/ Q : P> f(): kotlin.Unit
|
||||
internal final fun g(/*0*/ p: P): P
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user