Spec-Zone.ru › Kotlin 1.9

Руководство по совместимости для Kotlin 1.4

Поддержание актуальности языка и Комфортные обновления являются основополагающими принципами при разработке языка Kotlin. Первый принцип гласит, что конструкции, препятствующие развитию языка, должны быть удалены, а второй – что об этом удалении следует заранее сообщить, чтобы минимизировать трудности при миграции кода.

Хотя большинство изменений языка уже были объявлены в других каналах, таких как журналы обновлений или предупреждения компилятора, этот документ обобщает все эти изменения, предоставляя полную справку по миграции с Kotlin 1.3 на Kotlin 1.4.

Основные термины

В этом документе мы вводим несколько типов совместимости:

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

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

  • поведенческий: изменение считается поведенчески несовместимым, если одно и то же приложение демонстрирует различное поведение до и после применения этого изменения.

Обратите внимание, что эти определения приведены только для чистого Kotlin. Совместимость кода Kotlin с точки зрения других языков (например, Java) выходит за рамки этого документа.

Язык и стандартная библиотека

Непредвиденное поведение оператора in и ConcurrentHashMap

Проблема: KT-18053

Компонент: Язык Kotlin

Тип изменения несовместимости: исходный код

Краткое описание: Kotlin 1.4 запретит автоматический оператор contains, исходящий от разработчиков java.util.Map, написанных на Java

Цикл устаревания:

  • < 1.4: вывод предупреждения для проблемных операторов в месте вызова

  • >= 1.4: это предупреждение будет переведено в ошибку, -XXLanguage:-ProhibitConcurrentHashMapContains может быть использован для временного возврата к поведению до 1.4

Запрет доступа к защищенным членам внутри публичных встроенных членов

Проблема: KT-21178

Компонент: Язык Kotlin

Тип изменения несовместимости: исходный код

Краткое описание: Kotlin 1.4 запретит доступ к защищенным членам из публичных встроенных членов.

Цикл устаревания:

  • < 1.4: вывод предупреждения в месте вызова для проблемных случаев

  • 1.4: это предупреждение будет переведено в ошибку, -XXLanguage:-ProhibitProtectedCallFromInline может быть использован для временного возврата к поведению до 1.4

Договоры о вызовах с неявными получателями

Проблема: KT-28672

Компонент: Язык Kotlin

Тип изменения несовместимости: поведенческий

Краткое описание: в 1.4 станут доступны интеллектуальные преобразования типов на основе договоров для вызовов с неявными получателями

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-ContractsOnCallsWithImplicitReceiver может быть использован для временного возврата к поведению до 1.4

Несогласованное поведение сравнений чисел с плавающей точкой

Проблемы: KT-22723

Компонент: Язык Kotlin

Тип изменения несовместимости: поведенческий

Краткое описание: начиная с Kotlin 1.4, компилятор Kotlin будет использовать стандарт IEEE 754 для сравнения чисел с плавающей точкой

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-ProperIeee754Comparisons может быть использован для временного возврата к поведению до 1.4

Отсутствие интеллектуального преобразования типа для последнего выражения в обобщенном лямбда-выражении

Проблема: KT-15020

Компонент: Язык Kotlin

Тип изменения несовместимости: поведенческий

Краткое описание: интеллектуальные преобразования для последних выражений в лямбда-выражениях будут корректно применяться с 1.4

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-NewInference может быть использован для временного возврата к поведению до 1.4. Обратите внимание, что этот флаг также отключит несколько новых языковых функций.

Не полагайтесь на порядок аргументов лямбда-выражений для принудительного преобразования результата к Unit

Проблема: KT-36045

Компонент: Язык Kotlin

Тип изменения несовместимости: исходный код

Краткое описание: начиная с Kotlin 1.4, аргументы лямбда-выражений будут обрабатываться независимо без неявного принудительного преобразования к Unit

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-NewInference может быть использован для временного возврата к поведению до 1.4. Обратите внимание, что этот флаг также отключит несколько новых языковых функций.

