From b53a6beb617a1e1158b5053dffd090cd2d4caa8d Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 12 Sep 2022 19:46:16 +0200 Subject: [PATCH] Loosen the signature of declaringJavaClass to accept Enum instead of E KT-54005 --- .../stdlib/jvm/runtime/kotlin/jvm/JvmClassMapping.kt | 2 +- .../stdlib/jvm/test/enums/EnumDeclaringJavaClassTest.kt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libraries/stdlib/jvm/runtime/kotlin/jvm/JvmClassMapping.kt b/libraries/stdlib/jvm/runtime/kotlin/jvm/JvmClassMapping.kt index e5a9da0c3ed..6f0b36f85fc 100644 --- a/libraries/stdlib/jvm/runtime/kotlin/jvm/JvmClassMapping.kt +++ b/libraries/stdlib/jvm/runtime/kotlin/jvm/JvmClassMapping.kt @@ -114,5 +114,5 @@ public val T.annotationClass: KClass */ @SinceKotlin("1.7") @InlineOnly -public inline val > E.declaringJavaClass: Class +public inline val > Enum.declaringJavaClass: Class get() = (this as java.lang.Enum).declaringClass diff --git a/libraries/stdlib/jvm/test/enums/EnumDeclaringJavaClassTest.kt b/libraries/stdlib/jvm/test/enums/EnumDeclaringJavaClassTest.kt index 05935988f43..4e740ec09e1 100644 --- a/libraries/stdlib/jvm/test/enums/EnumDeclaringJavaClassTest.kt +++ b/libraries/stdlib/jvm/test/enums/EnumDeclaringJavaClassTest.kt @@ -43,4 +43,12 @@ class EnumDeclaringJavaClassTest { set.addAll(TestEnum.E.declaringJavaClass.enumConstants.toList()) assertEquals(EnumSet.of(TestEnum.E), set) } + + @Test + fun worksOnGenericEnum() { + fun > check(e: Enum) { + assertEquals>(e.declaringJavaClass, TestEnum::class.java) + } + check(TestEnum.E) + } }