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)
This commit is contained in:
parent
2bd2119bf3
commit
e07870c95e
|
@ -132,6 +132,16 @@ runTests {
|
||||||
expected = [ 1 1 0 ];
|
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
|
# STRINGS
|
||||||
|
|
||||||
testConcatMapStrings = {
|
testConcatMapStrings = {
|
||||||
|
|
|
@ -334,7 +334,10 @@ rec {
|
||||||
has the same return type and semantics as builtins.functionArgs.
|
has the same return type and semantics as builtins.functionArgs.
|
||||||
setFunctionArgs : (a → b) → Map String Bool.
|
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
|
/* Check whether something is a function or something
|
||||||
annotated with function args.
|
annotated with function args.
|
||||||
|
|
Loading…
Reference in New Issue