Неверный общий супертип между сырым и целочисленным литеральным типом приводит к некорректной работе кода

Проблема: KT-35681

Компоненты: Язык Kotlin

Тип изменения несовместимости: исходный код

Краткое описание: начиная с Kotlin 1.4, общий супертип между сырым Comparable типом и целочисленным литеральным типом будет более специфичным

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-NewInference может быть использован для временного возврата к поведению до 1.4. Обратите внимание, что этот флаг также отключит несколько новых языковых функций.

Проблема безопасности типов, из-за того, что несколько одинаковых переменных типа инициализируются разными типами

Проблема: KT-35679

Компонент: Язык Kotlin

Тип изменения несовместимости: исходный код

Краткое описание: начиная с Kotlin 1.4, компилятор Kotlin запретит инициализацию одинаковых переменных типа разными типами

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-NewInference может быть использован для временного возврата к поведению до 1.4. Обратите внимание, что этот флаг также отключит несколько новых языковых функций.

Проблема безопасности типов из-за неправильного подтипирования для пересекающихся типов

Проблемы: KT-22474

Компонент: Язык Kotlin

Тип изменения несовместимости: исходный код

Краткое описание: в Kotlin 1.4 подтипирование для пересекающихся типов будет уточнено для более корректной работы

Цикл устаревания:

  • < 1.4: старое поведение (подробнее в проблеме)

  • >= 1.4: поведение изменилось, -XXLanguage:-NewInference может быть использован для временного возврата к поведению до 1.4. Обратите внимание, что этот флаг также отключит несколько новых языковых функций.

Отсутствие несовпадения типов с пустым выражением when внутри лямбда-выражения

Проблема: KT-17995

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, произойдет несовпадение типов для пустого выражения when , если оно используется в качестве последнего выражения в лямбда-выражении

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Тип возврата Any выведен для лямбда-выражения с ранним возвратом с целочисленной литералом в одном из возможных значений возврата

Проблема: KT-20226

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, тип целого числа, возвращаемого из лямбда-выражения, будет более конкретным в случаях, когда используется ранний возврат

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Правильное захват звёздных проекций с рекурсивными типами

Проблема: KT-33012

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, больше кандидатов станет применимыми, так как захват для рекурсивных типов будет работать более правильно

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Вычисление общего супертипа с ненадлежащим типом и гибким типом приводит к неправильным результатам

Проблема: KT-37054

Компонент: Язык Kotlin

Тип несовместимого изменения: поведенческий

Краткое описание: начиная с Kotlin 1.4, общий супертип между гибкими типами будет более конкретным, защищая от ошибок во время выполнения

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Проблема безопасности типов из-за отсутствия захваченного преобразования против аргумента типа null

Проблема: KT-35487

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, подтипизация между захваченными и nullable типами будет более корректной, защищая от ошибок во время выполнения

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Сохранение пересечения типов для ковариативных типов после неявного приведения

Проблема: KT-37280

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, неявные приведения ковариативных типов создают пересечение типов для интеллектуальных приведений, а не тип неявного приведения.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Утечка переменных типа из вывода билдера из-за использования выражения this

Проблема: KT-32126

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, использование this внутри функций-билдеров, таких как sequence {}, запрещено, если нет других надлежащих ограничений

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Неправильное разрешение перегрузки для контравариантных типов с аргументами типа null

Проблема: KT-31670

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, если две перегрузки функции, принимающей контравариантные типы аргументов, различаются только по возможности null аргумента (например, In<T> и In<T?>), тип null считается более конкретным.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Выведение типа билдера с невложенными рекурсивными ограничениями

Проблема: KT-34975

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, функции-билдера, такие как sequence {}, с типом, зависящим от рекурсивного ограничения внутри переданного лямбда-выражения, вызывают ошибку компилятора.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Принудительное закрепление переменных типов приводит к противоречивой системе ограничений

