diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/JavaClassProperty.java b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/JavaClassProperty.java index a8107912a5a..f5b302310ba 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/JavaClassProperty.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/intrinsics/JavaClassProperty.java @@ -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)); diff --git a/compiler/testData/codegen/regressions/kt3046.kt b/compiler/testData/codegen/regressions/kt3046.kt new file mode 100644 index 00000000000..45b3d9112ec --- /dev/null +++ b/compiler/testData/codegen/regressions/kt3046.kt @@ -0,0 +1,20 @@ +fun box(): String { + val bool = true + if (bool.javaClass != javaClass()) return "javaClass function on boolean fails" + val b = 1.toByte() + if (b.javaClass != javaClass()) return "javaClass function on byte fails" + val s = 1.toShort() + if (s.javaClass != javaClass()) return "javaClass function on short fails" + val c = 'c' + if (c.javaClass != javaClass()) return "javaClass function on char fails" + val i = 1 + if (i.javaClass != javaClass()) return "javaClass function on int fails" + val l = 1.toLong() + if (l.javaClass != javaClass()) return "javaClass function on long fails" + val f = 1.toFloat() + if (f.javaClass != javaClass()) return "javaClass function on float fails" + val d = 1.0 + if (d.javaClass != javaClass()) return "javaClass function on double fails" + + return "OK" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java b/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java index 76ee8378aea..1afa31e2f2b 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java @@ -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"); }