Skip to content

Kotlin 1.4.x 互換性ガイド

言語をモダンに保つ」と「快適なアップデート」は、Kotlin 言語設計における基本原則です。前者は言語の進化を妨げる構文は削除すべきであると述べており、後者はその削除を事前によく伝え、コードの移行を可能な限りスムーズにすべきであると述べています。

言語の変更の多くは、アップデートの変更ログやコンパイラの警告など他のチャネルですでに発表されていますが、このドキュメントではそれらをすべてまとめ、Kotlin 1.3 から Kotlin 1.4 への移行のための完全なリファレンスを提供します。

基本用語

このドキュメントでは、いくつかの種類の互換性を紹介します:

  • ソース: ソース互換性のない変更は、以前は正常にコンパイルできていたコード(エラーや警告なし)がコンパイルできなくなる変更です。
  • バイナリ: 2 つのバイナリアーティファクトを入れ替えても、ロードエラーやリンケージエラーが発生しない場合、それらはバイナリ互換であると言います。
  • 振る舞い: 同じプログラムを適用したときに、変更前後で異なる動作を示す場合、その変更は振る舞いにおいて互換性がないと言います。

これらの定義は純粋な Kotlin に対してのみ与えられていることに注意してください。他の言語(Java など)の観点からの Kotlin コードの互換性は、このドキュメントの範囲外です。

言語および標準ライブラリ (stdlib)

in 中置演算子と ConcurrentHashMap における予期しない動作

課題: KT-18053

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 では、Java で記述された java.util.Map の実装クラスに由来する自動演算子 contains を禁止します。

非推奨サイクル:

  • < 1.4: 呼び出し箇所で問題のある演算子に対して警告を導入
  • = 1.4: この警告をエラーに格上げ。 -XXLanguage:-ProhibitConcurrentHashMapContains を使用して、一時的に 1.4 以前の動作に戻すことが可能

public インラインメンバー内での protected メンバーへのアクセスの禁止

課題: KT-21178

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 では、public なインラインメンバー内から protected メンバーへのアクセスを禁止します。

非推奨サイクル:

  • < 1.4: 問題のあるケースについて呼び出し箇所で警告を導入
  • 1.4: この警告をエラーに格上げ。 -XXLanguage:-ProhibitProtectedCallFromInline を使用して、一時的に 1.4 以前の動作に戻すことが可能

暗黙のレシーバーを伴う呼び出しに対するコントラクト (Contracts)

課題: KT-28672

コンポーネント: 言語コア

互換性のない変更の種類: 振る舞い

概要: 1.4 では、暗黙のレシーバーを伴う呼び出しにおいて、コントラクトによるスマートキャストが利用可能になります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-ContractsOnCallsWithImplicitReceiver を使用して、一時的に 1.4 以前の動作に戻すことが可能

浮動小数点数比較の不一致な動作

課題: KT-22723

コンポーネント: 言語コア

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、Kotlin コンパイラは浮動小数点数の比較に IEEE 754 標準を使用します。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-ProperIeee754Comparisons を使用して、一時的に 1.4 以前の動作に戻すことが可能

ジェネリックなラムダの最後の式でスマートキャストが効かない

課題: KT-15020

コンポーネント: 言語コア

互換性のない変更の種類: 振る舞い

概要: 1.4 以降、ラムダの最後の式に対するスマートキャストが正しく適用されるようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

結果を Unit に強制するためのラムダ引数の順序への依存の解消

課題: KT-36045

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、ラムダ引数は Unit への暗黙の強制なしに独立して解決されるようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

raw 型と整数リテラル型の間の誤った共通スーパータイプによる不健全なコード

課題: KT-35681

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、raw な Comparable 型と整数リテラル型の間の共通スーパータイプがより具体的になります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

複数の等しい型変数が異なる型でインスタンス化されることによる型安全性の問題

課題: KT-35679

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、Kotlin コンパイラは等しい型変数を異なる型でインスタンス化することを禁止します。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

交差型 (intersection types) の誤ったサブタイピングによる型安全性の問題

課題: KT-22474

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 では、交差型のサブタイピングがより正確に動作するように洗練されます。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

ラムダ内の空の when 式で型不一致が発生しない

課題: KT-17995

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、ラムダの最後の式として使用される空の when 式に対して型不一致が発生するようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

早期リターンがあり、戻り値の候補に整数リテラルが含まれるラムダで戻り型が Any と推論される

課題: KT-20226

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、早期リターンがある場合にラムダから返される整数型がより具体的になります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

再帰的な型を持つスター投影の適切なキャプチャ

課題: KT-33012

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、再帰的な型のキャプチャがより正確に機能するため、より多くの候補が適用可能になります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

非適切な型 (non-proper type) と柔軟な型 (flexible type) の共通スーパータイプ計算が誤った結果を招く

課題: KT-37054

コンポーネント: 言語コア

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、柔軟な型の間の共通スーパータイプがより具体的になり、実行時エラーから保護されます。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

null 許容型の型引数に対するキャプチャ変換の欠如による型安全性の問題

