diff options
author | sterni <sternenseemann@systemli.org> | 2023-06-13T13·15+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-06-15T11·01+0000 |
commit | 0005737f110aa7667aec3ca3bb5bc7d4907a8664 (patch) | |
tree | 9c7b46cfb23ea7ae3774ec69db942f63126eeb8e /tvix/eval/src/tests/tvix_tests/notyetpassing | |
parent | 9c7d1361c5a049634200c0153d8dcfec6931e89a (diff) |
fix(tvix/eval): make tvix display values like nix-instantiate(1) r/6308
In order for the test suite we have currently to be comparable to C++ Nix, we need to display values in the same way. This was largely the case except in some weird cases. * <CODE> for thunks and <CYCLE> for repeated thunks (?) are already in use. <CODE> formatting is tested by the oracle test suite already. * Instead of lambda, we need to use <LAMBDA> * <<primop>> and <<primop-app>> (a formatting C++ Nix uses nowhere) now are <PRIMOP> and <PRIMOP-APP>. We'll probably want to have a fancier display of values (in a separate trait) down the line. This could be used for interactive usage, e.g. the REPL or a potential debugger. There is a peculiarity with C++ Nix 2.3 formatting primops: import is considered a <<PRIMOP-APP>>, since it is internally implemented by means of scopedImport. This implementation detail no longer leaks in C++ Nix 2.13 nor in Tvix. <CYCLE> display is untested at the moment, since we exhibit a discrepancy to C++ Nix 2.3. Our current detection is more similar to C++ Nix 2.13—luckily it is also the more consistent of the two. See also b/245. Change-Id: I1d534434b02e470bf5475b3758920ea81e3420dc Reviewed-on: https://cl.tvl.fyi/c/depot/+/8760 Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/eval/src/tests/tvix_tests/notyetpassing')
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.exp | 1 | ||||
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.nix | 34 |
2 files changed, 35 insertions, 0 deletions
diff --git a/tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.exp b/tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.exp new file mode 100644 index 000000000000..9c44023f02dd --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.exp @@ -0,0 +1 @@ +[ { car = 42; cdr = «repeated»; } [ «repeated» «repeated» «repeated» ] { val = 42; wal = «repeated»; xal = «repeated»; } { tail1 = «repeated»; tail2 = «repeated»; val = 42; } { tail1 = «repeated»; tail2 = «repeated»; val = 21; } ] diff --git a/tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.nix b/tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.nix new file mode 100644 index 000000000000..bd3b1429cef3 --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/notyetpassing/eval-okay-cycle-display-cpp-nix-2.13.nix @@ -0,0 +1,34 @@ +let + linkedList = { + car = 42; + cdr = linkedList; + }; + + list = [ + linkedList + linkedList + linkedList + ]; + + set = { + val = 42; + wal = set; + xal = set; + }; + + multiTail = { + val = 42; + tail1 = multiTail; + tail2 = multiTail; + }; +in + +[ + linkedList + list + set + + # In C++ Nix 2.3 these would be displayed differently + multiTail + (let multiTail = { val = 21; tail1 = multiTail; tail2 = multiTail; }; in multiTail) +] |