Как мне наследовать документацию KDoc?

В Javadoc Java есть способ унаследовать документацию метода в подклассе, используя {@inheritDoc} тег.

Есть ли способ сделать то же самое в Kotlin KDoc?

В принципе, я хотел бы сделать следующее:

abstract class Base {
    /**
     * Some KDoc documentation here.
     */
    abstract fun foo()
}

class Derived: Base() {
    /**
     * Here is all the documentation from Base#foo's KDoc inherited.
     *
     * And here goes something more in addition.
     */
    override fun foo() { /* ... */ }
}

person hotkey    schedule 03.03.2016    source источник
comment
{@inheritDoc} не работает? Вы пробовали?   -  person CaseyB    schedule 03.03.2016
comment
@CaseyB, да, я это сделал, и ни IntelliJ, ни dokka этого не понимают, они просто показывают это как текст.   -  person hotkey    schedule 03.03.2016
comment
Я не могу найти ничего, документирующего мой вывод, но из того, что я могу сказать, Kotlin Doc наследует документацию при переопределении функции, если при переопределении не указана документация. Теперь мне интересно, как расширить/включить базовую документацию...   -  person mfulton26    schedule 03.03.2016
comment
@ mfulton26 mfulton26, хорошо, теперь я вижу, что dokka по умолчанию вставляет документы родителя. Будет здорово, если вы найдете способ их настроить, но мне достаточно было бы просто унаследовать их.   -  person hotkey    schedule 03.03.2016
comment
@hotkey Я просмотрел github.com/Kotlin/dokka, но не нашел ничего полезного. Вы можете создать проблему GitHub или проблему Kotlin YouTrack, чтобы узнать об этом.   -  person mfulton26    schedule 03.03.2016


Ответы (1)


Dokka всегда копирует документацию с базового элемента на унаследованный, если унаследованный элемент не имеет собственной документации. Невозможно объединить документацию базового элемента с дополнительным текстом, предоставленным в унаследованном элементе.

(Dokka не поддерживает тег @inheritdoc Javadoc, потому что это неизбежно приводит к увеличению количества комментариев, состоящих только из /** @inheritdoc */, что я считаю супербесполезным и избыточным.)

person yole    schedule 07.03.2016
comment
Тем не менее, по какой-то причине, когда я нажимаю Ctrl + Q в унаследованной функции без документации, она ничего не показывает, однако в базовой функции она указана, и когда я нажимаю Ctrl + B на нее и нажимаю Ctrl + Q на базовой функции, отображается документация. Возможно, это какой-то баг ide-плагина. - person dimsuz; 05.06.2016
comment
@yole Когда я нажимаю ярлык быстрой документации для переопределенного метода из класса/интерфейса Java, я не вижу документации, в то время как базовый класс/интерфейс имеет некоторую документацию. Это действительно неудобно. Есть открытый вопрос по этому поводу? - person Louis CAD; 16.02.2017
comment
@LouisCAD Похоже, есть. См. youtrack.jetbrains.com/issue/KT-25035. - person MariusVolkhart; 24.06.2020