trueの時、 コンパイラは次の暗黙的なキャストを行います。
非定数の String値から、列挙型の値への暗黙的なキャスト。例えば
{proc {s:String}:FontStyle{return s}}
#proc型から、非#proc型への暗黙的なキャスト。例えば
{proc {p:#{proc {}:void}}:{proc {}:void}{return p}}
for 範囲ループにおける
end-rangeと
step-valueの暗黙的なダウンキャスト。例えば、
{for i = 1 to 5.5 step 1.1 do ...}
このケースにおける反復値は、
1によって、
int型と推定されます。ですから、ステップ値
1.1と終了値
5.5はキャストされなければなりません。このディレクティブは、このようなキャストを暗黙的に行います。あるいは、このようなキャストを行う為には明示的に、
asaを使用してください。
このディレクティブは、下で説明されるallow-implicit-downcasts?ディレクティブによって暗黙的に定義されます。このコンパイラディレクティブは、5.0APIからの実装です。主として3.0APIから5.0APIへの移行をしやすくすることを目的にしています。このディレクティブの既定値はtrueです
allow-some-implicit-casts?:bool = true
allow-implicit-downcasts?:bool = false
これは、コンパイラがスーパークラスからサブクラスへ暗黙的にキャストを挿入するかどうかを制御します。このキャストは実行時に失敗することがあり、実行時の型のチェックにはパフォーマンスの負担が生じるため、プログラマーがそのようなすべてのキャストを明示的に認識できるように、このフラグには false の値を指定することが推奨されています。
またこのフラグは、コンパイラが実行時のキャストが許可されているかどうかを判断できない場合に、コンパイラが型から 1 つ以上の
implicit コンストラクタを持つクラスに暗黙的にキャストを挿入するかどうかを制御します。
このディレクティブがtrueの時, allow-some-implicit-casts?ディレクティブもまたtrueに設定されます。
allow-implicit-any-casts?:bool = true
これは、コンパイラが any から他の型へのサイレント キャストを挿入するかどうかを制御します。このようなキャストは実行時の型エラーにより失敗することがあるため、このフラグを false に設定すると、プログラマーは明示的なキャストを強制的に挿入することになり、実行時の型エラーがどこで発生するか確認することができます。
allow-useless-compares?:bool = true
これは、コンパイラが "無益な" 比較についてエラーを生成するかどうかを制御します。特に、false に設定するとコンパイラは以下の場合についてエラーを生成します。
- null と決して null にならない型の値の比較。
- 結果が常に trueまたは false になることが明らかな数値の比較 (たとえば uint8 の値と -1 を比較する場合)。
allow-implicit-any-declarations?:bool = true
false に設定すると、コンパイラは不明の型を any 型に既定で設定することができなくなります。たとえば、let x = 5 では x が any 型になりますが、これでは実行が遅く、コンパイル時の型チェックができません。
allow-implicit-package-protection?:bool = true
既定では、クラス、メソッド、グローバル変数およびその他のシンボルは、キーワード package が宣言に使用されているかのようにパッケージ内でしか見えません。false に設定するとこの既定は無効となり、プログラマーはそれぞれの場合で public、package、protected 、private のいずれかを明示的に決定する必要があります。
allow-implicit-open?:bool = true
既定では、パブリック クラスはパッケージ外のサブクラス化が可能で、finalでないパブリックおよびプロテクト メソッドはそのパッケージ外でオーバーライドすることができます。これは、"open" であることを意味します。
場合によっては、この既定の動作によりパッケージ外のユーザーが特定メソッドをオーバーライドしてクラス階層の不変性を侵害する可能性があるため、これが望まれないことがあります。また、コンパイラはオーバーライドの方法をすべて認識できず、したがってクラスの最適化を効率的に処理できないため、パフォーマンスに何らかの負担が生じます。
このフラグを false に設定すると、プログラマーは open、sealed、または final のいずれであるかを明示的に宣言しなければなりません。
allow-import-locations?:bool = true
falseに設定され、現在のコンパイルユニット(つまり アプレット、パッケージ、またはスクリプト) がメタデータでマニフェストを指定する場合、明示的な
location を指定するいずれの
import ステートメントに対してもエラーが生成されます。詳細は、
import を参照してください。
allow-slow-spliced-arguments?:bool = true
... の使用方法によっては非常に効率の悪いコードにコンパイルされます。false に設定するとこのようなコンストラクトは許可されません。通常、同じ引数位置で ... を受け取るものを呼び出す場合に ... を渡すのが最も効率的です。現在の関数は、呼び出された関数と同じキーワード引数をすべて受け取ります。
明示的に splice を使用するとこの警告はスキップされます。
allow-any-calls?:bool = true
any 型の式を、プロシージャ、またはメソッドを呼び出すオブジェクトとして使用できます。これは、実行時にすべての型チェックを実行します。これは、パフォーマンスに負担が生じ、コンパイル時にはキャッチされないエラーが発生する傾向があるため、そのような呼び出しを禁じるために使用されます。
allow-deprecated?:bool = false
設定されている場合、コンパイラは推奨されていない API の使用をチェックしません。
strict-serialization?:bool = false
このディレクティブによって、一時的でないフィールドを保持するシリアル化できないクラスから継承した
serializable なクラスに対するエラーが生成されるかどうか制御します。詳細に関しては、
シリアル化, を参照してください。
このディレクティブは、6.0 API で追加されました。 それ以前にそのようなエラーは検出されていません。
optimize-level:int = 1
これは、最適化レベルを設定します。設定が高いほど、要求される最適化の度合いも高くなります。ただし、コンパイラの実行速度は遅くなります。
注意:現時点ではこれは効果がありません。