From 2946c1d6a84f1e6338d4de5dbcf0d4008a763fa9 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Sat, 4 Apr 2015 00:12:59 +0300 Subject: [PATCH] KT-7271 Accessing an extension property of Char.Companion leads to ClassNotFoundException in runtime #KT-7271 Fixed --- compiler/testData/codegen/box/objectIntrinsics/objects.kt | 2 ++ .../reflection/classLiterals/builtinClassLiterals.kt | 1 + .../diagnostics/tests/classObjects/builtInClassObjects.kt | 2 ++ .../src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt | 1 + js/js.libraries/src/internal/primitiveCompanionObjects.kt | 1 + libraries/stdlib/test/DefaultIntrinsicObjectsJVMTest.kt | 6 ++++++ 6 files changed, 13 insertions(+) diff --git a/compiler/testData/codegen/box/objectIntrinsics/objects.kt b/compiler/testData/codegen/box/objectIntrinsics/objects.kt index 7941e8d4860..043ece4a254 100644 --- a/compiler/testData/codegen/box/objectIntrinsics/objects.kt +++ b/compiler/testData/codegen/box/objectIntrinsics/objects.kt @@ -25,6 +25,7 @@ fun testCompanionObjectAccess() { val l = Long val sh = Short val b = Byte + val ch = Char val st = String val en = Enum } @@ -36,6 +37,7 @@ fun testInCall() { test(Long) test(Short) test(Byte) + test(Char) test(String) test(Enum) } diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/classLiterals/builtinClassLiterals.kt b/compiler/testData/codegen/boxWithStdlib/reflection/classLiterals/builtinClassLiterals.kt index 20be0b1183d..5117554f309 100644 --- a/compiler/testData/codegen/boxWithStdlib/reflection/classLiterals/builtinClassLiterals.kt +++ b/compiler/testData/codegen/boxWithStdlib/reflection/classLiterals/builtinClassLiterals.kt @@ -10,6 +10,7 @@ fun box(): String { assertEquals("Companion", Int.Companion::class.simpleName) assertEquals("Companion", Double.Companion::class.simpleName) + assertEquals("Companion", Char.Companion::class.simpleName) assertEquals("IntRange", IntRange::class.simpleName) diff --git a/compiler/testData/diagnostics/tests/classObjects/builtInClassObjects.kt b/compiler/testData/diagnostics/tests/classObjects/builtInClassObjects.kt index 0b69392da4d..250ca38501f 100644 --- a/compiler/testData/diagnostics/tests/classObjects/builtInClassObjects.kt +++ b/compiler/testData/diagnostics/tests/classObjects/builtInClassObjects.kt @@ -9,6 +9,7 @@ fun box(): String { val l = Long val sh = Short val b = Byte + val ch = Char val st = String test(Int) @@ -18,6 +19,7 @@ fun box(): String { test(Short) test(Byte) test(String) + test(Char) // Common Double Double.POSITIVE_INFINITY diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt b/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt index f037f796695..9ec6106a07c 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt +++ b/core/runtime.jvm/src/kotlin/jvm/internal/PrimitiveCompanionObjects.kt @@ -32,6 +32,7 @@ private object IntCompanionObject {} private object LongCompanionObject {} private object ShortCompanionObject {} private object ByteCompanionObject {} +private object CharCompanionObject {} private object StringCompanionObject {} private object EnumCompanionObject {} \ No newline at end of file diff --git a/js/js.libraries/src/internal/primitiveCompanionObjects.kt b/js/js.libraries/src/internal/primitiveCompanionObjects.kt index 0b8de080076..50ca6b830c7 100644 --- a/js/js.libraries/src/internal/primitiveCompanionObjects.kt +++ b/js/js.libraries/src/internal/primitiveCompanionObjects.kt @@ -32,6 +32,7 @@ private object IntCompanionObject {} private object LongCompanionObject {} private object ShortCompanionObject {} private object ByteCompanionObject {} +private object CharCompanionObject {} private object StringCompanionObject {} private object EnumCompanionObject {} diff --git a/libraries/stdlib/test/DefaultIntrinsicObjectsJVMTest.kt b/libraries/stdlib/test/DefaultIntrinsicObjectsJVMTest.kt index 110e479146d..92220dd2788 100644 --- a/libraries/stdlib/test/DefaultIntrinsicObjectsJVMTest.kt +++ b/libraries/stdlib/test/DefaultIntrinsicObjectsJVMTest.kt @@ -73,6 +73,12 @@ class CompanionObjectsExtensionsTest { assertEquals(java.lang.Byte.MIN_VALUE, Byte.MIN_VALUE) } + test fun charTest() { + val ch = Char + + assertEquals(ch, Char) + } + test fun stringTest() { val s = String