課題: KT-35487

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、キャプチャされた型と null 許容型の間のサブタイピングがより正確になり、実行時エラーから保護されます。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

非検査キャスト後の共変型に対する交差型の保持

課題: KT-37280

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、共変型の非検査キャストは、非検査キャストの型ではなく、スマートキャスト用の交差型を生成します。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

this 式の使用によるビルダー推論からの型変数の漏洩

課題: KT-32126

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、他に適切な制約がない場合、sequence {} のようなビルダー関数内での this の使用は禁止されます。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

null 許容型の型引数を持つ反変型に対する誤ったオーバーロード解決

課題: KT-31670

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、反変の型引数を取る関数の 2 つのオーバーロードが型の null 許容性のみで異なる場合(In<T>In<T?> など)、null 許容型の方がより具体的であると見なされます。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

ネストされていない再帰的制約を伴うビルダー推論

課題: KT-34975

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、渡されたラムダ内の再帰的制約に依存する型を持つ sequence {} などのビルダー関数は、コンパイラエラーを引き起こします。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

型変数の早すぎる固定による矛盾した制約システム

課題: KT-25175

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、特定のケースにおける型推論がそれほど早く固定されなくなり、矛盾しない制約システムを見つけられるようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-NewInference を使用して、一時的に 1.4 以前の動作に戻すことが可能。このフラグはいくつかの新しい言語機能も無効にすることに注意してください。

open 関数に対する tailrec 修飾子の禁止

課題: KT-18541

コンポーネント: 言語コア

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、関数に opentailrec 修飾子を同時に付けることはできなくなります。

非推奨サイクル:

  • < 1.4: opentailrec 修飾子が共存する関数に対して警告を報告(progressive モードではエラー)。
  • = 1.4: この警告をエラーに格上げ。

コンパニオンオブジェクトの INSTANCE フィールドがコンパニオンオブジェクトクラス自体よりも可視性が高い

課題: KT-11567

コンポーネント: Kotlin/JVM

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、コンパニオンオブジェクトが private である場合、その INSTANCE フィールドも private になります。

非推奨サイクル:

  • < 1.4: コンパイラは非推奨フラグ付きでオブジェクトの INSTANCE を生成
  • = 1.4: コンパニオンオブジェクトの INSTANCE フィールドが適切な可視性を持つようになる

return の前に挿入された外部 finally ブロックが、finally のない内部 try ブロックの catch 範囲から除外されない

課題: KT-31923

コンポーネント: Kotlin/JVM

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、ネストされた try/catch ブロックに対して catch 範囲が適切に計算されるようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-ProperFinally を使用して、一時的に 1.4 以前の動作に戻すことが可能

共変およびジェネリック特化されたオーバーライドの戻り値の型として、インラインクラスのボックス化されたバージョンを使用する

課題: KT-30419

コンポーネント: Kotlin/JVM

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、共変およびジェネリック特化されたオーバーライドを使用する関数は、インラインクラスのボックス化された値を返します。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更

Kotlin インターフェースへの委譲を使用する際に、JVM バイトコードでチェック済み例外を宣言しない

課題: KT-35834

コンポーネント: Kotlin/JVM

互換性のない変更の種類: ソース

概要: Kotlin 1.4 は、Kotlin インターフェースへのインターフェース委譲中にチェック済み例外を生成しません。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更。 -XXLanguage:-DoNotGenerateThrowsForDelegatedKotlinMembers を使用して、一時的に 1.4 以前の動作に戻すことが可能

引数が別の配列にラップされるのを避けるため、単一の可変長引数パラメーターを持つメソッドへのシグネチャポリモーフィックな呼び出しの動作を変更

課題: KT-35469

コンポーネント: Kotlin/JVM

互換性のない変更の種類: ソース

概要: Kotlin 1.4 は、シグネチャポリモーフィックな呼び出しにおいて引数を別の配列にラップしません。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更

KClass がジェネリックパラメーターとして使用される際のアノテーション内の誤ったジェネリックシグネチャ

課題: KT-35207

コンポーネント: Kotlin/JVM

互換性のない変更の種類: ソース

概要: Kotlin 1.4 は、KClass がジェネリックパラメーターとして使用される際のアノテーションにおける誤った型マッピングを修正します。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更

シグネチャポリモーフィックな呼び出しでのスプレッド演算子の禁止

課題: KT-35226

コンポーネント: Kotlin/JVM

互換性のない変更の種類: ソース

概要: Kotlin 1.4 では、シグネチャポリモーフィックな呼び出しでのスプレッド演算子 (*) の使用を禁止します。

非推奨サイクル:

  • < 1.4: シグネチャポリモーフィックな呼び出しでのスプレッド演算子の使用に対して警告を報告
  • = 1.5: この警告をエラーに格上げ。 -XXLanguage:-ProhibitSpreadOnSignaturePolymorphicCall を使用して、一時的に 1.4 以前の動作に戻すことが可能

末尾再帰最適化された関数のデフォルト値の初期化順序の変更

