@@ -820,13 +820,16 @@ def test_expr_condition_is_mapped(self):
820
820
b_src = ClassicalRegister (2 , "b_src" )
821
821
c_src = ClassicalRegister (name = "c_src" , bits = list (a_src ) + list (b_src ))
822
822
source = QuantumCircuit (QuantumRegister (1 ), a_src , b_src , c_src )
823
+ target_var = source .add_input ("target_var" , types .Uint (2 ))
823
824
824
825
test_1 = lambda : expr .lift (a_src [0 ])
825
826
test_2 = lambda : expr .logic_not (b_src [1 ])
826
827
test_3 = lambda : expr .logic_and (expr .bit_and (b_src , 2 ), expr .less (c_src , 7 ))
828
+ test_4 = lambda : expr .bit_xor (expr .index (target_var , 0 ), expr .index (target_var , 1 ))
827
829
source .if_test (test_1 (), inner .copy (), [0 ], [])
828
830
source .if_else (test_2 (), inner .copy (), inner .copy (), [0 ], [])
829
831
source .while_loop (test_3 (), inner .copy (), [0 ], [])
832
+ source .if_test (test_4 (), inner .copy (), [0 ], [])
830
833
831
834
a_dest = ClassicalRegister (2 , "a_dest" )
832
835
b_dest = ClassicalRegister (2 , "b_dest" )
@@ -840,12 +843,19 @@ def test_expr_condition_is_mapped(self):
840
843
self .assertEqual (len (dest .cregs ), 3 )
841
844
mapped_reg = dest .cregs [- 1 ]
842
845
843
- expected = QuantumCircuit (dest .qregs [0 ], a_dest , b_dest , mapped_reg )
846
+ expected = QuantumCircuit (dest .qregs [0 ], a_dest , b_dest , mapped_reg , inputs = [ target_var ] )
844
847
expected .if_test (expr .lift (a_dest [0 ]), inner .copy (), [0 ], [])
845
848
expected .if_else (expr .logic_not (b_dest [1 ]), inner .copy (), inner .copy (), [0 ], [])
846
849
expected .while_loop (
847
850
expr .logic_and (expr .bit_and (b_dest , 2 ), expr .less (mapped_reg , 7 )), inner .copy (), [0 ], []
848
851
)
852
+ # `Var` nodes aren't remapped, but this should be passed through fine.
853
+ expected .if_test (
854
+ expr .bit_xor (expr .index (target_var , 0 ), expr .index (target_var , 1 )),
855
+ inner .copy (),
856
+ [0 ],
857
+ [],
858
+ )
849
859
self .assertEqual (dest , expected )
850
860
851
861
def test_expr_target_is_mapped (self ):
0 commit comments