diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-01-07T12·43+0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-01-07T12·43+0100 |
commit | 153a943de7c333470e2b7338a8edae4a8ae52181 (patch) | |
tree | e5371991d49910300e704e2309c29b1b72da94a7 /src | |
parent | 6fec43ccb3ebaa979c95143ee49c857d22ac4abf (diff) |
Show position info for failing <...> lookups
Diffstat (limited to 'src')
-rw-r--r-- | src/libexpr/eval.hh | 2 | ||||
-rw-r--r-- | src/libexpr/parser.y | 8 | ||||
-rw-r--r-- | src/libexpr/primops.cc | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh index 78942927fd24..ed648fba8d77 100644 --- a/src/libexpr/eval.hh +++ b/src/libexpr/eval.hh @@ -169,7 +169,7 @@ public: /* Look up a file in the search path. */ Path findFile(const string & path); - Path findFile(SearchPath & searchPath, const string & path); + Path findFile(SearchPath & searchPath, const string & path, const Pos & pos = noPos); /* Evaluate an expression to normal form, storing the result in value `v'. */ diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index ff174815e71f..7d877cd67862 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -626,7 +626,7 @@ Path EvalState::findFile(const string & path) } -Path EvalState::findFile(SearchPath & searchPath, const string & path) +Path EvalState::findFile(SearchPath & searchPath, const string & path, const Pos & pos) { foreach (SearchPath::iterator, i, searchPath) { Path res; @@ -641,7 +641,11 @@ Path EvalState::findFile(SearchPath & searchPath, const string & path) } if (pathExists(res)) return canonPath(res); } - throw ThrownError(format("file ‘%1%’ was not found in the Nix search path (add it using $NIX_PATH or -I)") % path); + format f = format( + "file ‘%1%’ was not found in the Nix search path (add it using $NIX_PATH or -I)" + + string(pos ? ", at %2%" : "")); + f.exceptions(boost::io::all_error_bits ^ boost::io::too_many_args_bit); + throw ThrownError(f % path % pos); } diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index cd7b287e29c3..119e71a0497e 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -775,7 +775,7 @@ static void prim_findFile(EvalState & state, const Pos & pos, Value * * args, Va % path % e.path % pos); } - mkPath(v, state.findFile(searchPath, path).c_str()); + mkPath(v, state.findFile(searchPath, path, pos).c_str()); } /* Read a directory (without . or ..) */ |