Loosen the signature of declaringJavaClass to accept Enum<E> instead of E

KT-54005
This commit is contained in:
Ilya Gorbunov
2022-09-12 19:46:16 +02:00
committed by Space
parent 41299287cf
commit b53a6beb61
2 changed files with 9 additions and 1 deletions
@@ -114,5 +114,5 @@ public val <T : Annotation> T.annotationClass: KClass<out T>
*/
@SinceKotlin("1.7")
@InlineOnly
public inline val <E : Enum<E>> E.declaringJavaClass: Class<E>
public inline val <E : Enum<E>> Enum<E>.declaringJavaClass: Class<E>
get() = (this as java.lang.Enum<E>).declaringClass
@@ -43,4 +43,12 @@ class EnumDeclaringJavaClassTest {
set.addAll(TestEnum.E.declaringJavaClass.enumConstants.toList())
assertEquals(EnumSet.of(TestEnum.E), set)
}
@Test
fun worksOnGenericEnum() {
fun <T : Enum<T>> check(e: Enum<T>) {
assertEquals<Class<*>>(e.declaringJavaClass, TestEnum::class.java)
}
check(TestEnum.E)
}
}