Skip to content

Commit 06c7bbb

Browse files
committed
Remove redundant code in ifelse handling.
1 parent aeaea1c commit 06c7bbb

File tree

1 file changed

+32
-37
lines changed
  • src/bloqade/analysis/validation/nocloning

1 file changed

+32
-37
lines changed

src/bloqade/analysis/validation/nocloning/impls.py

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,68 +24,63 @@ def if_else(
2424
except Exception:
2525
cond_validation = Top()
2626

27-
errors_before_then_keys = set(interp_._validation_errors.keys())
27+
errors_before = set(interp_._validation_errors.keys())
2828

2929
with interp_.new_frame(stmt, has_parent_access=True) as then_frame:
3030
interp_.frame_call_region(then_frame, stmt, stmt.then_body, cond_validation)
3131
frame.set_values(then_frame.entries.keys(), then_frame.entries.values())
32-
then_keys = set(interp_._validation_errors.keys()) - errors_before_then_keys
32+
33+
then_keys = set(interp_._validation_errors.keys()) - errors_before
3334
then_errors = interp_.get_validation_errors(keys=then_keys)
3435

3536
then_state = (
3637
Must(violations=frozenset(err.args[0] for err in then_errors))
37-
if bool(then_keys)
38+
if then_keys
3839
else Bottom()
3940
)
4041

4142
if stmt.else_body:
42-
errors_before_else_keys = set(interp_._validation_errors.keys())
43+
errors_before_else = set(interp_._validation_errors.keys())
4344

4445
with interp_.new_frame(stmt, has_parent_access=True) as else_frame:
4546
interp_.frame_call_region(
4647
else_frame, stmt, stmt.else_body, cond_validation
4748
)
4849
frame.set_values(else_frame.entries.keys(), else_frame.entries.values())
49-
else_keys = set(interp_._validation_errors.keys()) - errors_before_else_keys
50+
51+
else_keys = set(interp_._validation_errors.keys()) - errors_before_else
5052
else_errors = interp_.get_validation_errors(keys=else_keys)
5153

5254
else_state = (
5355
Must(violations=frozenset(err.args[0] for err in else_errors))
54-
if bool(else_keys)
56+
if else_keys
5557
else Bottom()
5658
)
57-
58-
merged = then_state.join(else_state)
59-
60-
if isinstance(merged, May):
61-
branch_keys = then_keys | else_keys
62-
for k in branch_keys:
63-
interp_._validation_errors.pop(k, None)
64-
65-
for err in then_errors:
66-
if isinstance(err, QubitValidationError):
67-
potential_err = PotentialQubitValidationError(
68-
err.node, err.gate_name, ", when condition is true"
69-
)
70-
interp_.add_validation_error(err.node, potential_err)
71-
72-
for err in else_errors:
73-
if isinstance(err, QubitValidationError):
74-
potential_err = PotentialQubitValidationError(
75-
err.node, err.gate_name, ", when condition is false"
76-
)
77-
interp_.add_validation_error(err.node, potential_err)
7859
else:
79-
merged = then_state.join(Bottom())
60+
else_state = Bottom()
61+
else_keys = set()
62+
else_errors = []
63+
merged = then_state.join(else_state)
64+
all_branch_keys = then_keys | else_keys
65+
for k in all_branch_keys:
66+
interp_._validation_errors.pop(k, None)
8067

81-
if isinstance(merged, May):
82-
for k in then_keys:
83-
interp_._validation_errors.pop(k, None)
84-
for err in then_errors:
85-
if isinstance(err, QubitValidationError):
86-
potential_err = PotentialQubitValidationError(
87-
err.node, err.gate_name, ", when condition is true"
88-
)
89-
interp_.add_validation_error(err.node, potential_err)
68+
if isinstance(merged, Must):
69+
for err in then_errors + else_errors:
70+
if isinstance(err, QubitValidationError):
71+
interp_.add_validation_error(err.node, err)
72+
elif isinstance(merged, May):
73+
for err in then_errors:
74+
if isinstance(err, QubitValidationError):
75+
potential_err = PotentialQubitValidationError(
76+
err.node, err.gate_name, ", when condition is true"
77+
)
78+
interp_.add_validation_error(err.node, potential_err)
9079

80+
for err in else_errors:
81+
if isinstance(err, QubitValidationError):
82+
potential_err = PotentialQubitValidationError(
83+
err.node, err.gate_name, ", when condition is false"
84+
)
85+
interp_.add_validation_error(err.node, potential_err)
9186
return (merged,)

0 commit comments

Comments
 (0)