aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulia <midnight@trainwit.ch>2024-05-18 18:57:38 +1000
committerjulia <midnight@trainwit.ch>2024-06-16 03:53:00 +0000
commit6c311a4afa339b5dc4f80f03e29c9e7fe779abd5 (patch)
tree2ed6d3ec15709b772806a4c04d1f5c4e5480cca9
parent0fa289f559708407ab4384739c0f24258c114b44 (diff)
Add a clearer error message for InvalidPathError during evaluation
Part of #270, #271 Change-Id: I864d7340f26d3c0f9c45db7b6b545face38d8294
-rw-r--r--src/libexpr/eval-error.hh6
-rw-r--r--src/libstore/store-api.hh9
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);