В «Котлине» еще работает «внутренний» модификатор видимости?

Предполагая, что модуль в Котлине означает проект (хотя было бы хорошо видеть, что означает точное определение модуля Котлина .. неясно из документов) …

Модификаторы видимости Kotlin еще работают. У меня есть два проекта, основной проект и тестовый проект с разными, не перекрывающимися, пакетами. Проект тестирования зависит от основного проекта (в Eclipse). Кажется, не имеет значения, отмечены ли public или нет интерфейсы или классы в основном проекте. В тестовом проекте основные интерфейсы / классы проекта являются видимыми и доступными независимо от того, что. Единственное различие проявляется, если вы помечаете основные проекты, private а затем есть проблемы с видимостью. Но с public или без нее это, похоже, не имеет никакого значения.

Из того, что я могу сделать из документов, опускание модификатора видимости на интерфейсе или классе влияет на видимость по умолчанию, то есть на internal .

В текущем Kotlin internal модификатор видимости действительно применяется.

В заявлении Kotlin 1.0 Beta RC говорится:

Проверка видимости была ограничена, так что, например, публичная декларация не может выставлять локальный, частный или внутренний тип. Доступ к внутренним объявлениям проверяется как в компиляторе, так и в среде IDE;

И соответствующие примечания к выпуску имеют два момента, поддерживающих это:

  • внутренняя видимость, проверенная в компиляторе
  • Имена внутренних функций и свойств искажены (java interop)

Последний момент имеет решающее значение для предотвращения того, чтобы Java не просматривала и не взаимодействовала с внутренними идентификаторами.

В сообщении о выпуске Kotlin M14 в нем также упоминается:

  • internal проверяется в компиляторе (не только IDE)
  • защищенные и внутренние члены запрещены в интерфейсах

И еще вовремя сообщение о выпуске Kotlin M13 также показывает:

  • Теперь доступ к внутренней проверяется вне модуля (подробности ниже);
  • видимость по умолчанию (без модификатора) изменяется от внутреннего к публичному,
  • мы, наконец, включили проверки, которые отклоняют использование внутренних деклараций вне модуля.

Так что это явно функционально и работает.

Стоит отметить, что он работает только для модулей Kotlin, но доступ к «внутренней» декларации из модулей Java по-прежнему возможен, хотя он показывает отчет об осмотре (предупреждение).

https://youtrack.jetbrains.com/issue/KT-19053