diff options
| author | Ralf Jung <post@ralfj.de> | 2022-09-18 19:08:14 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2022-09-18 20:51:04 +0200 |
| commit | 9fa3171015c63edc541d45583f2a24af3fa4d2bc (patch) | |
| tree | c571709b657777b602d35994d8638880b26e48cd /compiler/rustc_const_eval/src/interpret | |
| parent | a29f341a8ac4e9325a5e37027b4215f50a76d06f (diff) | |
| download | rust-9fa3171015c63edc541d45583f2a24af3fa4d2bc.tar.gz rust-9fa3171015c63edc541d45583f2a24af3fa4d2bc.zip | |
interpret: expose generate_stacktrace without full InterpCx
Diffstat (limited to 'compiler/rustc_const_eval/src/interpret')
| -rw-r--r-- | compiler/rustc_const_eval/src/interpret/eval_context.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/rustc_const_eval/src/interpret/eval_context.rs b/compiler/rustc_const_eval/src/interpret/eval_context.rs index d37eaeed095..3177537fee2 100644 --- a/compiler/rustc_const_eval/src/interpret/eval_context.rs +++ b/compiler/rustc_const_eval/src/interpret/eval_context.rs @@ -929,11 +929,13 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { } #[must_use] - pub fn generate_stacktrace(&self) -> Vec<FrameInfo<'tcx>> { + pub fn generate_stacktrace_from_stack( + stack: &[Frame<'mir, 'tcx, M::Provenance, M::FrameExtra>], + ) -> Vec<FrameInfo<'tcx>> { let mut frames = Vec::new(); // This deliberately does *not* honor `requires_caller_location` since it is used for much // more than just panics. - for frame in self.stack().iter().rev() { + for frame in stack.iter().rev() { let lint_root = frame.current_source_info().and_then(|source_info| { match &frame.body.source_scopes[source_info.scope].local_data { mir::ClearCrossCrate::Set(data) => Some(data.lint_root), @@ -947,6 +949,11 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> { trace!("generate stacktrace: {:#?}", frames); frames } + + #[must_use] + pub fn generate_stacktrace(&self) -> Vec<FrameInfo<'tcx>> { + Self::generate_stacktrace_from_stack(self.stack()) + } } #[doc(hidden)] |
