mirror of
https://github.com/NixOS/nix.git
synced 2025-11-18 16:29:36 +01:00
broken, but now the evaluator checks for it to prevent Nix
expressions from relying on undefined behaviour. Equality tests are
implemented using a shallow pointer equality test between ATerms.
However, because attribute sets are lazy and contain position
information, this can give false positives. For instance,
previously
let y = {x = 1;}; in y == y
evaluated to true, while the equivalent expression
{x = 1;} == {x = 1;}
evaluated to false. So disallow these tests for now. (Eventually
we may want to implement deep equality tests for attribute sets,
like lib.eqStrict.)
* Idem: disallow comparisons between functions.
* Implemented deep comparisons of lists. This had the same problem as
attribute sets - the elements in the list weren't evaluated. For
instance,
["xy"] == [("x" + "y")]
evaluated to false. Now it works properly.
|
||
|---|---|---|
| .. | ||
| bin2c | ||
| boost | ||
| bsdiff-4.3 | ||
| libexpr | ||
| libmain | ||
| libstore | ||
| libutil | ||
| nix-env | ||
| nix-hash | ||
| nix-instantiate | ||
| nix-log2xml | ||
| nix-setuid-helper | ||
| nix-store | ||
| nix-worker | ||
| aterm-helper.pl | ||
| Makefile.am | ||