summaryrefslogtreecommitdiff
path: root/pkgs/development/python-modules/rangehttpserver
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-01-31 14:25:07 +0100
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2021-01-31 15:35:17 +0100
commitd9a7d03da8c58aa863911506ae3153729f8931da (patch)
treec9d70c6696c1cea8fc04793f9e58f88814996262 /pkgs/development/python-modules/rangehttpserver
parent552d7182874ef1b8fcf25c55d3777719a5ec7bfb (diff)
lib/generators: fix toPretty throwing on (partially applied) builtins
An high level example case of this problem occuring can be found below: nix-repl> lib.generators.toPretty {} (lib.concatStringsSep "\n") error: 'functionArgs' requires a function, at /home/lukas/src/nix/nixpkgs/lib/trivial.nix:334:42 However this does not happen on other partially applied functions: nix-repl> lib.generators.toPretty {} (lib.concatMapStringsSep "\n") "<function>" The issue, as it turns out is that while builtins are functions, builtins.functionArgs throws if is passed a builtin or a partially applied builtin: nix-repl> lib.generators.toPretty {} builtins.toString error: 'functionArgs' requires a function, at /home/lukas/src/nix/nixpkgs/lib/trivial.nix:334:42 nix-repl> lib.generators.toPretty {} (builtins.foldl' (a: b: a + b)) error: 'functionArgs' requires a function, at /home/lukas/src/nix/nixpkgs/lib/trivial.nix:334:42 I'm pretty sure this qualifies as a nix bug and should be filed accordingly, but we can work around it in lib.generators.toPretty by using tryEval and falling back to {} which functionArgs _should_ return for builtins. The nix behavior is inconsistent to say the least: nix-repl> builtins.functionArgs builtins.functionArgs error: 'functionArgs' requires a function, at (string):1:1 nix-repl> builtins.typeOf builtins.functionArgs "lambda" builtins.functionArgs (a: 1 + a) { } nix-repl> builtins.typeOf (a: 1 + a) "lambda"
Diffstat (limited to 'pkgs/development/python-modules/rangehttpserver')
0 files changed, 0 insertions, 0 deletions