aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKevin Amado <kamadorueda@gmail.com>2021-10-15 19:21:38 -0500
committerKevin Amado <kamadorueda@gmail.com>2021-10-15 19:25:19 -0500
commite5a27a3b4e5ae6a1b84e439f880613e6fe5faf98 (patch)
treee77fdb4bb42c3b21843de50ca3240246c68bc7f6 /src
parent18e3d63341bc03e152659a6836a1b52a1241fe57 (diff)
fetchTree: add pos to EvalState::forceValue
- This way we improve error messages on infinite recursion - Demo: ```nix let x = builtins.fetchTree { type = "git"; inherit x; }; in x ``` - Before: ```bash $ nix-instantiate --extra-experimental-features flakes --strict error: infinite recursion encountered ``` - After: ```bash $ nix-instantiate --extra-experimental-features flakes --strict error: infinite recursion encountered at /data/github/kamadorueda/nix/test.nix:3:10: 2| type = "git"; 3| inherit x; | ^ 4| }; ``` Mentions: #3505
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/primops/fetchTree.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libexpr/primops/fetchTree.cc b/src/libexpr/primops/fetchTree.cc
index 441edd648..727b661e1 100644
--- a/src/libexpr/primops/fetchTree.cc
+++ b/src/libexpr/primops/fetchTree.cc
@@ -121,7 +121,7 @@ static void fetchTree(
for (auto & attr : *args[0]->attrs) {
if (attr.name == state.sType) continue;
- state.forceValue(*attr.value);
+ state.forceValue(*attr.value, *attr.pos);
if (attr.value->type() == nPath || attr.value->type() == nString) {
auto s = state.coerceToString(*attr.pos, *attr.value, context, false, false);
attrs.emplace(attr.name,