Don't load Object as a supertype for Java classes

#KT-4890 In Progress
 #KT-5002 Fixed
This commit is contained in:
Alexander Udalov
2014-07-21 17:28:06 +04:00
parent bea740b478
commit a79398fa00
34 changed files with 95 additions and 130 deletions
@@ -1,6 +1,6 @@
public open class Test(): java.util.RandomAccess, Cloneable, java.io.Serializable
{
public override fun clone(): Test = Test() // Override 'clone()' with more precise type 'Test'
public fun clone(): Test = Test() // Override 'clone()' with more precise type 'Test'
public override fun toString() = "OK"
}
@@ -1,7 +1,7 @@
fun box(): String {
val f = { }
val class1 = Runnable(f).getClass()
val class2 = Runnable(f).getClass()
val class1 = (Runnable(f) as Object).getClass()
val class2 = (Runnable(f) as Object).getClass()
return if (class1 == class2) "OK" else "$class1 $class2"
}
}
@@ -1,7 +1,7 @@
fun box(): String {
val f = { }
val class1 = Runnable(f).getClass()
val class2 = Custom.Runnable(f).getClass()
val class1 = Runnable(f).javaClass
val class2 = Custom.Runnable(f).javaClass
return if (class1 != class2) "OK" else "Same class: $class1"
}
@@ -2,7 +2,7 @@ import java.util.Arrays
fun box(): String {
val r: JavaClass.Computable<String> = JavaClass.Computable { "OK" }
val supertypes = Arrays.toString(r.getClass().getGenericInterfaces())
val supertypes = Arrays.toString(r.javaClass.getGenericInterfaces())
if (supertypes != "[JavaClass.JavaClass\$Computable<java.lang.String>]") return "Fail: $supertypes"
return JavaClass.compute(r)!!
}
@@ -1,6 +1,6 @@
fun box(): String {
val class1 = getWrapped1().getClass()
val class2 = getWrapped2().getClass()
val class1 = getWrapped1().javaClass
val class2 = getWrapped2().javaClass
return if (class1 != class2) "OK" else "Same class: $class1"
}
}
@@ -0,0 +1,15 @@
import java.io.Serializable
public data class Pair<out A, out B> (
public val first: A,
public val second: B
) : Serializable
fun box(): String {
val p = Pair(42, "OK")
val q = Pair(42, "OK")
if (p != q) return "Fail equals"
if (p.hashCode() != q.hashCode()) return "Fail hashCode"
if (p.toString() != q.toString()) return "Fail toString"
return p.second
}