feat(tvix/eval): implement 'throw' and 'abort' builtins

These do essentially the same, but return different error variants as
upstream Nix considers `throw` to be (sometimes) catchable.

Change-Id: I1a9ea84567d46fb37287dbf3f3f67052f9382cca
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6259
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
Vincent Ambo 2022-08-24 17:13:00 +03:00 committed by tazjin
parent 3d0280ec03
commit bd0fc69f07
2 changed files with 18 additions and 1 deletions

View file

@ -38,6 +38,10 @@ pub enum ErrorKind {
ParseErrors(Vec<rnix::parser::ParseError>),
AssertionFailed,
// These are user-generated errors through builtins.
Throw(String),
Abort(String),
}
#[derive(Clone, Debug)]