Fix javaClass property for long and double
#KT-3046 Fixed
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user