Merge pull request #110672 from Profpatsch/lib-add-traceFnSeqN

lib/debug: add traceFnSeqN

Changed files
+23 -1
lib
+22
lib/debug.nix
···
/* A combination of `traceVal` and `traceSeqN`. */
traceValSeqN = traceValSeqNFn id;
+
/* Trace the input and output of a function `f` named `name`,
+
both down to `depth`.
+
+
This is useful for adding around a function call,
+
to see the before/after of values as they are transformed.
+
+
Example:
+
traceFnSeqN 2 "id" (x: x) { a.b.c = 3; }
+
trace: { fn = "id"; from = { a.b = {…}; }; to = { a.b = {…}; }; }
+
=> { a.b.c = 3; }
+
*/
+
traceFnSeqN = depth: name: f: v:
+
let res = f v;
+
in lib.traceSeqN
+
(depth + 1)
+
{
+
fn = name;
+
from = v;
+
to = res;
+
}
+
res;
+
# -- TESTING --
+1 -1
lib/default.nix
···
assertMsg assertOneOf;
inherit (self.debug) addErrorContextToAttrs traceIf traceVal traceValFn
traceXMLVal traceXMLValMarked traceSeq traceSeqN traceValSeq
-
traceValSeqFn traceValSeqN traceValSeqNFn traceShowVal
+
traceValSeqFn traceValSeqN traceValSeqNFn traceFnSeqN traceShowVal
traceShowValMarked showVal traceCall traceCall2 traceCall3
traceValIfNot runTests testAllTrue traceCallXml attrNamesToStr;
inherit (self.misc) maybeEnv defaultMergeArg defaultMerge foldArgs