about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2023-03-03T19·54+0300
committertazjin <tazjin@tvl.su>2023-03-13T20·30+0000
commit54a12577c4e31367529626096d9a749a9b301690 (patch)
tree05dde0fdef4ffd84e9b777b1e99f9f774d70e673
parentd9371c2f6f1293b44defcff95cad91c37dea65d1 (diff)
refactor(tvix/eval): print only *types* when observing generators r/5974
Do not print the entire value (they're likely to be thunks anyways).
This is useful because there *can* be cases where something like
`nixpkgs` itself is sent through one of these messages, in which case
the observer trying to print it will just blow up.

Change-Id: I1fa37ea071d75efa0eb3428c6e2fe4351c62be6b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8202
Tested-by: BuildkiteCI
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
-rw-r--r--tvix/eval/src/vm/generators.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/tvix/eval/src/vm/generators.rs b/tvix/eval/src/vm/generators.rs
index df1696f08d5c..1a9743dbd960 100644
--- a/tvix/eval/src/vm/generators.rs
+++ b/tvix/eval/src/vm/generators.rs
@@ -120,22 +120,26 @@ pub enum GeneratorRequest {
 impl Display for GeneratorRequest {
     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
         match self {
-            GeneratorRequest::ForceValue(v) => write!(f, "force_value({})", v),
-            GeneratorRequest::DeepForceValue(v, _) => write!(f, "deep_force_value({})", v),
+            GeneratorRequest::ForceValue(v) => write!(f, "force_value({})", v.type_of()),
+            GeneratorRequest::DeepForceValue(v, _) => {
+                write!(f, "deep_force_value({})", v.type_of())
+            }
             GeneratorRequest::WithValue(_) => write!(f, "with_value"),
             GeneratorRequest::CapturedWithValue(_) => write!(f, "captured_with_value"),
             GeneratorRequest::NixEquality(values, ptr_eq) => {
                 write!(
                     f,
                     "nix_eq({}, {}, PointerEquality::{:?})",
-                    values.0, values.1, ptr_eq
+                    values.0.type_of(),
+                    values.1.type_of(),
+                    ptr_eq
                 )
             }
-            GeneratorRequest::StackPush(v) => write!(f, "stack_push({})", v),
+            GeneratorRequest::StackPush(v) => write!(f, "stack_push({})", v.type_of()),
             GeneratorRequest::StackPop => write!(f, "stack_pop"),
             GeneratorRequest::StringCoerce(v, kind) => match kind {
-                CoercionKind::Weak => write!(f, "weak_string_coerce({})", v),
-                CoercionKind::Strong => write!(f, "strong_string_coerce({})", v),
+                CoercionKind::Weak => write!(f, "weak_string_coerce({})", v.type_of()),
+                CoercionKind::Strong => write!(f, "strong_string_coerce({})", v.type_of()),
             },
             GeneratorRequest::Call(v) => write!(f, "call({})", v),
             GeneratorRequest::EnterLambda { lambda, .. } => {
@@ -155,7 +159,7 @@ impl Display for GeneratorRequest {
             GeneratorRequest::PathExists(p) => write!(f, "path_exists({})", p.to_string_lossy()),
             GeneratorRequest::ReadDir(p) => write!(f, "read_dir({})", p.to_string_lossy()),
             GeneratorRequest::Span => write!(f, "span"),
-            GeneratorRequest::TryForce(v) => write!(f, "try_force({})", v),
+            GeneratorRequest::TryForce(v) => write!(f, "try_force({})", v.type_of()),
         }
     }
 }