英語版
このページの英語版を見る

dmd.safe

コード内でメンバ・アクセスや配列のキャストが許可されているかどうかをチェックする。 @safeコードをチェックする。
Authors:

ソース safe.d

bool checkUnsafeAccess(Scope* sc, Expression e, bool readonly, bool printmsg);
safeコードで安全でないアクセスをチェックする:
  1. 重なったポインタを読む
  2. ずれたポインタを書き込む
  3. 重複したストレージクラスを書き込む
安全でない場合はエラーを表示する。
Parameters:
Scope* sc スコープ
Expression e チェックする式
bool readonly アクセスが読み取り専用の場合
bool printmsg trueの場合はエラーメッセージを表示する。
Returns:
エラーならtrue
bool isSafeCast(Expression e, Type tfrom, Type tto);
eをtfromからttoにキャストするのが@safeかどうかを判定する。
Parameters:
Expression e キャストされる式
Type tfrom eの型
Type tto eをキャストする型
Returns:
もし"@safe"なら真とする。
bool checkUnsafeDotExp(Scope* sc, Expression e, Identifier id, int flag);
.ptr または.funcptr
Parameters:
Scope* sc コンテキスト
Expression e エラーメッセージを表現する
Identifier id ptr またはfuncptr
int flag DotExpFlag
Returns:
エラーの場合は真