forked from mirrors/nixpkgs
lib: fix functionArgs for functors
`functionArgs` should give valid results on functions that have been identified with `lib.isFunction` instead of erroring out.
This commit is contained in:
parent
d905ae22c6
commit
cf8e219b7e
|
@ -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 = {
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue