From d63e13ed8435be2f727e7ca04f03cf51844a7d4c Mon Sep 17 00:00:00 2001 From: Thomas Alexander Date: Mon, 10 Jun 2024 23:42:43 -0300 Subject: [PATCH] Add reproducer for array bug. --- conanfile.py | 1 + tests/CMakeLists.txt | 4 ++++ tests/src/test-array-17.qasm | 21 +++++++++++++++++++++ tests/src/test-array-18.qasm | 26 ++++++++++++++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 tests/src/test-array-17.qasm create mode 100644 tests/src/test-array-18.qasm diff --git a/conanfile.py b/conanfile.py index e919e34..bafa94d 100644 --- a/conanfile.py +++ b/conanfile.py @@ -92,6 +92,7 @@ def build(self): cmake = CMake(self) cmake.configure() + use_monitor = False if self.should_build: # Note that if a job does not produce output for a longer period of # time, then Travis will cancel that job. diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 73ca4d5..5a69bc2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -680,3 +680,7 @@ add_test(NAME t00335 COMMAND ${BASH} -c "${OPENQASM_TEST_PROGRAM} -I${OPENQASM_TEST_INCDIR} ${OPENQASM_TEST_SRCDIR}/test-nested-elseif.qasm > ${CMAKE_BINARY_DIR}/tests/test-nested-elseif.qasm.out 2>&1") add_test(NAME t00336 COMMAND ${BASH} -c "${OPENQASM_TEST_PROGRAM} -I${OPENQASM_TEST_INCDIR} ${OPENQASM_TEST_SRCDIR}/test-multi-nested-elseif.qasm > ${CMAKE_BINARY_DIR}/tests/test-multi-nested-elseif.qasm.out 2>&1") +add_test(NAME t00337 + COMMAND ${BASH} -c "${OPENQASM_TEST_PROGRAM} -I${OPENQASM_TEST_INCDIR} ${OPENQASM_TEST_SRCDIR}/test-array-17.qasm > ${CMAKE_BINARY_DIR}/tests/test-array-17.qasm.out 2>&1") +add_test(NAME t00338 + COMMAND ${BASH} -c "${OPENQASM_TEST_PROGRAM} -I${OPENQASM_TEST_INCDIR} ${OPENQASM_TEST_SRCDIR}/test-array-18.qasm > ${CMAKE_BINARY_DIR}/tests/test-array-18.qasm.out 2>&1") diff --git a/tests/src/test-array-17.qasm b/tests/src/test-array-17.qasm new file mode 100644 index 0000000..4af545a --- /dev/null +++ b/tests/src/test-array-17.qasm @@ -0,0 +1,21 @@ +OPENQASM 3.0; + + +gate phase(lambda) q { + U(0, 0, lambda) q; +} + +qubit a; + +array[qubit, 16] aarray; + +input array[angle, 16] aa; + + +phase(aa[0]) a; + +phase(aa[0]) aarray; + +angle assign = aa[0]; + +phase(assign) a; diff --git a/tests/src/test-array-18.qasm b/tests/src/test-array-18.qasm new file mode 100644 index 0000000..518624d --- /dev/null +++ b/tests/src/test-array-18.qasm @@ -0,0 +1,26 @@ +OPENQASM 3; + +gate rz(theta) q {} + +qubit $0; + +input angle angle_p; +input float[64] float_p; + +input array[angle, 20000] array_angle_p; +input array[float[64], 20000] array_float_p; + +// Access value directly +rz(angle_p) $0; +rz(float_p) $0; + +// Access value through array reference +rz(array_angle_p[0]) $0; +rz(array_float_p[0]) $0; + +// Access value through intermediate assignment +float[64] intermediate_angle = array_angle_p[0]; +float[64] intermediate_float = array_float_p[0]; + +rz(intermediate_angle); +rz(intermediate_float);