snix/tvix/eval/src/tests/tvix_tests/eval-okay-closure-pointer-compare.nix
Adam Joseph 325a7d6fa9 test(tvix/eval): add eval-okay-closure-pointer-compare
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
2022-11-25 00:48:31 +00:00

14 lines
218 B
Nix

# 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")) ]
)
]