Kotlin werid компилирует ошибку, связанную с дженериками и автоматическим типом

Я думаю, что этот фрагмент кода должен скомпилировать:

package bug import java.lang.reflect.* data class Descriptor(val clazz: Class<*>, val modifiers: Int, val info: List<String>) { constructor(clazz: Class<*>, modifiers: Int, vararg info: List<String>) : this(clazz, modifiers, mutableListOf<String>().apply { info.forEach { this@apply.addAll(it) } }) } private val AnnotatedElement.info: List<String> get() = getAnnotation(Info::class.java)?.values?.toList() ?: listOf<String>() annotation class Info(val values: Array<String>) /** * A simple abstraction of com.google.common.reflect.Invokable of Guava 20.0. * https://github.com/google/guava/blob/v20.0/guava/src/com/google/common/reflect/Invokable.java */ abstract class Invokable<T, R> : AccessibleObject(), Member, GenericDeclaration val <T : AccessibleObject> T.descriptor: Descriptor get() = when (this) { is Invokable<*, *> -> Descriptor(declaringClass, modifiers, info, declaringClass.info) else -> throw AssertionError() } 

Вот удобная ссылка на Invokable от Google Guava . Invokable краткое Invokable определение.

Вышеприведенный код должен компилировать все, но компилятор выводит 3 странных сообщения, вот вывод журнала (после правильной нормализации):

e: /path/to/source.kt: (34, 44): Ошибка ввода типа: val Invokable.declaringClass: Class! не может применяться к получателю: аргументы T # 2 (тип параметра дескриптора): ()

e: /path/to/source.kt: (35, 44): Ошибка ввода типа: val Invokable.modifiers: Int не может быть применен к получателю: аргументы T # 2 (тип дескриптора): ()

e: /path/to/source.kt: (37, 44): Ошибка ввода типа: val Invokable.declaringClass: Class! не может применяться к получателю: аргументы T # 2 (тип параметра дескриптора): ()

Решение прост: назначьте это переменной и используйте эту локальную переменную. Нет ручного типа, отличного от другого или другого материала, и он будет скомпилирован. Но мне интересно, если это ошибка компилятора kotlin или мне не хватает информации о генеаторах kotlin

EDIT: Рабочий код:

 package solution import java.lang.reflect.* data class Descriptor(val clazz: Class<*>, val modifiers: Int, val info: List<String>) { constructor(clazz: Class<*>, modifiers: Int, vararg info: List<String>) : this(clazz, modifiers, mutableListOf<String>().apply { info.forEach { this@apply.addAll(it) } }) } private val AnnotatedElement.info: List<String> get() = getAnnotation(Info::class.java)?.values?.toList() ?: listOf<String>() annotation class Info(val values: Array<String>) /** * A simple abstraction of com.google.common.reflect.Invokable of Guava 20.0. * https://github.com/google/guava/blob/v20.0/guava/src/com/google/common/reflect/Invokable.java */ abstract class Invokable<T, R> : AccessibleObject(), Member, GenericDeclaration val <T : AccessibleObject> T.descriptor: Descriptor get() = when (this) { is Invokable<*, *> -> { val o = this // <---------------------------------CHANGES BEGIN FROM THIS LINE Descriptor(o.declaringClass, o.modifiers, info, o.declaringClass.info) } else -> throw AssertionError() } 

Это было отправлено на JetBrains, но они еще не ответили, поэтому я буду держать это в открытом доступе до тех пор, пока они не подтвердятся, или кто-то придет, ругая мою глупость.