Проблема: KT-25175

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, вычисление типа в определенных случаях работает менее активно, что позволяет найти систему ограничений, которая не является противоречивой.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-NewInference можно использовать для временного возврата к поведению до версии 1.4. Обратите внимание, что этот флаг также отключит несколько новых функций языка.

Запрет модификатора tailrec на открытых функциях

Проблема: KT-18541

Компонент: Язык Kotlin

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, функции не могут иметь модификаторы open и tailrec одновременно.

Цикл устаревания:

  • < 1.4: выводится предупреждение о функциях, имеющих модификаторы open и tailrec вместе (ошибка в прогрессивном режиме).

  • >= 1.4: данное предупреждение повышается до ошибки.

Поле INSTANCE компаньон-объекта более видимое, чем сам компаньон-объект

Проблема: KT-11567

Компонент: Kotlin/JVM

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, если компаньон-объект является приватным, то его поле INSTANCE также будет приватным.

Цикл устаревания:

  • < 1.4: компилятор генерирует объект INSTANCE с устаревшим флагом

  • >= 1.4: поле компаньон-объекта INSTANCE имеет правильную видимость

Вложенный блок finally, вставленный перед return, не исключается из интервала catch внутреннего блока try без finally

Проблема: KT-31923

Компонент: Kotlin/JVM

Тип несовместимого изменения: поведенческое

Краткое описание: начиная с Kotlin 1.4, интервал catch будет правильно вычисляться для вложенных блоков try/catch

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-ProperFinally можно использовать для временного возврата к поведению до версии 1.4

Использование упакованной версии встроенного класса в позиции возвращаемого типа для ковариантных и обобщенных специализированных переопределений

Проблемы: KT-30419

Компонент: Kotlin/JVM

Тип несовместимого изменения: поведенческое

Краткое описание: начиная с Kotlin 1.4, функции, использующие ковариантные и обобщенные специализированные переопределения, будут возвращать упакованные значения встроенных классов.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено

Не объявляйте обработчики исключений в байт-коде JVM при делегировании на Kotlin-интерфейсы

Проблема: KT-35834

Компонент: Kotlin/JVM

Тип несовместимого изменения: исходный код

Краткое описание: Kotlin 1.4 не будет генерировать обработчики исключений во время делегирования на Kotlin-интерфейсы.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено, -XXLanguage:-DoNotGenerateThrowsForDelegatedKotlinMembers можно использовать для временного возврата к поведению до версии 1.4

Измененное поведение полиморфных вызовов сигнатур к методам с единственным параметром vararg для избежания обертывания аргумента в другой массив

Проблема: KT-35469

Компонент: Kotlin/JVM

Тип несовместимого изменения: исходный код

Краткое описание: Kotlin 1.4 не будет обертывать аргумент в другой массив при полиморфном вызове сигнатуры.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено

Неправильная обобщенная подпись в аннотациях при использовании KClass в качестве обобщенного параметра

Проблема: KT-35207

Компонент: Kotlin/JVM

Тип несовместимого изменения: исходный код

Краткое описание: Kotlin 1.4 исправит неправильное сопоставление типов в аннотациях при использовании KClass в качестве обобщенного параметра.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено

Запрещение использования оператора spread в вызовах с подписью-полиморфизмом

Задача: KT-35226

Компонент: Kotlin/JVM

Тип несовместимого изменения: исходный код

Краткое описание: Kotlin 1.4 запретит использование оператора spread (*) в вызовах с подписью-полиморфизмом

Цикл устаревания:

  • < 1.4: выводит предупреждение при использовании оператора spread в вызовах с подписью-полиморфизмом

  • >= 1.5: преобразует это предупреждение в ошибку, -XXLanguage:-ProhibitSpreadOnSignaturePolymorphicCall может быть использован для временного возврата к поведению версии до 1.4

Изменение порядка инициализации значений по умолчанию для оптимизированных хвостовых рекурсивных функций

Задача: KT-31540

Компонент: Kotlin/JVM

Тип несовместимого изменения: поведенческое

Краткое описание: С Kotlin 1.4 порядок инициализации для хвостовых рекурсивных функций будет таким же, как и для обычных функций.

