Fix for KT-10313: ClassCastException with Generics

#KT-10313 Fixed
This commit is contained in:
Anton Sukhonosenko
2015-12-15 08:54:09 +03:00
committed by Michael Bogdanov
parent edf6a2142b
commit 0073257841
12 changed files with 140 additions and 2 deletions
@@ -0,0 +1,7 @@
class Box<T>(val value: T)
fun box() : String {
val b = Box<Long>(2 * 3)
val expected: Long? = 6L
return if (b.value == expected) "OK" else "fail"
}
@@ -0,0 +1,7 @@
class Box<T>(val value: T)
fun box() : String {
val b = Box<Long>(x@ (1 + 2))
val expected: Long? = 3L
return if (b.value == expected) "OK" else "fail"
}
@@ -0,0 +1,7 @@
class Box<T>(val value: T)
fun box() : String {
val b = Box<Long>((-1))
val expected: Long? = -1L
return if (b.value == expected) "OK" else "fail"
}
@@ -0,0 +1,7 @@
open class Base<T>(val value: T)
class Box(): Base<Long>(-1)
fun box(): String {
val expected: Long? = -1L
return if (Box().value == expected) "OK" else "fail"
}
@@ -0,0 +1,7 @@
class Box<T>(val value: T)
fun box() : String {
val b = Box<Long>(-1)
val expected: Long? = -1L
return if (b.value == expected) "OK" else "fail"
}
@@ -0,0 +1,11 @@
class Box<T>(val value: T)
fun <T> run(vararg z: T): Box<T> {
return Box<T>(z[0])
}
fun box(): String {
val b = run<Long>(-1, -1, -1)
val expected: Long? = -1L
return if (b.value == expected) "OK" else "fail"
}
@@ -0,0 +1,15 @@
public class Box<T> {
private final T value;
public Box(T value) {
this.value = value;
}
public static <T> Box<T> create(T defaultValue) {
return new Box(defaultValue);
}
public T getValue() {
return value;
}
}
@@ -0,0 +1,4 @@
fun box(): String {
val sub = Box<Long>(-1)
return if (sub.value == -1L) "OK" else "fail"
}
@@ -1,5 +1,8 @@
const val one = 1
const val two = 2
fun test1() {
if (!(1 < 2)) {
if (!(one < two)) {
val p = 1
}
}