Skip to content

Commit 886523e

Browse files
committed
Re-introduced fallback
1 parent cae010f commit 886523e

File tree

4 files changed

+14
-29
lines changed

4 files changed

+14
-29
lines changed

src/bloqade/qasm2/emit/base.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,7 @@ def emit_block(self, frame: EmitQASM2Frame, block: ir.Block) -> ast.Node | None:
5454
for stmt in block.stmts:
5555
result = self.frame_eval(frame, stmt)
5656
if isinstance(result, tuple):
57-
if len(result) == 0:
58-
continue
59-
keys = getattr(stmt, "_results", None) or getattr(stmt, "results", None)
60-
if keys is None:
61-
continue
62-
frame.set_values(keys, result)
57+
frame.set_values(stmt.results, result)
6358
return None
6459

6560
A = TypeVar("A")
@@ -84,3 +79,6 @@ def assert_node(
8479

8580
def reset(self):
8681
pass
82+
83+
def eval_fallback(self, frame: EmitQASM2Frame, node: ir.Statement):
84+
return tuple(None for _ in range(len(node.results)))

src/bloqade/qasm2/emit/gate.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,5 @@ def emit_err(self, emit: EmitQASM2Gate, frame: EmitQASM2Frame, stmt):
8787
raise RuntimeError(f"illegal statement {stmt.name} for QASM2 gate routine")
8888

8989
@interp.impl(func.Return)
90-
@interp.impl(func.ConstantNone)
9190
def ignore(self, emit: EmitQASM2Gate, frame: EmitQASM2Frame, stmt):
9291
return ()

src/bloqade/stim/emit/stim_str.py

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ def reset(self):
5252
self.io.truncate(0)
5353
self.io.seek(0)
5454

55+
def eval_fallback(self, frame: EmitStimFrame, node: ir.Statement) -> tuple:
56+
return tuple("" for _ in range(len(node.results)))
57+
5558

5659
@func.dialect.register(key="emit.stim")
5760
class FuncEmit(interp.MethodTable):
@@ -66,14 +69,3 @@ def emit_func(self, emit: EmitStimMain, frame: EmitStimFrame, stmt: func.Functio
6669
frame.set_values(stmt_.results, res)
6770

6871
return ()
69-
70-
@interp.impl(func.ConstantNone)
71-
def emit_const_none(
72-
self, emit: EmitStimMain, frame: EmitStimFrame, stmt: func.ConstantNone
73-
):
74-
frame.set(stmt.result, "")
75-
return (frame.get(stmt.result),)
76-
77-
@interp.impl(func.Return)
78-
def emit_return(self, emit: EmitStimMain, frame: EmitStimFrame, stmt: func.Return):
79-
return ()

test/qasm2/emit/test_qasm2.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import io
12
from pathlib import Path
23
from contextlib import redirect_stdout
34

@@ -29,15 +30,10 @@ def main():
2930
target = qasm2.emit.QASM2(custom_gate=True)
3031
ast = target.emit(main)
3132
filename = "t_qasm2.qasm"
32-
# Read the filename and store in target
33-
with open(Path(__file__).parent.resolve() / filename, "r") as io:
34-
target = io.read()
35-
# Output into filename in the current directory
36-
out_path = Path(__file__).parent.resolve() / filename
37-
with open(out_path, "w") as f:
38-
with redirect_stdout(f):
39-
qasm2.parse.pprint(ast)
40-
# Read the filename again and store in generated
41-
with open(Path(__file__).parent.resolve() / filename, "r") as io:
42-
generated = io.read()
33+
with open(Path(__file__).parent.resolve() / filename, "r") as txt:
34+
target = txt.read()
35+
buf = io.StringIO()
36+
with redirect_stdout(buf):
37+
qasm2.parse.pprint(ast)
38+
generated = buf.getvalue()
4339
assert generated.strip() == target.strip()

0 commit comments

Comments
 (0)