dmd.safe

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

Specification: Function Safety

Authors

Walter Bright

Source: safe.d

  • Declaration

    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

    Return Value

    true if error

  • Declaration

    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

    Return Value

    true if @safe

  • Declaration

    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

    Return Value

    true if error