Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

dmd.safe

Checks whether member access or array casting is allowed in @safe code.

Specification Function Safety

Authors:

Source safe.d

bool checkUnsafeAccess(Scope* sc, Expression e, bool readonly, bool printmsg);
Check for unsafe access in @safe code:
  1. read overlapped pointers
  2. write misaligned pointers
  3. write overlapped storage classes
Print error if unsafe.
Parameters:
Scope* sc scope
Expression e expression to check
bool readonly if access is read-only
bool printmsg print error message if true
Returns:
true if error
bool isSafeCast(Expression e, Type tfrom, Type tto);
Determine if it is @safe to cast e from tfrom to tto.
Parameters:
Expression e expression to be cast
Type tfrom type of e
Type tto type to cast e to
Returns:
true if @safe
bool checkUnsafeDotExp(Scope* sc, Expression e, Identifier id, int flag);
Check for unsafe use of .ptr or .funcptr
Parameters:
Scope* sc context
Expression e expression for error messages
Identifier id ptr or funcptr
int flag DotExpFlag
Returns:
true if error