"""A control directive, terminated by a semicolon. There are four kinds of control directives: - the [[`return`|Return]] directive, to return a value or terminate execution, - the [[`throw`|Throw]] directive, to raise an exception, - the [[`break`|Break]] directive, to terminate a loop, and - the [[`continue`|Continue]] directive, to jump to the next iteration of a loop. Examples: return ret; throw AssertionError("Not implemented yet!"); // TODO implement break; continue;""" shared abstract class Directive() of Return | Throw | Break | Continue extends Statement() { "The expression that the surrounding function results in, if this directive ends execution of a surrounding function. - For a [[`return`|Return]] directive, this is the returned value’s expression, if any. - For a [[`throw`|Return]] directive, this is the raised exception’s expression, if any. - For a [[`break`|Break]] or [[`continue`|Continue]] directive, this is always [[null]]." shared formal Expression? result; "The text of the directive itself. (Does not include the [[result]] or the terminating semicolon.)" shared formal String text; shared actual formal [Expression=] children; }