KT-6320 AssertionError in ConstraintSystem(The constraint shouldn't contain different type variables on both sides: Y <: X)

#KT-6320 Fixed
This commit is contained in:
Svetlana Isakova
2014-12-02 15:07:17 +03:00
parent b098220d03
commit f9d4a68c6e
4 changed files with 60 additions and 7 deletions
@@ -0,0 +1,20 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
// AssertionError in ConstraintSystem(The constraint shouldn't contain different type variables on both sides: Y <: X)
class A<X, Y : X>
class B<X, Y : X>(foo: A<X, Y>) {
fun test1(a: A<X, Y>) {
B(a)
val b: B<X, Y> = B(a)
// crash here
}
}
class C<X, Z, Y : X>
class D<X, Z, Y : X>(foo: C<X, Z, Y>) {
fun test(a: C<Y, Y, Y>) {
val d: D<X, Y, Y> = <!TYPE_MISMATCH!>D(a)<!>
}
}
@@ -0,0 +1,31 @@
package
internal final class A</*0*/ X, /*1*/ Y : X> {
public constructor A</*0*/ X, /*1*/ Y : X>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class B</*0*/ X, /*1*/ Y : X> {
public constructor B</*0*/ X, /*1*/ Y : X>(/*0*/ foo: A<X, Y>)
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun test1(/*0*/ a: A<X, Y>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class C</*0*/ X, /*1*/ Z, /*2*/ Y : X> {
public constructor C</*0*/ X, /*1*/ Z, /*2*/ Y : X>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class D</*0*/ X, /*1*/ Z, /*2*/ Y : X> {
public constructor D</*0*/ X, /*1*/ Z, /*2*/ Y : X>(/*0*/ foo: C<X, Z, Y>)
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
internal final fun test(/*0*/ a: C<Y, Y, Y>): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}