// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
use qsc_data_structures::span::Span;
use qsc_data_structures::functors::FunctorApp;
use qsc_fir::fir::{PackageId, StoreItemId};
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct Frame {
pub span: Span,
pub id: StoreItemId,
pub caller: PackageId,
pub functor: FunctorApp,
}
#[derive(Debug, Default, Clone, PartialEq)]
pub struct CallStack {
frames: Vec<Frame>,
}
impl CallStack {
#[must_use]
pub fn is_empty(&self) -> bool {
self.frames.is_empty()
}
#[must_use]
pub fn len(&self) -> usize {
self.frames.len()
}
#[must_use]
pub fn into_frames(self) -> Vec<Frame> {
self.frames
}
pub fn push_frame(&mut self, frame: Frame) {
self.frames.push(frame);
}
pub fn pop_frame(&mut self) -> Option<Frame> {
self.frames.pop()
}
}microsoft/qdk
Publicmirrored fromhttps://github.com/microsoft/qdkAvailable
source/compiler/qsc_eval/src/debug.rs
45lines · modepreview