forked from mirrors/nixpkgs
7203788068
Closes #168327 The issue reported there can be demonstrated with the following expression: → nix-instantiate --eval -E "with import ./. {}; pkgs.lib.options.showDefs [ { file = \"foo\"; value = pkgs.rust.packages.stable.buildRustPackages; } ]" error: attempt to call something which is not a function but a string at /home/ma27/Projects/nixpkgs/lib/trivial.nix:442:35: 441| isFunction = f: builtins.isFunction f || 442| (f ? __functor && isFunction (f.__functor f)); | ^ 443| Basically, if a `__functor` is in an attribute-set at depth-limit, `__functor` will be set to `"<unevaluated>"`. This however breaks `lib.isFunction` which checks for a `__functor` by invoking `__functor` with `f` itself. The same issue - "magic" attributes being shadowed by `withRecursion` - also applies to others such as `__pretty`/`__functionArgs`/`__toString`. Since these attributes have a low-risk of causing a stack overflow (because these are flat attr-sets or even functions), ignoring them in `withRecursion` seems like a valid solution. |
||
---|---|---|
.. | ||
systems | ||
tests | ||
asserts.nix | ||
attrsets.nix | ||
cli.nix | ||
customisation.nix | ||
debug.nix | ||
default.nix | ||
deprecated.nix | ||
fetchers.nix | ||
filesystem.nix | ||
fixed-points.nix | ||
flake.nix | ||
generators.nix | ||
kernel.nix | ||
licenses.nix | ||
lists.nix | ||
meta.nix | ||
minver.nix | ||
modules.nix | ||
options.nix | ||
sources.nix | ||
strings-with-deps.nix | ||
strings.nix | ||
trivial.nix | ||
types.nix | ||
versions.nix | ||
zip-int-bits.nix |