diff options
| author | David Arnold <dgx.arnold@gmail.com> | 2021-07-23 14:10:31 -0500 |
|---|---|---|
| committer | github-actions[bot] <github-actions[bot]@users.noreply.github.com> | 2021-08-03 22:07:22 +0000 |
| commit | e07870c95e51f34fcd40a7f353c96f84b23e24bf (patch) | |
| tree | 55ec2b2bffa4f7d693b23c49dab337fb481ffc71 | |
| parent | Merge pull request #131938 from chuahou/update-flameshot-backport-21.05 (diff) | |
| download | nixpkgs-e07870c95e51f34fcd40a7f353c96f84b23e24bf.tar.gz | |
lib: fix functionArgs for functors
`functionArgs` should give valid results on
functions that have been identified with `lib.isFunction`
instead of erroring out.
(cherry picked from commit cf8e219b7e3c8933d6301175f2611990c5281ae9)
| -rw-r--r-- | lib/tests/misc.nix | 10 | ||||
| -rw-r--r-- | lib/trivial.nix | 5 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 0d249968402d..4b2e5afc1d60 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -132,6 +132,16 @@ runTests { expected = [ 1 1 0 ]; }; + testFunctionArgsFunctor = { + expr = functionArgs { __functor = self: { a, b }: null; }; + expected = { a = false; b = false; }; + }; + + testFunctionArgsSetFunctionArgs = { + expr = functionArgs (setFunctionArgs (args: args.x) { x = false; }); + expected = { x = false; }; + }; + # STRINGS testConcatMapStrings = { diff --git a/lib/trivial.nix b/lib/trivial.nix index f6f5da5998ff..48a1b128e2e2 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -334,7 +334,10 @@ rec { has the same return type and semantics as builtins.functionArgs. setFunctionArgs : (a → b) → Map String Bool. */ - functionArgs = f: f.__functionArgs or (builtins.functionArgs f); + functionArgs = f: + if f ? __functor + then f.__functionArgs or (lib.functionArgs (f.__functor f)) + else builtins.functionArgs f; /* Check whether something is a function or something annotated with function args. |
