diff options
author | jhahn <mail.jhahn@gmail.com> | 2022-11-09T23·47+0000 |
---|---|---|
committer | jrhahn <mail.jhahn@gmail.com> | 2022-11-10T13·12+0000 |
commit | d00030128e465c8351412b1aefb4260681d8b497 (patch) | |
tree | 0c546e16df84ef098c7eb31322736de3e51c12a1 /tvix/eval/src/errors.rs | |
parent | 40826e664de6c5d243ced77fd6662b004b8fef49 (diff) |
feat(tvix/eval): detect division by zero r/5276
This detects if the second argument of a division is a zero (either as integer or as float). If so, an error message is displayed. This fixes b/219. Change-Id: I50203d14a71482bc757832a2c8dee08eb7d35c49 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7258 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/eval/src/errors.rs')
-rw-r--r-- | tvix/eval/src/errors.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tvix/eval/src/errors.rs b/tvix/eval/src/errors.rs index 8f782cb86151..ba9d6cb98ba6 100644 --- a/tvix/eval/src/errors.rs +++ b/tvix/eval/src/errors.rs @@ -20,6 +20,8 @@ pub enum ErrorKind { Abort(String), AssertionFailed, + DivisionByZero, + DuplicateAttrsKey { key: String, }, @@ -215,6 +217,8 @@ impl Display for Error { ErrorKind::Abort(msg) => write!(f, "evaluation aborted: {}", msg), ErrorKind::AssertionFailed => write!(f, "assertion failed"), + ErrorKind::DivisionByZero => write!(f, "division by zero"), + ErrorKind::DuplicateAttrsKey { key } => { write!(f, "attribute key '{}' already defined", key) } @@ -656,6 +660,7 @@ impl Error { | ErrorKind::TailEmptyList | ErrorKind::TypeError { .. } | ErrorKind::Incomparable { .. } + | ErrorKind::DivisionByZero | ErrorKind::DynamicKeyInScope(_) | ErrorKind::UnknownStaticVariable | ErrorKind::UnknownDynamicVariable(_) @@ -717,6 +722,7 @@ impl Error { ErrorKind::FromJsonError { .. } => "E030", ErrorKind::UnexpectedArgument { .. } => "E031", ErrorKind::RelativePathResolution(_) => "E032", + ErrorKind::DivisionByZero => "E033", // Special error code that is not part of the normal // ordering. |