# labeled 'do' uses the BreakOnlyEscapableBlock subclass
# closures uses the EscapableClosure subclass
class EscapableBlock
-special ScopeBlock
+ super ScopeBlock
# The label of the block (if any)
# Set by the push in EscapableContext
readable var _lab: nullable Symbol
# specific EscapableBlock where only labelled break can be used
class BreakOnlyEscapableBlock
-special EscapableBlock
+ super EscapableBlock
redef fun is_break_block: Bool do return true
init(node: ANode) do super
# specific EscapableBlock for closures
class EscapableClosure
-special EscapableBlock
+ super EscapableBlock
# The associated closure
readable var _closure: MMClosure
###############################################################################
class AEscapeExpr
-special ALabelable
+ super ALabelable
# The associated escapable block
readable var _escapable: nullable EscapableBlock
end
redef class AContinueExpr
-special AEscapeExpr
+ super AEscapeExpr
redef fun kwname do return "continue"
end
redef class ABreakExpr
-special AEscapeExpr
+ super AEscapeExpr
redef fun kwname do return "break"
end