lib/types: Improved functionTo merging

Now type checks the resulting function values and allows mkMerge and co.
Also indicates that the type check is done in the function body

Co-Authored-By: Robert Hensing <robert@roberthensing.nl>

Changed files
+1 -1
lib
+1 -1
lib/types.nix
···
name = "function that evaluates to a(n) ${elemType.name}";
check = isFunction;
merge = loc: defs:
-
fnArgs: elemType.merge loc (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs);
getSubOptions = elemType.getSubOptions;
getSubModules = elemType.getSubModules;
substSubModules = m: functionTo (elemType.substSubModules m);
···
name = "function that evaluates to a(n) ${elemType.name}";
check = isFunction;
merge = loc: defs:
+
fnArgs: (mergeDefinitions (loc ++ [ "[function body]" ]) elemType (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs)).mergedValue;
getSubOptions = elemType.getSubOptions;
getSubModules = elemType.getSubModules;
substSubModules = m: functionTo (elemType.substSubModules m);