`KProperty.returnType` выдает" `IllegalStateException` Неполная иерархия для класса" только в `release runtime` - PullRequest
0 голосов
/ 06 мая 2020

Это проект android

У меня есть делегат вроде этого

class Myclass : ReadOnlyProperty<Any, T> {
    override fun getValue(thisRef: Any, property: KProperty<*>): T = when(property.returnType){
        asdasdasd...
    } as T
}

Он отлично работает при отладке, но cra sh при выпуске ..

Fatal Exception: java.lang.IllegalStateException
Incomplete hierarchy for class MyClass

kotlin.reflect.jvm.internal.impl.descriptors.runtime.components.RuntimeErrorReporter.reportIncompleteHierarchy (RuntimeErrorReporter.java:26)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedClassDescriptor$DeserializedClassTypeConstructor.computeSupertypes (DeserializedClassDescriptor.java:188)
kotlin.reflect.jvm.internal.impl.types.AbstractTypeConstructor$supertypes$1.invoke (AbstractTypeConstructor.java:80)
kotlin.reflect.jvm.internal.impl.types.AbstractTypeConstructor$supertypes$1.invoke (AbstractTypeConstructor.java:26)
kotlin.reflect.jvm.internal.impl.storage.LockBasedStorageManager$LockBasedLazyValue.invoke (LockBasedStorageManager.java:355)
kotlin.reflect.jvm.internal.impl.storage.LockBasedStorageManager$LockBasedLazyValueWithPostCompute.invoke (LockBasedStorageManager.java:428)
kotlin.reflect.jvm.internal.impl.storage.LockBasedStorageManager$LockBasedNotNullLazyValueWithPostCompute.invoke (LockBasedStorageManager.java:459)
kotlin.reflect.jvm.internal.impl.types.AbstractTypeConstructor.getSupertypes (AbstractTypeConstructor.java:27)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedClassDescriptor$DeserializedClassMemberScope.getNonDeclaredVariableNames (DeserializedClassDescriptor.java:296)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedMemberScope$variableNamesLazy$2.invoke (DeserializedMemberScope.java:77)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedMemberScope$variableNamesLazy$2.invoke (DeserializedMemberScope.java:40)
kotlin.reflect.jvm.internal.impl.storage.LockBasedStorageManager$LockBasedLazyValue.invoke (LockBasedStorageManager.java:355)
kotlin.reflect.jvm.internal.impl.storage.LockBasedStorageManager$LockBasedNotNullLazyValue.invoke (LockBasedStorageManager.java:474)
kotlin.reflect.jvm.internal.impl.storage.StorageKt.getValue (StorageKt.java:42)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedMemberScope.f (DeserializedMemberScope.java:7)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedMemberScope.getVariableNames (DeserializedMemberScope.java:85)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedMemberScope.getContributedVariables (DeserializedMemberScope.java:164)
kotlin.reflect.jvm.internal.impl.serialization.deserialization.descriptors.DeserializedClassDescriptor$DeserializedClassMemberScope.getContributedVariables (DeserializedClassDescriptor.java:236)
kotlin.reflect.jvm.internal.KClassImpl.getProperties (KClassImpl.java:204)
kotlin.reflect.jvm.internal.KDeclarationContainerImpl.findPropertyDescriptor (KDeclarationContainerImpl.java:109)
kotlin.reflect.jvm.internal.KPropertyImpl$_descriptor$1.invoke (KPropertyImpl.java:102)
kotlin.reflect.jvm.internal.KPropertyImpl$_descriptor$1.invoke (KPropertyImpl.java:27)
kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke (ReflectProperties.java:92)
kotlin.reflect.jvm.internal.KPropertyImpl.getDescriptor (KPropertyImpl.java:105)
kotlin.reflect.jvm.internal.KPropertyImpl.getDescriptor (KPropertyImpl.java:27)
kotlin.reflect.jvm.internal.KCallableImpl$_returnType$1.invoke (KCallableImpl.java:74)
kotlin.reflect.jvm.internal.KCallableImpl$_returnType$1.invoke (KCallableImpl.java:21)
kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke (ReflectProperties.java:92)
kotlin.reflect.jvm.internal.KCallableImpl.getReturnType (KCallableImpl.java:80)

Я думаю, что что-то случилось в proguard или R8, но не знаю почему.

Я уже добавил это https://github.com/JetBrains/kotlin/pull/2893/files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...