feat(tvix/eval): thunk binary operations and select expressions

With this, most cases of `fix` in attribute sets will work correctly.
A simple test exercising both has been added.

Change-Id: I70fd431177bb6e48ecb33a87518b050c4c3d1c09
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6437
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2022-09-03 16:18:06 +03:00 committed by tazjin
parent 9f379ef6df
commit abdfa7459e
3 changed files with 22 additions and 2 deletions

View file

@ -0,0 +1 @@
{ a = 1; b = 21; c = 42; }

View file

@ -0,0 +1,7 @@
let
fix = f: let x = f x; in x;
in fix(self: {
a = 1;
b = self.a + 20;
c = self.b * 2;
})