aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/eval.cc
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2023-04-01 22:05:06 +0200
committerRobert Hensing <robert@roberthensing.nl>2023-04-03 15:32:42 +0200
commit1c55544a428c61448dcaa4b431f20bde52c3991e (patch)
tree3e2b48eadf21d360a774b34bdd97d43949c4a65c /src/libexpr/eval.cc
parent10dc2e2e7cc28276c989b72a3a98c4b5542211e4 (diff)
eval: Fix crash on missing printValue tBlackhole case
Fixes #8119
Diffstat (limited to 'src/libexpr/eval.cc')
-rw-r--r--src/libexpr/eval.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 584bbc879..22337a3ff 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -173,7 +173,17 @@ void Value::print(const SymbolTable & symbols, std::ostream & str,
case tFloat:
str << fpoint;
break;
+ case tBlackhole:
+ // Although we know for sure that it's going to be an infinite recursion
+ // when this value is accessed _in the current context_, it's likely
+ // that the user will misinterpret a simpler «infinite recursion» output
+ // as a definitive statement about the value, while in fact it may be
+ // a valid value after `builtins.trace` and perhaps some other steps
+ // have completed.
+ str << "«potential infinite recursion»";
+ break;
default:
+ printError("Nix evaluator internal error: Value::print(): invalid value type %1%", internalType);
abort();
}
}