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.blockexit

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

Source blockexit.d

enum BE: int;
BE stands for BlockExit.
It indicates if a statement does transfer control to another block. A block is a sequence of statements enclosed in { }
int blockExit(Statement s, FuncDeclaration func, ErrorSink eSink);
Determine mask of ways that a statement can exit.
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
Returns:
BE.xxxx
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
Returns:
BE.[err]throw depending on the type of exp