Цикл устаревания:

  • < 1.4: выводит предупреждение на этапе объявления для проблемных функций

  • >= 1.4: поведение изменилось, -XXLanguage:-ProperComputationOrderOfTailrecDefaultParameters может быть использован для временного возврата к поведению версии до 1.4

Не генерировать атрибут ConstantValue для non-const vals

Задача: KT-16615

Компонент: Kotlin/JVM

Тип несовместимого изменения: поведенческое

Краткое описание: С Kotlin 1.4 компилятор не будет генерировать атрибут ConstantValue для не-const val.

Цикл устаревания:

  • < 1.4: выводит предупреждение через проверку в IntelliJ IDEA

  • >= 1.4: поведение изменилось, -XXLanguage:-NoConstantValueAttributeForNonConstVals может быть использован для временного возврата к поведению версии до 1.4

Сгенерированные перегрузки для @JvmOverloads на открытых методах должны быть final

Задача: KT-33240

Компоненты: Kotlin/JVM

Тип несовместимого изменения: исходный код

Краткое описание: перегрузки для функций с @JvmOverloads будут генерироваться как final

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в задаче)

  • >= 1.4: поведение изменилось, -XXLanguage:-GenerateJvmOverloadsAsFinal может быть использован для временного возврата к поведению версии до 1.4

Лямбды, возвращающие kotlin.Result, теперь возвращают упакованное значение вместо распакованного

Задача: KT-39198

Компонент: Kotlin/JVM

Тип несовместимого изменения: поведенческое

Краткое описание: с Kotlin 1.4 лямбды, возвращающие значения типа kotlin.Result, теперь возвращают упакованное значение вместо распакованного.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в задаче)

  • >= 1.4: поведение изменено

Единый вид исключений при проверке на null

Задача: KT-22275

Компонент: Kotlin/JVM

Тип несовместимого изменения: поведение

Краткое описание: Начиная с Kotlin 1.4, все проверки на null во время выполнения будут выбрасывать java.lang.NullPointerException.

Цикл устаревания:

  • < 1.4: проверки на null во время выполнения выбрасывают разные исключения, такие как KotlinNullPointerException, IllegalStateException, IllegalArgumentException, и TypeCastException

  • >= 1.4: все проверки на null во время выполнения выбрасывают java.lang.NullPointerException. -Xno-unified-null-checks может быть использован для временного возврата к поведению версии до 1.4

Сравнение значений с плавающей точкой в операциях массива/списка contains, indexOf, lastIndexOf: IEEE 754 или общий порядок

Задача: KT-28753

Компонент: kotlin-stdlib (JVM)

Тип несовместимого изменения: поведенческое

Краткое описание: реализация List возвращаемая из Double/FloatArray.asList() будет реализовывать contains, indexOf, и lastIndexOf, чтобы они использовали полное порядковое равенство.

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в задаче)

  • >= 1.4: поведение изменено

Постепенное изменение типа возвращаемого значения функций min и max для коллекций на non-nullable

Задача: KT-38854

Компонент: kotlin-stdlib (JVM)

Тип несовместимого изменения: исходный код

Краткое описание: тип возвращаемого значения функций min и max для коллекций будет изменен на non-nullable в версии 1.6.

Цикл устаревания:

  • 1.4: вводятся функции ...OrNull в качестве синонимов и устаревание затронутого API (см. подробности в задаче)

  • 1.5.x: повышение уровня устаревания затронутого API до ошибки

  • >=1.6: повторное введение затронутого API, но с типом возврата non-nullable

Устаревание appendln в пользу appendLine

Задача: KT-38754

Компонент: kotlin-stdlib (JVM)

Тип несовместимого изменения: исходный код

Краткое описание: StringBuilder.appendln() будет устаревшим в пользу StringBuilder.appendLine()

Цикл устаревания:

  • 1.4: введение функции appendLine в качестве замены для appendln и устаревание appendln

  • >=1.5: повышение уровня устаревания до ошибки

