From 28a4afd04eb8b4e94d5da14e1c4e87aea226dea0 Mon Sep 17 00:00:00 2001 From: Tom Almeida <tommoa256@gmail.com> Date: Wed, 23 Jan 2019 15:27:46 +1100 Subject: [PATCH] Move from doing last status variable resolution from inside Variable::get_ref() to Shell::string() --- src/lib/shell/mod.rs | 4 +++- src/lib/shell/variables/mod.rs | 4 ---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/lib/shell/mod.rs b/src/lib/shell/mod.rs index 326f8ce3..3192ee9e 100644 --- a/src/lib/shell/mod.rs +++ b/src/lib/shell/mod.rs @@ -434,7 +434,9 @@ impl<'a> Expander for Shell { /// Expand a string variable given if its quoted / unquoted fn string(&self, name: &str, quoted: bool) -> Option<types::Str> { use ascii_helpers::AsciiReplace; - if quoted { + if name == "?" { + Some(types::Str::from(self.previous_status.to_string())) + } else if quoted { self.get::<types::Str>(name) } else { self.get::<types::Str>(name) diff --git a/src/lib/shell/variables/mod.rs b/src/lib/shell/variables/mod.rs index 3f241562..108a50b1 100644 --- a/src/lib/shell/variables/mod.rs +++ b/src/lib/shell/variables/mod.rs @@ -318,10 +318,6 @@ impl Variables { const GLOBAL_NS: &str = "global::"; const SUPER_NS: &str = "super::"; - if name == "?" { - return self.scopes().last()?.get("?"); - } - let mut up_namespace: isize = if name.starts_with(GLOBAL_NS) { name = &name[GLOBAL_NS.len()..]; // Go up as many namespaces as possible -- GitLab