From f866275df2e7bc2cbf5c87dfca217cd17365db53 Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Sat, 1 Feb 2020 10:25:55 -0600 Subject: [PATCH] DEV: Refactor get_binding to simplify the logic. --- src/build/opcode/vm.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/build/opcode/vm.rs b/src/build/opcode/vm.rs index 19f7ce5..6fb58b6 100644 --- a/src/build/opcode/vm.rs +++ b/src/build/opcode/vm.rs @@ -1080,14 +1080,13 @@ impl VM { name: &str, pos: &Position, ) -> Result<(Rc, Position), Error> { - if name == "self" { - if let Some((val, pos)) = self.self_stack.last() { - return Ok((val.clone(), pos.clone())); - } - return Err(Error::new(format!("No such binding {}", name), pos.clone())); - } - match self.symbols.get(name) { - Some((ref v, ref pos)) => Ok((v.clone(), pos.clone())), + let tpl = if name == "self" { + self.self_stack.last().cloned() + } else { + self.symbols.get(name) + }; + match tpl { + Some((v, pos)) => Ok((v, pos)), None => { return Err(Error::new(format!("No such binding {}", name), pos.clone())); }