forked from lix-project/lix
Add a clearer error message for InvalidPathError during evaluation
Part of #270, #271
Change-Id: I864d7340f26d3c0f9c45db7b6b545face38d8294
This commit is contained in:
parent
0fa289f559
commit
6c311a4afa
|
@ -47,12 +47,16 @@ MakeError(MissingArgumentError, EvalError);
|
||||||
MakeError(RestrictedPathError, Error);
|
MakeError(RestrictedPathError, Error);
|
||||||
MakeError(InfiniteRecursionError, EvalError);
|
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
|
struct InvalidPathError : public EvalError
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Path path;
|
Path path;
|
||||||
InvalidPathError(EvalState & state, const 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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -62,10 +62,18 @@ MakeError(SubstError, Error);
|
||||||
* denotes a permanent build failure
|
* denotes a permanent build failure
|
||||||
*/
|
*/
|
||||||
MakeError(BuildError, Error);
|
MakeError(BuildError, Error);
|
||||||
|
/**
|
||||||
|
* denotes that a path in the store did not exist (but it could, had it
|
||||||
|
* been put there, i.e. it is still legal).
|
||||||
|
*/
|
||||||
MakeError(InvalidPath, Error);
|
MakeError(InvalidPath, Error);
|
||||||
MakeError(Unsupported, Error);
|
MakeError(Unsupported, Error);
|
||||||
MakeError(SubstituteGone, Error);
|
MakeError(SubstituteGone, Error);
|
||||||
MakeError(SubstituterDisabled, Error);
|
MakeError(SubstituterDisabled, Error);
|
||||||
|
/**
|
||||||
|
* denotes that a path could not possibly be a store path.
|
||||||
|
* e.g. outside of the nix store, illegal characters in the name, etc.
|
||||||
|
*/
|
||||||
MakeError(BadStorePath, Error);
|
MakeError(BadStorePath, Error);
|
||||||
|
|
||||||
MakeError(InvalidStoreURI, Error);
|
MakeError(InvalidStoreURI, Error);
|
||||||
|
@ -328,6 +336,7 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether a path is valid.
|
* Check whether a path is valid.
|
||||||
|
* A path is valid when it exists in the store *now*.
|
||||||
*/
|
*/
|
||||||
bool isValidPath(const StorePath & path);
|
bool isValidPath(const StorePath & path);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue