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, ErrorSink eSink);

    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

    ErrorSink eSink

    generate an error if it throws

    Return Value

    BE.xxxx

  • Declaration

    BE checkThrow(const ref Loc loc, Expression exp, FuncDeclaration func, ErrorSink eSink);

    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

    ErrorSink eSink

    if !null then inside of a nothrow scope

    FuncDeclaration func

    function containing the throw

    Return Value

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