lix/src
Maximilian Bosch 7c76964daa
libexpr: misc improvements for proper error position
When working on some more complex Nix code, there are sometimes rather
unhelpful or misleading error messages, especially if coerce-errors are
thrown.

This patch is a first steps towards improving that. I'm happy to file
more changes after that, but I'd like to gather some feedback first.

To summarize, this patch does the following things:

* Attrsets (a.k.a. `Bindings` in `libexpr`) now have a `Pos`. This is
  helpful e.g. to identify which attribute-set in `listToAttrs` is
  invalid.

* The `Value`-struct has a new method named `determinePos` which tries
  to guess the position of a value and falls back to a default if that's
  not possible.

  This can be used to provide better messages if a coercion fails.

* The new `determinePos`-API is used by `builtins.concatMap` now. With
  that change, Nix shows the exact position in the error where a wrong
  value was returned by the lambda.

  To make sure it's still obvious that `concatMap` is the problem,
  another stack-frame was added.

* The changes described above can be added to every other `primop`, but
  first I'd like to get some feedback about the overall approach.
2021-04-13 23:12:38 +02:00
..
build-remote Merge pull request #4477 from NixOS/ca/build-remote 2021-02-26 16:54:44 +01:00
cpptoml
libcmd buildable.{cc,hh} -> derived-path.{cc,hh} 2021-04-05 10:33:28 -04:00
libexpr libexpr: misc improvements for proper error position 2021-04-13 23:12:38 +02:00
libfetchers Revert "libfetchers/tarball: Lock on effectiveUrl" 2021-04-09 13:51:57 +02:00
libmain restoreSignals() + restoreAffinity() -> restoreProcessContext() 2021-04-07 13:10:02 +02:00
libstore restoreSignals() + restoreAffinity() -> restoreProcessContext() 2021-04-07 13:10:02 +02:00
libutil Restore stack size in child processes 2021-04-07 13:40:13 +02:00
nix Restore stack size in child processes 2021-04-07 13:40:13 +02:00
nix-build restoreSignals() + restoreAffinity() -> restoreProcessContext() 2021-04-07 13:10:02 +02:00
nix-channel Initialize plugins after handling initial command line flags 2021-02-24 08:22:17 -05:00
nix-collect-garbage Initialize plugins after handling initial command line flags 2021-02-24 08:22:17 -05:00
nix-copy-closure Use RealisedPaths in copyPaths 2021-02-25 17:18:48 +01:00
nix-env Rename Buildable 2021-04-05 09:52:25 -04:00
nix-instantiate Initialize plugins after handling initial command line flags 2021-02-24 08:22:17 -05:00
nix-store Rename Buildable 2021-04-05 09:52:25 -04:00
resolve-system-dependencies Fix macOS build 2021-01-21 12:46:22 +01:00