mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
lib.types.functionTo: preserve functionArgs
Previously if function in defs had set pattern in argument, this information would be lost. This keeps functionArgs in set pattern, by using functor and `__functionArgs` that is later used by `lib.functionArgs`.
This commit is contained in:
parent
2d1fce7ff9
commit
0de1d18795
2 changed files with 22 additions and 2 deletions
|
@ -873,8 +873,13 @@ rec {
|
|||
description = "function that evaluates to a(n) ${optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType}";
|
||||
descriptionClass = "composite";
|
||||
check = isFunction;
|
||||
merge = loc: defs:
|
||||
fnArgs: (mergeDefinitions (loc ++ [ "<function body>" ]) elemType (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs)).mergedValue;
|
||||
merge = loc: defs: {
|
||||
# An argument attribute has a default when it has a default in all definitions
|
||||
__functionArgs = lib.zipAttrsWith (_: lib.all (x: x)) (
|
||||
lib.map (fn: lib.functionArgs fn.value) defs
|
||||
);
|
||||
__functor = _: callerArgs: (mergeDefinitions (loc ++ [ "<function body>" ]) elemType (map (fn: { inherit (fn) file; value = fn.value callerArgs; }) defs)).mergedValue;
|
||||
};
|
||||
getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "<function body>" ]);
|
||||
getSubModules = elemType.getSubModules;
|
||||
substSubModules = m: functionTo (elemType.substSubModules m);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue