Skip to content

Commit 760216a

Browse files
authored
Circuit diagrams: group operations by containing callable (#2796)
This enables a circuit diagram feature where operations are grouped in the visualization based on the containing callable. Example: <img width="1133" height="661" alt="image" src="https://github.com/user-attachments/assets/dbd29a9a-2413-4f4a-b202-06c3b5e00adf" />
1 parent bc074d1 commit 760216a

38 files changed

+7858
-374
lines changed

source/compiler/qsc/src/interpret/circuit_tests.rs

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -697,23 +697,23 @@ fn operation_with_qubit_arrays() {
697697
);
698698

699699
expect![[r#"
700-
[email protected]:6:27 ─ [email protected]:8:20 ─── [email protected]:23:16 ─
701-
╘═════════
702-
[email protected]:6:27 ─ [email protected]:8:20 ─── [email protected]:23:16 ─
703-
╘═════════
704-
[email protected]:6:40 ─ [email protected]:12:24 ────────────────────
705-
[email protected]:6:40 ─ [email protected]:12:24 ────────────────────
706-
[email protected]:6:40 ─ [email protected]:12:24 ────────────────────
707-
[email protected]:6:40 ─ [email protected]:12:24 ────────────────────
708-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
709-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
710-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
711-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
712-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
713-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
714-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
715-
[email protected]:6:55 ─ [email protected]:18:28 ────────────────────
716-
[email protected]:6:72 ─ [email protected]:22:16 ────────────────────
700+
[email protected]:6:27 [email protected]:8:20 ─── [email protected]:23:16 ─
701+
╘═════════
702+
[email protected]:6:27 [email protected]:8:20 ─── [email protected]:23:16 ─
703+
╘═════════
704+
[email protected]:6:40 [email protected]:12:24 ────────────────────
705+
[email protected]:6:40 [email protected]:12:24 ────────────────────
706+
[email protected]:6:40 [email protected]:12:24 ────────────────────
707+
[email protected]:6:40 [email protected]:12:24 ────────────────────
708+
[email protected]:6:55 [email protected]:18:28 ────────────────────
709+
[email protected]:6:55 [email protected]:18:28 ────────────────────
710+
[email protected]:6:55 [email protected]:18:28 ────────────────────
711+
[email protected]:6:55 [email protected]:18:28 ────────────────────
712+
[email protected]:6:55 [email protected]:18:28 ────────────────────
713+
[email protected]:6:55 [email protected]:18:28 ────────────────────
714+
[email protected]:6:55 [email protected]:18:28 ────────────────────
715+
[email protected]:6:55 [email protected]:18:28 ────────────────────
716+
[email protected]:6:72 [email protected]:22:16 ────────────────────
717717
"#]]
718718
.assert_eq(&circ);
719719
}
@@ -909,13 +909,13 @@ fn operation_with_long_gates_properly_aligned() {
909909
);
910910

911911
expect![[r#"
912-
[email protected]:6:20 ─ [email protected]:9:20 ───────────────────────────────────────────────────────────────────────── ● ────────────── [email protected]:14:20 ─────────────────────────────────────────────────────────────────── ● ───────────────────────────
913-
│ ╘════════════════════════════════════════════════════════════════════════════╪════════════════════════════
914-
[email protected]:7:20 ─ [email protected]:10:20 ─────── [email protected]:11:20 ─────── Ry(1.0000)@test.qs:12:20 ──────── [email protected]:13:20 ─────────────────────────────────────────────────────── Rxx(1.0000)@test.qs:27:20 ──────────┼────────── [email protected]:31:21 ─
915-
┆ │ ╘═════════
916-
[email protected]:16:20 ─ [email protected]:18:20 ── Rx(1.0000)@test.qs:19:20 ──────── [email protected]:20:20 ─────── Rx(1.0000)@test.qs:21:20 ─── [email protected]:22:20 ── Rx(1.0000)@test.qs:23:20 ────────────────┆───────────────────────┼────────────────────────────
917-
[email protected]:25:20 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Rxx(1.0000)@test.qs:27:20 ── [email protected]:29:20 ── [email protected]:31:28 ─
918-
╘═════════
912+
[email protected]:6:20 [email protected]:9:20 ───────────────────────────────────────────────────────────────────────── ● ────────────── [email protected]:14:20 ─────────────────────────────────────────────────────────────────── ● ───────────────────────────
913+
│ ╘════════════════════════════════════════════════════════════════════════════╪════════════════════════════
914+
[email protected]:7:20 [email protected]:10:20 ─────── [email protected]:11:20 ─────── Ry(1.0000)@test.qs:12:20 ──────── [email protected]:13:20 ─────────────────────────────────────────────────────── Rxx(1.0000)@test.qs:27:20 ──────────┼────────── [email protected]:31:21 ─
915+
┆ │ ╘═════════
916+
[email protected]:16:20 [email protected]:18:20 ── Rx(1.0000)@test.qs:19:20 ──────── [email protected]:20:20 ─────── Rx(1.0000)@test.qs:21:20 ─── [email protected]:22:20 ── Rx(1.0000)@test.qs:23:20 ────────────────┆───────────────────────┼────────────────────────────
917+
[email protected]:25:20 ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Rxx(1.0000)@test.qs:27:20 ── [email protected]:29:20 ── [email protected]:31:28 ─
918+
╘═════════
919919
"#]]
920920
.assert_eq(&circ);
921921
}
@@ -943,12 +943,12 @@ fn operation_with_subsequent_qubits_gets_horizontal_lines() {
943943
);
944944

945945
expect![[r#"
946-
[email protected]:6:20 ─ Rxx(1.0000)@test.qs:8:20 ──
947-
948-
[email protected]:7:20 ─ Rxx(1.0000)@test.qs:8:20 ──
949-
[email protected]:10:20 ─ Rxx(1.0000)@test.qs:12:20 ─
950-
951-
[email protected]:11:20 ─ Rxx(1.0000)@test.qs:12:20 ─
946+
[email protected]:6:20 ─ Rxx(1.0000)@test.qs:8:20 ──
947+
948+
[email protected]:7:20 ─ Rxx(1.0000)@test.qs:8:20 ──
949+
[email protected]:10:20 ─ Rxx(1.0000)@test.qs:12:20 ─
950+
951+
[email protected]:11:20 ─ Rxx(1.0000)@test.qs:12:20 ─
952952
"#]]
953953
.assert_eq(&circ);
954954
}
@@ -1005,12 +1005,12 @@ fn operation_with_subsequent_qubits_no_added_rows() {
10051005
);
10061006

10071007
expect![[r#"
1008-
[email protected]:6:20 ─ Rxx(1.0000)@test.qs:8:20 ─── [email protected]:14:21 ─
1009-
┆ ╘═════════
1010-
[email protected]:7:20 ─ Rxx(1.0000)@test.qs:8:20 ─────────────────────
1011-
[email protected]:10:20 ─ Rxx(1.0000)@test.qs:12:20 ── [email protected]:14:28 ─
1012-
┆ ╘═════════
1013-
[email protected]:11:20 ─ Rxx(1.0000)@test.qs:12:20 ────────────────────
1008+
[email protected]:6:20 ─ Rxx(1.0000)@test.qs:8:20 ─── [email protected]:14:21 ─
1009+
┆ ╘═════════
1010+
[email protected]:7:20 ─ Rxx(1.0000)@test.qs:8:20 ─────────────────────
1011+
[email protected]:10:20 ─ Rxx(1.0000)@test.qs:12:20 ── [email protected]:14:28 ─
1012+
┆ ╘═════════
1013+
[email protected]:11:20 ─ Rxx(1.0000)@test.qs:12:20 ────────────────────
10141014
"#]]
10151015
.assert_eq(&circ);
10161016
}

0 commit comments

Comments
 (0)