From 4af0ed822fcf3d5811d318b47996e9e501c62502 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 21 Jul 2015 19:46:36 +0300 Subject: [PATCH] Minor, improve comment about ReflectProperties usefulness --- .../src/kotlin/reflect/jvm/internal/KClassImpl.kt | 3 --- .../src/kotlin/reflect/jvm/internal/ReflectProperties.java | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt index 903648d59cf..a7f8f1cc912 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt @@ -25,9 +25,6 @@ import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleD import kotlin.reflect.* class KClassImpl(override val jClass: Class) : KCallableContainerImpl(), KClass { - // Don't use kotlin.properties.Delegates here because it's a Kotlin class which will invoke KClassImpl() in , - // resulting in infinite recursion - val descriptor by ReflectProperties.lazySoft { val classId = classId diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/ReflectProperties.java b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/ReflectProperties.java index 1845940d8f2..926a87d2874 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/ReflectProperties.java +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/ReflectProperties.java @@ -23,6 +23,10 @@ import org.jetbrains.annotations.Nullable; import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; +/** + * The fact that this is a Java class is used in reflection implementation classes: otherwise if it were a Kotlin class, KClassImpl() + * instance would have been invoked in its static initializer (to create and cache $kotlinClass field), resulting in infinite recursion. + */ /* package */ class ReflectProperties { public static abstract class Val { private static final Object NULL_VALUE = new Object() {};