use Leave;
#CHECK {
#prepare-leave;
#say $*CU.DEPARSE
#}
say 1;
{
CONTROL {
when CX::Leave {
say "leave"
}
}
say 2;
leave;
say 3
}
say 4;
unit class Leave;
#use ASTQuery;
class CX::Leave is X::Control {
method message { "<leave control exception>" }
}
sub leave is export {
CX::Leave.new.throw
}
#sub prepare-leave($CU = $*CU) is export {
# for $CU.&ast-query(Q|RakuAST::Block >> .call#leave|).list -> $node {
# my @orig = $node.body.statement-list.statements;
# $node.body.statement-list.unshift-statement: $_ for reverse Q:to/EOF/.AST.statements;
# CONTROL {
# when CX::Leave { say "leave" }
# }
# EOF
# }
#}