fix(tvix/eval): wrap dynamic resolution in an extra thunk

Without this change it was possible to cause situations (see the new
test) in which a `with`-namespace was forced prematurely.

Change-Id: I879ea7763b43edc693feace2c73c890d426fafd3
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7031
Autosubmit: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Reviewed-by: Adam Joseph <adam@westernsemico.com>
This commit is contained in:
Vincent Ambo 2022-10-17 17:51:38 +03:00 committed by clbot
parent 0063e7e913
commit 13a5e7dd5b
4 changed files with 16 additions and 3 deletions

View file

@ -0,0 +1 @@
42

View file

@ -0,0 +1,5 @@
# The 'namespace' of a with should only be evaluated if an identifier
# from it is actually accessed.
with (abort "should not be evaluated");
let a = dynamic; in 42

View file

@ -1,6 +1,6 @@
# The 'namespace' of a with should only be evaluated if an identifier
# from it is actually accessed.
with (builtins.throw "should not occur");
with (abort "should not be evaluated");
42