Simplify return type of DAGCircuit::control_flow_op_nodes
#13892
+38
−35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Technically this is a breaking change, not because of the type change (we're returning a subset of what we previously did), but because the docstring previously explicitly said that
None
was used for the empty list. In practice, this is a bit of a footgun (as I found), and inconsistent with the otherDAGCircuit
methods. It's not clear that it has a performance advantage; technically it can save a single Python empty-list allocation (None
is a singleton), but this cost is pretty trivial.Summary
Details and comments
I'll not be distraught if we choose not to do this because it's technically a breaking change, but I can say from experience that I managed to write a buggy transpiler pass because of the unexpected behaviour here, and
if not op_nodes
is naturally supported on both 1.x and 2.x.