/* * Copyright 2013 Guidewire Software, Inc. */ package gw.lang.parser.statements; /** */ public enum TerminalType { // Break is weaker than continue b/c a break flows to what follows the // context of the break, whereas continue may not (it could forever loop) Break, // Continue is weaker than ReturnOrThrow because continue applies to a // specific scope within a function, not the whole method Continue, // ReturnOrThrow must be combined b/c in aggregate they can absolutely // terminate e.g., an if-else-stmt can have a return in the if-part and // a throw in the else-part, but together they absolutely terminate the // whole if-stmt. ReturnOrThrow, // ForeverLoop is strongest because it is a black hole -- flow never escapes it ForeverLoop, }