44from bloqade import squin , gemini
55from bloqade .types import Qubit
66from bloqade .validation import KernelValidation
7- from bloqade .gemini .analysis import GeminiLogicalValidationAnalysis
87from bloqade .validation .kernel_validation import ValidationErrorGroup
8+ from bloqade .gemini .analysis .logical_validation import GeminiLogicalValidationAnalysis
99
1010
1111def test_if_stmt_invalid ():
12- @gemini .logical (verify = False )
12+ @gemini .logical . kernel (verify = False )
1313 def main ():
1414 q = squin .qalloc (3 )
1515
@@ -42,7 +42,7 @@ def main():
4242
4343def test_for_loop ():
4444
45- @gemini .logical
45+ @gemini .logical . kernel
4646 def valid_loop ():
4747 q = squin .qalloc (3 )
4848
@@ -53,7 +53,7 @@ def valid_loop():
5353
5454 with pytest .raises (ir .ValidationError ):
5555
56- @gemini .logical
56+ @gemini .logical . kernel
5757 def invalid_loop (n : int ):
5858 q = squin .qalloc (3 )
5959
@@ -64,11 +64,11 @@ def invalid_loop(n: int):
6464
6565
6666def test_func ():
67- @gemini .logical
67+ @gemini .logical . kernel
6868 def sub_kernel (q : Qubit ):
6969 squin .x (q )
7070
71- @gemini .logical
71+ @gemini .logical . kernel
7272 def main ():
7373 q = squin .qalloc (3 )
7474 sub_kernel (q [0 ])
@@ -77,14 +77,14 @@ def main():
7777
7878 with pytest .raises (ValidationErrorGroup ):
7979
80- @gemini .logical (inline = False )
80+ @gemini .logical . kernel (inline = False )
8181 def invalid ():
8282 q = squin .qalloc (3 )
8383 sub_kernel (q [0 ])
8484
8585
8686def test_clifford_gates ():
87- @gemini .logical
87+ @gemini .logical . kernel
8888 def main ():
8989 q = squin .qalloc (2 )
9090 squin .u3 (0.123 , 0.253 , 1.2 , q [0 ])
@@ -94,7 +94,7 @@ def main():
9494
9595 with pytest .raises (ir .ValidationError ):
9696
97- @gemini .logical (no_raise = False )
97+ @gemini .logical . kernel (no_raise = False )
9898 def invalid ():
9999 q = squin .qalloc (2 )
100100
@@ -109,11 +109,37 @@ def invalid():
109109 invalid .print (analysis = frame .entries )
110110
111111
112+ def test_terminal_measurement ():
113+ @gemini .logical .kernel (verify = False )
114+ def main ():
115+ q = squin .qalloc (3 )
116+ m = gemini .logical .terminal_measure (q )
117+ return m
118+
119+ main .print ()
120+
121+ with pytest .raises (ir .ValidationError ):
122+
123+ @gemini .logical .kernel (no_raise = False )
124+ def invalid ():
125+ q = squin .qalloc (3 )
126+ squin .x (q [0 ])
127+ m = gemini .logical .terminal_measure (q )
128+ another_m = gemini .logical .terminal_measure (q )
129+ return m , another_m
130+
131+ frame , _ = GeminiLogicalValidationAnalysis (invalid .dialects ).run_no_raise (
132+ invalid
133+ )
134+
135+ invalid .print (analysis = frame .entries )
136+
137+
112138def test_multiple_errors ():
113139 did_error = False
114140 try :
115141
116- @gemini .logical
142+ @gemini .logical . kernel
117143 def main (n : int ):
118144 q = squin .qalloc (3 )
119145 m = squin .qubit .measure (q [0 ])
0 commit comments