diff --git a/vscode/src/debugger/session.ts b/vscode/src/debugger/session.ts index 26a85a12cf..0db074e737 100644 --- a/vscode/src/debugger/session.ts +++ b/vscode/src/debugger/session.ts @@ -795,6 +795,22 @@ export class QscDebugSession extends LoggingDebugSession { {}, ); const state = await this.debugService.captureQuantumState(); + + // When there is no quantum state, return a single variable with a message + // for the user. + if (state.length == 0) { + response.body = { + variables: [ + { + name: "None", + value: "No qubits allocated", + variablesReference: 0, + }, + ], + }; + break; + } + const variables: DebugProtocol.Variable[] = state.map((entry) => { const variable: DebugProtocol.Variable = { name: entry.name, diff --git a/wasm/src/debug_service.rs b/wasm/src/debug_service.rs index 0aa0b09311..aba559f3f1 100644 --- a/wasm/src/debug_service.rs +++ b/wasm/src/debug_service.rs @@ -38,14 +38,18 @@ impl DebugService { pub fn capture_quantum_state(&mut self) -> IQuantumStateList { let state = self.debugger_mut().capture_quantum_state(); - let entries = state - .0 - .iter() - .map(|(id, value)| QuantumState { - name: qsc::format_state_id(id, state.1), - value: fmt_complex(value), - }) - .collect::>(); + let entries = if state.1 > 0 { + state + .0 + .iter() + .map(|(id, value)| QuantumState { + name: qsc::format_state_id(id, state.1), + value: fmt_complex(value), + }) + .collect::>() + } else { + Vec::new() + }; QuantumStateList { entries }.into() }