Устаревание преобразований типов с плавающей точкой в Short и Byte

Вопрос: KT-30360

Компонент: kotlin-stdlib (JVM)

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, преобразования типов с плавающей точкой в Short и Byte будут устаревшими

Цикл устаревания:

  • 1.4: устаревание Double.toShort()/toByte() и Float.toShort()/toByte() и предложение замены

  • >=1.5: повышение уровня устаревания до ошибки

Быстрое завершение в Regex.findAll при недопустимом startIndex

Вопрос: KT-28356

Компонент: kotlin-stdlib

Тип несовместимого изменения: поведенческое

Краткое описание: начиная с Kotlin 1.4, findAll будет улучшено для проверки того, что startIndex находится в диапазоне допустимых индексов позиции входной последовательности символов в момент входа findAll, и выбросить IndexOutOfBoundsException если этого не так

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено

Удаление устаревшего kotlin.coroutines.experimental

Вопрос: KT-36083

Компонент: kotlin-stdlib

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, устаревший kotlin.coroutines.experimental API удален из stdlib

Цикл устаревания:

  • < 1.4: kotlin.coroutines.experimental устаревшее с уровнем ERROR

  • >= 1.4: kotlin.coroutines.experimental удалено из stdlib. На JVM предоставляется отдельный артефакт совместимости (см. подробности в проблеме).

Удаление устаревшего оператора mod

Вопрос: KT-26654

Компонент: kotlin-stdlib

Тип несовместимого изменения: исходный код

Краткое описание: начиная с Kotlin 1.4, оператор mod для числовых типов удален из stdlib

Цикл устаревания:

  • < 1.4: mod устаревшее с уровнем ERROR

  • >= 1.4: mod удалено из stdlib

Скрыть член Throwable.addSuppressed и использовать расширение вместо

Вопрос: KT-38777

Компонент: kotlin-stdlib

Тип несовместимого изменения: поведенческое

Краткое описание: расширение Throwable.addSuppressed() предпочтительнее члена Throwable.addSuppressed()

Цикл устаревания:

  • < 1.4: старое поведение (см. подробности в проблеме)

  • >= 1.4: поведение изменено

capitalize должен преобразовывать диграфы в заглавные буквы

Вопрос: KT-38817

Компонент: kotlin-stdlib

Тип несовместимого изменения: поведенческое

Краткое описание: функция String.capitalize() теперь преобразует диграфы из латинского алфавита Гая в заглавные буквы (Dž вместо DŽ)

Цикл устаревания:

  • < 1.4: диграфы приводятся к верхнему регистру (DŽ)

  • >= 1.4: диграфы приводятся к заглавным буквам (Dž)

Инструменты

Аргументы компилятора с разделителями символов должны передаваться в двойных кавычках в Windows

Вопрос: KT-41309

Компонент: CLI

Тип несовместимого изменения: поведенческое

Краткое описание: в Windows аргументы kotlinc.bat, содержащие символы разделителей (пробелы, =, ;, ,) теперь требуют двойных кавычек (")

Цикл устаревания:

  • < 1.4: все аргументы компилятора передаются без кавычек

  • >= 1.4: аргументы компилятора, содержащие символы разделителей (пробелы, =, ;, ,) требуют двойных кавычек (")

KAPT: Изменены имена синтетических методов $annotations() для свойств

Вопрос: KT-36926

Компонент: KAPT

Тип несовместимого изменения: поведенческое

Краткое описание: имена синтетических $annotations() методов, сгенерированных KAPT для свойств, изменились в 1.4

Цикл устаревания:

  • < 1.4: имена синтетических $annotations() методов для свойств следуют шаблону <propertyName>@annotations()

  • >= 1.4: имена синтетических $annotations() методов для свойств включают префикс get: get<PropertyName>@annotations()

Последнее изменение: 14 декабря 2021 г.
Руководство по совместимости для Kotlin 1.5 Руководство по совместимости для Kotlin 1.3

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/compatibility-guide-14.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API