課題: KT-31540

コンポーネント: Kotlin/JVM

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、末尾再帰関数の初期化順序は通常の関数と同じになります。

非推奨サイクル:

  • < 1.4: 問題のある関数について宣言箇所で警告を報告
  • = 1.4: 動作が変更。 -XXLanguage:-ProperComputationOrderOfTailrecDefaultParameters を使用して、一時的に 1.4 以前の動作に戻すことが可能

非 const val に対して ConstantValue 属性を生成しない

課題: KT-16615

コンポーネント: Kotlin/JVM

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、コンパイラは非 constval に対して ConstantValue 属性を生成しません。

非推奨サイクル:

  • < 1.4: IntelliJ IDEA のインスペクションを通じて警告を報告
  • = 1.4: 動作が変更。 -XXLanguage:-NoConstantValueAttributeForNonConstVals を使用して、一時的に 1.4 以前の動作に戻すことが可能

open メソッド上の @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 チェックは、KotlinNullPointerExceptionIllegalStateExceptionIllegalArgumentExceptionTypeCastException など、異なる例外をスローしていました。
  • = 1.4: すべての実行時 Null チェックが java.lang.NullPointerException をスローするようになります。 -Xno-unified-null-checks を使用して、一時的に 1.4 以前の動作に戻すことが可能

配列/リスト操作(contains, indexOf, lastIndexOf)における浮動小数点値の比較:IEEE 754 または全順序 (total order)

課題: KT-28753

コンポーネント: kotlin-stdlib (JVM)

互換性のない変更の種類: 振る舞い

概要: Double/FloatArray.asList() から返される List 実装は、containsindexOflastIndexOf を実装し、全順序による等価性を使用するようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更

コレクションの min および max 関数の戻り値を段階的に null 非許容に変更

課題: KT-38854

コンポーネント: kotlin-stdlib (JVM)

互換性のない変更の種類: ソース

概要: コレクションの min および max 関数の戻り値の型は、1.6 で null 非許容に変更されます。

非推奨サイクル:

  • 1.4: 同義語として ...OrNull 関数を導入し、影響を受ける API を非推奨化(詳細は課題を参照)
  • 1.5.x: 影響を受ける API の非推奨レベルをエラーに格上げ
  • = 1.6: 影響を受ける API を null 非許容の戻り値型で再導入

appendln を非推奨とし、appendLine を推奨

課題: KT-38754

コンポーネント: kotlin-stdlib (JVM)

互換性のない変更の種類: ソース

概要: StringBuilder.appendln()StringBuilder.appendLine() を推奨するために非推奨になります。

非推奨サイクル:

  • 1.4: appendln の代替として appendLine 関数を導入し、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: 非推奨レベルをエラーに格上げ

無効な startIndex に対して Regex.findAll でフェイルファストする

課題: KT-28356

コンポーネント: kotlin-stdlib

互換性のない変更の種類: 振る舞い

概要: Kotlin 1.4 以降、findAllfindAll に入る時点で startIndex が入力文字シーケンスの有効な位置インデックスの範囲内にあることをチェックし、そうでない場合は IndexOutOfBoundsException をスローするように改善されます。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更

非推奨の kotlin.coroutines.experimental の削除

課題: KT-36083

コンポーネント: kotlin-stdlib

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、非推奨の kotlin.coroutines.experimental API が stdlib から削除されます。

非推奨サイクル:

  • < 1.4: kotlin.coroutines.experimentalERROR レベルで非推奨
  • = 1.4: kotlin.coroutines.experimental が stdlib から削除。JVM では、別途互換性アーティファクトが提供されます(詳細は課題を参照)。

非推奨の mod 演算子の削除

課題: KT-26654

コンポーネント: kotlin-stdlib

互換性のない変更の種類: ソース

概要: Kotlin 1.4 以降、数値型に対する mod 演算子が stdlib から削除されます。

非推奨サイクル:

  • < 1.4: modERROR レベルで非推奨
  • = 1.4: mod が stdlib から削除

Throwable.addSuppressed メンバーを隠し、代わりに追加された拡張関数を優先する

課題: KT-38777

コンポーネント: kotlin-stdlib

互換性のない変更の種類: 振る舞い

概要: Throwable.addSuppressed() メンバー関数よりも Throwable.addSuppressed() 拡張関数が優先されるようになります。

非推奨サイクル:

  • < 1.4: 旧来の動作(詳細は課題を参照)
  • = 1.4: 動作が変更

capitalize が二重音字 (digraphs) をタイトルケースに変換するように変更

課題: 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

互換性のない変更の種類: 振る舞い

概要: KAPT によってプロパティに対して生成される合成 $annotations() メソッドの名前が 1.4 で変更されました。

非推奨サイクル:

  • < 1.4: プロパティの合成 $annotations() メソッドの名前はテンプレート <propertyName>@annotations() に従う
  • = 1.4: プロパティの合成 $annotations() メソッドの名前に get プレフィックスが含まれるようになる:get<PropertyName>@annotations()