Fix javaClass property for long and double

#KT-3046 Fixed
This commit is contained in:
Natalia.Ukhorskaya
2012-11-19 21:15:15 +04:00
parent 7bb7445c57
commit 900788a8e0
3 changed files with 25 additions and 2 deletions
@@ -44,13 +44,12 @@ public class JavaClassProperty implements IntrinsicMethod {
StackValue receiver,
@NotNull GenerationState state
) {
receiver.put(receiver.type, v);
JvmPrimitiveType primitiveType = JvmPrimitiveType.getByAsmType(receiver.type);
if (primitiveType != null) {
v.pop();
v.getstatic(primitiveType.getWrapper().getAsmType().getInternalName(), "TYPE", "Ljava/lang/Class;");
}
else {
receiver.put(receiver.type, v);
v.invokevirtual("java/lang/Object", "getClass", "()Ljava/lang/Class;");
}
return StackValue.onStack(AsmTypeConstants.getType(Class.class));
@@ -0,0 +1,20 @@
fun box(): String {
val bool = true
if (bool.javaClass != javaClass<Boolean>()) return "javaClass function on boolean fails"
val b = 1.toByte()
if (b.javaClass != javaClass<Byte>()) return "javaClass function on byte fails"
val s = 1.toShort()
if (s.javaClass != javaClass<Short>()) return "javaClass function on short fails"
val c = 'c'
if (c.javaClass != javaClass<Char>()) return "javaClass function on char fails"
val i = 1
if (i.javaClass != javaClass<Int>()) return "javaClass function on int fails"
val l = 1.toLong()
if (l.javaClass != javaClass<Long>()) return "javaClass function on long fails"
val f = 1.toFloat()
if (f.javaClass != javaClass<Float>()) return "javaClass function on float fails"
val d = 1.0
if (d.javaClass != javaClass<Double>()) return "javaClass function on double fails"
return "OK"
}
@@ -366,6 +366,10 @@ public class StdlibTest extends CodegenTestCase {
blackBoxFile("regressions/kt2318.kt");
}
public void testKt3046() {
blackBoxFile("regressions/kt3046.kt");
}
public void testKt2246() {
blackBoxFile("regressions/kt2246.kt");
}