diff --git a/src/braket/default_simulator/openqasm/interpreter.py b/src/braket/default_simulator/openqasm/interpreter.py index 06dd6dcd..9f2b456e 100644 --- a/src/braket/default_simulator/openqasm/interpreter.py +++ b/src/braket/default_simulator/openqasm/interpreter.py @@ -115,9 +115,9 @@ from .parser.openqasm_parser import parse from .program_context import ( AbstractProgramContext, + BreakSignal, + ContinueSignal, ProgramContext, - _BreakSignal, - _ContinueSignal, ) _EVALUABLE = ( @@ -666,11 +666,11 @@ def _(self, node: ForInLoop) -> None: for _ in gen: try: self.visit(deepcopy(node.block)) - except _BreakSignal: + except BreakSignal: self.context.handle_loop_break() gen.close() break - except _ContinueSignal: + except ContinueSignal: self.context.handle_loop_continue() continue else: @@ -687,10 +687,10 @@ def _(self, node: ForInLoop) -> None: self.context.declare_variable(loop_var_name, node.type, i) try: self.visit(deepcopy(node.block)) - except _BreakSignal: + except BreakSignal: self.context.handle_loop_break() break - except _ContinueSignal: + except ContinueSignal: self.context.handle_loop_continue() continue @@ -704,31 +704,31 @@ def _(self, node: WhileLoop) -> None: for _ in gen: try: self.visit(deepcopy(node.block)) - except _BreakSignal: + except BreakSignal: self.context.handle_loop_break() gen.close() break - except _ContinueSignal: + except ContinueSignal: self.context.handle_loop_continue() continue else: while cast_to(BooleanLiteral, self.visit(node.while_condition)).value: try: self.visit(deepcopy(node.block)) - except _BreakSignal: + except BreakSignal: self.context.handle_loop_break() break - except _ContinueSignal: + except ContinueSignal: self.context.handle_loop_continue() continue @visit.register def _(self, node: BreakStatement) -> None: - raise _BreakSignal() + raise BreakSignal() @visit.register def _(self, node: ContinueStatement) -> None: - raise _ContinueSignal() + raise ContinueSignal() @visit.register def _(self, node: AliasStatement) -> None: diff --git a/src/braket/default_simulator/openqasm/program_context.py b/src/braket/default_simulator/openqasm/program_context.py index ed5f44d0..19048953 100644 --- a/src/braket/default_simulator/openqasm/program_context.py +++ b/src/braket/default_simulator/openqasm/program_context.py @@ -1132,10 +1132,16 @@ class _BreakSignal(Exception): """Internal signal raised when a BreakStatement is encountered during branched execution.""" +BreakSignal = _BreakSignal + + class _ContinueSignal(Exception): """Internal signal raised when a ContinueStatement is encountered during branched execution.""" +ContinueSignal = _ContinueSignal + + class ProgramContext(AbstractProgramContext): def __init__(self, circuit: Circuit | None = None, simulator: BaseLocalSimulator | None = None): """ diff --git a/test/unit_tests/braket/default_simulator/openqasm/test_interpreter.py b/test/unit_tests/braket/default_simulator/openqasm/test_interpreter.py index f7d113d8..68eeb645 100644 --- a/test/unit_tests/braket/default_simulator/openqasm/test_interpreter.py +++ b/test/unit_tests/braket/default_simulator/openqasm/test_interpreter.py @@ -2482,7 +2482,7 @@ def test_if_else_branch(): def test_for_loop_break(): - # exercises _BreakSignal / BreakStatement + # exercises BreakSignal / BreakStatement qasm = """ int[8] x = 0; for int[8] i in [0:4] { @@ -2497,7 +2497,7 @@ def test_for_loop_break(): def test_for_loop_continue(): - # exercises _ContinueSignal / ContinueStatement + # exercises ContinueSignal / ContinueStatement qasm = """ int[8] x = 0; for int[8] i in [0:4] { diff --git a/test/unit_tests/braket/default_simulator/test_mcm.py b/test/unit_tests/braket/default_simulator/test_mcm.py index c0969a82..2e560fa9 100644 --- a/test/unit_tests/braket/default_simulator/test_mcm.py +++ b/test/unit_tests/braket/default_simulator/test_mcm.py @@ -4202,7 +4202,7 @@ def conditional_flip(int[32] flag, qubit target) { class TestMCMWhileLoopBreak: - """Cover _BreakSignal in branched while loop.""" + """Cover BreakSignal in branched while loop.""" def test_break_in_branched_while_loop(self, simulator): """Break inside a while loop after MCM."""