Merge changes I07d2da41,I864d7340,I86612c64 into main
* changes: Change error messages about 'invalid paths' to 'path does not exist'. Add a clearer error message for InvalidPathError during evaluation Harmonise the Store::queryPathInfoUncached interface
This commit is contained in:
@@ -47,12 +47,16 @@ MakeError(MissingArgumentError, EvalError);
|
||||
MakeError(RestrictedPathError, Error);
|
||||
MakeError(InfiniteRecursionError, EvalError);
|
||||
|
||||
/**
|
||||
* Represents an exception due to an invalid path; that is, it does not exist.
|
||||
* It corresponds to `!Store::validPath()`.
|
||||
*/
|
||||
struct InvalidPathError : public EvalError
|
||||
{
|
||||
public:
|
||||
Path path;
|
||||
InvalidPathError(EvalState & state, const Path & path)
|
||||
: EvalError(state, "path '%s' is not valid", path)
|
||||
: EvalError(state, "path '%s' did not exist in the store during evaluation", path)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
@@ -383,7 +383,8 @@ void prim_exec(EvalState & state, const PosIdx pos, Value * * args, Value & v)
|
||||
try {
|
||||
auto _ = state.realiseContext(context); // FIXME: Handle CA derivations
|
||||
} catch (InvalidPathError & e) {
|
||||
state.error<EvalError>("cannot execute '%1%', since path '%2%' is not valid", program, e.path).atPos(pos).debugThrow();
|
||||
e.addTrace(state.positions[pos], "while realising the context for builtins.exec");
|
||||
throw;
|
||||
}
|
||||
|
||||
auto output = runProgram(program, true, commandArgs);
|
||||
|
||||
Reference in New Issue
Block a user