Сопротивление типа приемника

Следующий код:

package com.gitlab.morality.navigable.support import android.support.v4.app.Fragment import android.support.v4.app.FragmentActivity import kotlin.reflect.primaryConstructor interface Navigable val <FragmentType> FragmentType.parameters : MutableMap<String, in Any> where FragmentType : Fragment, FragmentType : Navigable by lazy { mutableMapOf<String, Any>() } inline fun <reified FragmentType> FragmentType.navigate(containerViewId : Int, vararg parameters : Pair<String, Any>) where FragmentType : Fragment, FragmentType : Navigable { val fragment = FragmentType::class.primaryConstructor!!.call() parameters.forEach { fragment.parameters[it.first] = it.second } activity.supportFragmentManager.beginTransaction() .replace(containerViewId, fragment) .commit() } 

Вызывает следующие ошибки компилятора с Kotlin 1.0.5:

Ошибка: (34, 9) Встроенная функция Public-API не может получить доступ к общедоступному API-интерфейсу open open (): [ОШИБКА:], определенная в корневом пакете '

Ошибка: (34, 18) Неразрешенная ссылка. Ни один из следующих кандидатов не применим из-за несоответствия типа приемника: public val FragmentType # 1 (параметр типа com.gitlab.morality.navigable.support.navigate) .parameters: MutableMap, где FragmentType: Navigable определен в com.gitlab.morality. navigable.support

Я не понимаю, что я здесь делаю неправильно. Что означают эти сообщения об ошибках?

Я могу обойти эту проблему, вместо того чтобы сделать свойство parameters членом Navigable , но для реализации свойства требуется разработчик, который отвлекает от привлечения этой техники, которая заключается в том, что класс реализации не должен ничего делать специально предназначенный для маркировки как Navigable для использования функциональности Navigable .

В настоящее время свойства расширения с несколькими типами приемников не поддерживаются. Вы можете проголосовать за KT-10468, чтобы получить уведомление, когда проблема исправлена.

Intereting Posts
Gradle не может найти тесты Kotlin KDoc: Документация? Почему не будет код, который инициализирует свойство интерфейса переменной в компиляции блока init? Как сравнить время простоя MotionEvent с часами, какова его временная база? Как получить доступ к членам класса с таким же именем в функции расширения в Kotlin android Kotlin stdlib operatios против циклов Получить ответ JSON от запроса POST rxjava / retrofit Реализация интерфейса Java в Котлине Нулевая безопасность в старых библиотеках Java, используемых в проектах Kotlin Почему я не могу поставить {анонимного класса на новую линию в Котлин? Kotlin: isAssignableFrom и проверки типа отражения Есть ли разница между «объектом-получателем» и «приемником расширения», Аннотации времени выполнения, аннотированные по поданной в классе kotlin, генерируются неправильно Kotlin уменьшает функцию для 2d-списка, не работающего Как использовать Cucumber let Spring для определения уровня экспрессии?