diff options
author | julia <midnight@trainwit.ch> | 2024-05-18 18:57:38 +1000 |
---|---|---|
committer | julia <midnight@trainwit.ch> | 2024-06-16 03:53:00 +0000 |
commit | 6c311a4afa339b5dc4f80f03e29c9e7fe779abd5 (patch) | |
tree | 2ed6d3ec15709b772806a4c04d1f5c4e5480cca9 /src | |
parent | 0fa289f559708407ab4384739c0f24258c114b44 (diff) |
Add a clearer error message for InvalidPathError during evaluation
Part of #270, #271
Change-Id: I864d7340f26d3c0f9c45db7b6b545face38d8294
Diffstat (limited to 'src')
-rw-r--r-- | src/libexpr/eval-error.hh | 6 | ||||
-rw-r--r-- | src/libstore/store-api.hh | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/libexpr/eval-error.hh b/src/libexpr/eval-error.hh index 4f0e0d24c..19540d612 100644 --- a/src/libexpr/eval-error.hh +++ b/src/libexpr/eval-error.hh @@ -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) { } }; diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh index de4dc3f03..186437f43 100644 --- a/src/libstore/store-api.hh +++ b/src/libstore/store-api.hh @@ -62,10 +62,18 @@ MakeError(SubstError, Error); * denotes a permanent build failure */ 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(Unsupported, Error); MakeError(SubstituteGone, 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(InvalidStoreURI, Error); @@ -328,6 +336,7 @@ public: /** * Check whether a path is valid. + * A path is valid when it exists in the store *now*. */ bool isValidPath(const StorePath & path); |