Skip to content

Commit e4bff4f

Browse files
authored
Enable debug lowering for Interpreter::from (microsoft#2248)
1 parent 9c16d9f commit e4bff4f

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

compiler/qsc/src/interpret.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ impl Interpreter {
260260
}
261261

262262
pub fn from(
263+
dbg: bool,
263264
store: PackageStore,
264265
source_package_id: qsc_hir::hir::PackageId,
265266
capabilities: TargetCapabilityFlags,
@@ -277,7 +278,7 @@ impl Interpreter {
277278

278279
let mut fir_store = fir::PackageStore::new();
279280
for (id, unit) in compiler.package_store() {
280-
let mut lowerer = qsc_lowerer::Lowerer::new();
281+
let mut lowerer = qsc_lowerer::Lowerer::new().with_debug(dbg);
281282
let pkg = lowerer.lower_package(&unit.package, &fir_store);
282283
fir_store.insert(map_hir_package_to_fir(id), pkg);
283284
}
@@ -310,7 +311,7 @@ impl Interpreter {
310311
lines: 0,
311312
capabilities,
312313
fir_store,
313-
lowerer: qsc_lowerer::Lowerer::new(),
314+
lowerer: qsc_lowerer::Lowerer::new().with_debug(dbg),
314315
expr_graph: None,
315316
env: Env::default(),
316317
sim: sim_circuit_backend(),
@@ -1060,6 +1061,17 @@ impl Debugger {
10601061
})
10611062
}
10621063

1064+
pub fn from(interpreter: Interpreter, position_encoding: Encoding) -> Self {
1065+
let source_package_id = interpreter.source_package;
1066+
let unit = interpreter.fir_store.get(source_package_id);
1067+
let entry_exec_graph = unit.entry_exec_graph.clone();
1068+
Self {
1069+
interpreter,
1070+
position_encoding,
1071+
state: State::new(source_package_id, entry_exec_graph, None),
1072+
}
1073+
}
1074+
10631075
/// Resumes execution with specified `StepAction`.
10641076
/// # Errors
10651077
/// Returns a vector of errors if evaluating the entry point fails.

compiler/qsc/src/interpret/tests.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1928,6 +1928,7 @@ mod given_interpreter {
19281928
let package_id = store.insert(unit);
19291929

19301930
let mut interpreter = Interpreter::from(
1931+
false,
19311932
store,
19321933
package_id,
19331934
capabilities,

pip/src/interop.rs

+1
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ fn create_interpreter_from_ast(
558558
let source_package_id = store.insert(unit);
559559

560560
interpret::Interpreter::from(
561+
false,
561562
store,
562563
source_package_id,
563564
capabilities,

0 commit comments

Comments
 (0)