diff options
author | Adam Joseph <adam@westernsemico.com> | 2022-11-24T06·25-0800 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-11-25T00·48+0000 |
commit | 325a7d6fa98ae7dbeabf1d8c1c34c2aed15074dd (patch) | |
tree | b8b93df32ee5f48c2a4f6aae11605278070c240a /tvix | |
parent | 11874d3a7119b9a02abdbb406ca9a84c5db7fae7 (diff) |
test(tvix/eval): add eval-okay-closure-pointer-compare r/5310
This test case checks two things: * A sanity check that "pointer equality for functions" means not just the lambda, but also the upvalues. * To be pointer-equal, it is not enough for the upvalues to be normal-form equal (i.e. `nix_eq()`-equal); the upvalues must be *pointer*-equal. The second part of the test case checks for this. Signed-off-by: Adam Joseph <adam@westernsemico.com> Change-Id: I4e59327a6f199b8212e97197b212e3c3934bb3f0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7372 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix')
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.exp | 1 | ||||
-rw-r--r-- | tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.nix | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.exp b/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.exp new file mode 100644 index 000000000000..c3bb809c9ffb --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.exp @@ -0,0 +1 @@ +[ false false ] diff --git a/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.nix b/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.nix new file mode 100644 index 000000000000..7c4333668df8 --- /dev/null +++ b/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.nix @@ -0,0 +1,14 @@ +# For an explanation of this behavior see //tvix/docs/value-pointer-equality.md +let + g = x: + owo: "th" + x; +in +[ + ( + { q = g "ia"; } == { q = g ("i"+"a"); } + ) + + ( + [ (g "ia") ] == [ (g ("i"+"a")) ] + ) +] |