handle duration overflow error (#2616)

* handle duration overflow error

* handle checked_add_signed result
This commit is contained in:
Samuel Vanderwaal
2020-10-08 17:51:47 -08:00
committed by GitHub
parent 973a8ee8f3
commit 2b076369e0
2 changed files with 32 additions and 3 deletions

View File

@@ -199,9 +199,13 @@ pub fn compute_values(
let result = match operator {
Operator::Plus => {
// FIXME: Not sure if I could do something better with the Span.
let y = Primitive::into_chrono_duration(rhs.clone(), Span::unknown())
.expect("Could not convert nushell Duration into chrono Duration.");
Ok(x.checked_add_signed(y).expect("Data overflow."))
match Primitive::into_chrono_duration(rhs.clone(), Span::unknown()) {
Ok(y) => match x.checked_add_signed(y) {
Some(value) => Ok(value),
None => Err(("Date", "Duration and date addition overflow")),
},
Err(_) => Err(("Date", "Duration overflow")),
}
}
_ => Err((left.type_name(), right.type_name())),
}?;