feat(tvix/eval): Implement builtins.sort

This is a bit tricky because the comparator can throw errors, so we
need to propagate them out if they exist and try to avoid sorting
forever by returning a reasonable ordering in this case (as
short-circuiting is not available).

Co-Authored-By: Vincent Ambo <tazjin@tvl.su>
Change-Id: Icae1d30f43ec1ae64b2ba51e73ee467605686792
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7072
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
Griffin Smith 2022-10-23 13:50:07 -04:00 committed by tazjin
parent d0a836b0e1
commit 3412ae4956
4 changed files with 46 additions and 3 deletions

View file

@ -1,5 +1,5 @@
//! This module implements Nix lists.
use std::ops::Deref;
use std::ops::{Deref, DerefMut};
use crate::errors::ErrorKind;
use crate::vm::VM;
@ -135,3 +135,9 @@ impl Deref for NixList {
&self.0
}
}
impl DerefMut for NixList {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}