diff options
author | Kevin Amado <kamadorueda@gmail.com> | 2021-10-15 19:21:38 -0500 |
---|---|---|
committer | Kevin Amado <kamadorueda@gmail.com> | 2021-10-15 19:25:19 -0500 |
commit | e5a27a3b4e5ae6a1b84e439f880613e6fe5faf98 (patch) | |
tree | e77fdb4bb42c3b21843de50ca3240246c68bc7f6 /src | |
parent | 18e3d63341bc03e152659a6836a1b52a1241fe57 (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.cc | 2 |
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, |