feat(tvix/eval): implement 'builtins.filter'

This is a little ugly because the plain Iterator::filter method can
not be used (it does not support fallible primitives), so we need to
resort to an `Iterator::filter_map` and deal with the wrapping in
Options everywhere.

This prevents use of `?` which introduces the need for some matching,
but it's not *too* bad.

Change-Id: Ie2c3c0c9756c4c627176f64fb4e0054e717c26d1
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6765
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
Vincent Ambo 2022-09-23 03:14:34 +03:00 committed by tazjin
parent 1015f2f8e7
commit f816813d41
4 changed files with 44 additions and 1 deletions

View file

@ -175,7 +175,7 @@ impl<'o> VM<'o> {
/// Construct an error from the given ErrorKind and the source
/// span of the current instruction.
fn error(&self, kind: ErrorKind) -> Error {
pub fn error(&self, kind: ErrorKind) -> Error {
Error {
kind,
span: self.current_span(),