diff --git a/src/shell/assignments.rs b/src/shell/assignments.rs index 168713ea7f0fea5add8d0b57b83bf2c6a6916529..18809e543f733e25e9c747349d5b11193489cef8 100644 --- a/src/shell/assignments.rs +++ b/src/shell/assignments.rs @@ -62,38 +62,31 @@ impl<'a> VariableStore for Shell<'a> { for action in assignment_actions { match action { Ok(Action::UpdateArray(key, Operator::Equal, expression)) => { - let values = match value_check(self, &expression, key.kind) { - Ok(values) => match values { - ReturnValue::Vector(values) => values, - _ => unreachable!() - } + match value_check(self, &expression, key.kind) { + Ok(ReturnValue::Vector(values)) => self.variables.set_array(key.name, values), Err(why) => { eprintln!("ion: assignment error: {}", why); return FAILURE; } - }; - self.variables.set_array(key.name, values) + _ => unreachable!() + } } Ok(Action::UpdateArray(..)) => { eprintln!("ion: arithmetic operators on array expressions aren't supported yet."); return FAILURE; } Ok(Action::UpdateString(key, operator, expression)) => { - let value = match value_check(self, &expression, key.kind) { - Ok(value) => value, + match value_check(self, &expression, key.kind) { + Ok(ReturnValue::Str(value)) => { + if !integer_math(self, key, operator, &value) { + return FAILURE; + } + } Err(why) => { eprintln!("ion: assignment error: {}", why); return FAILURE; } - }; - - let value = match value { - ReturnValue::Str(value) => value, _ => unreachable!() - }; - - if !integer_math(self, key, operator, &value) { - return FAILURE; } } Err(why) => { @@ -123,14 +116,12 @@ impl<'a> VariableStore for Shell<'a> { match action { Ok(Action::UpdateArray(key, Operator::Equal, expression)) => { match value_check(self, &expression, key.kind) { - Ok(values) => match values { - ReturnValue::Vector(values) => env::set_var(key.name, values.join(" ")), - _ => unreachable!() - } + Ok(ReturnValue::Vector(values)) => env::set_var(key.name, values.join(" ")), Err(why) => { eprintln!("ion: assignment error: {}", why); return FAILURE; } + _ => unreachable!() } } Ok(Action::UpdateArray(..)) => { @@ -138,21 +129,17 @@ impl<'a> VariableStore for Shell<'a> { return FAILURE; } Ok(Action::UpdateString(key, operator, expression)) => { - let value = match value_check(self, &expression, key.kind) { - Ok(value) => value, + match value_check(self, &expression, key.kind) { + Ok(ReturnValue::Str(value)) => { + if !integer_math_export(&self, key, operator, &value) { + return FAILURE; + } + } Err(why) => { eprintln!("ion: assignment error: {}", why); return FAILURE; } - }; - - let value = match value { - ReturnValue::Str(value) => value, _ => unreachable!() - }; - - if !integer_math_export(&self, key, operator, &value) { - return FAILURE; } } Err(why) => {