dmd.blockexit

Find out in what ways control flow can exit a statement block.

Authors

Walter Bright

Source: blockexit.d

  • BE

    Declaration

    enum BE: int;

    BE stands for BlockExit.

    Discussion

    It indicates if a statement does transfer control to another block. A block is a sequence of statements enclosed in { }

  • Declaration

    int blockExit(Statement s, FuncDeclaration func, bool mustNotThrow);

    Determine mask of ways that a statement can exit.

    Discussion

    Only valid after semantic analysis.

    Parameters

    Statement s

    statement to check for block exit status

    FuncDeclaration func

    function that statement s is in

    bool mustNotThrow

    generate an error if it throws

    Return Value

    BE.xxxx

  • Declaration

    BE checkThrow(const ref Loc loc, Expression exp, const bool mustNotThrow, FuncDeclaration func);

    Checks whether throw <exp> throws an Exception or an Error and raises an error if this violates nothrow.

    Parameters

    Loc loc

    location of the throw

    Expression exp

    expression yielding the throwable

    bool mustNotThrow

    inside of a nothrow scope?

    FuncDeclaration func

    function containing the throw

    Return Value

    BE.[err]throw depending on the type of exp