From 632a89529a6a951b83f805f4e1bb07d127b4e69c Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sat, 27 Feb 2021 21:01:02 +0100 Subject: [PATCH] Add a getter for Frame.loc This is necessary for Priroda. --- compiler/rustc_mir/src/interpret/eval_context.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/compiler/rustc_mir/src/interpret/eval_context.rs b/compiler/rustc_mir/src/interpret/eval_context.rs index 1ba87358b1c3d..6b796eb372199 100644 --- a/compiler/rustc_mir/src/interpret/eval_context.rs +++ b/compiler/rustc_mir/src/interpret/eval_context.rs @@ -226,6 +226,16 @@ impl<'mir, 'tcx, Tag> Frame<'mir, 'tcx, Tag> { } impl<'mir, 'tcx, Tag, Extra> Frame<'mir, 'tcx, Tag, Extra> { + /// Get the current location within the Frame. + /// + /// If this is `Err`, we are not currently executing any particular statement in + /// this frame (can happen e.g. during frame initialization, and during unwinding on + /// frames without cleanup code). + /// We basically abuse `Result` as `Either`. + pub fn current_loc(&self) -> Result { + self.loc + } + /// Return the `SourceInfo` of the current instruction. pub fn current_source_info(&self) -> Option<&mir::SourceInfo> { self.loc.ok().map(|loc| self.body.source_info(loc))