Show position info for failing <...> lookups
This commit is contained in:
parent
6fec43ccb3
commit
153a943de7
3 changed files with 8 additions and 4 deletions
|
@ -169,7 +169,7 @@ public:
|
||||||
|
|
||||||
/* Look up a file in the search path. */
|
/* Look up a file in the search path. */
|
||||||
Path findFile(const string & 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
|
/* Evaluate an expression to normal form, storing the result in
|
||||||
value `v'. */
|
value `v'. */
|
||||||
|
|
|
@ -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) {
|
foreach (SearchPath::iterator, i, searchPath) {
|
||||||
Path res;
|
Path res;
|
||||||
|
@ -641,7 +641,11 @@ Path EvalState::findFile(SearchPath & searchPath, const string & path)
|
||||||
}
|
}
|
||||||
if (pathExists(res)) return canonPath(res);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -775,7 +775,7 @@ static void prim_findFile(EvalState & state, const Pos & pos, Value * * args, Va
|
||||||
% path % e.path % pos);
|
% 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 ..) */
|
/* Read a directory (without . or ..) */
|
||||||
|
|
Loading…
Reference in a new issue