From 7ddea7340f547166a3c3f7fdd0afa776d9ba35aa Mon Sep 17 00:00:00 2001 From: Adam Joseph Date: Tue, 12 Dec 2023 21:18:09 -0800 Subject: fix(tvix/eval): catchable in type field of nix_eq() Change-Id: I165ff77764e272cc94d18cb03ad6cbc9a8ebefde Reviewed-on: https://cl.tvl.fyi/c/depot/+/10348 Autosubmit: Adam Joseph Reviewed-by: sterni Tested-by: BuildkiteCI --- tvix/eval/src/value/mod.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'tvix/eval/src/value') diff --git a/tvix/eval/src/value/mod.rs b/tvix/eval/src/value/mod.rs index eb54f6ae5bd8..40c0025c45ca 100644 --- a/tvix/eval/src/value/mod.rs +++ b/tvix/eval/src/value/mod.rs @@ -547,8 +547,16 @@ impl Value { #[allow(clippy::single_match)] // might need more match arms later match (a1.select("type"), a2.select("type")) { (Some(v1), Some(v2)) => { - let s1 = v1.clone().force(co, span.clone()).await?.to_str(); - let s2 = v2.clone().force(co, span.clone()).await?.to_str(); + let s1 = v1.clone().force(co, span.clone()).await?; + if s1.is_catchable() { + return Ok(s1); + } + let s2 = v2.clone().force(co, span.clone()).await?; + if s2.is_catchable() { + return Ok(s2); + } + let s1 = s1.to_str(); + let s2 = s2.to_str(); if let (Ok(s1), Ok(s2)) = (s1, s2) { if s1.as_str() == "derivation" && s2.as_str() == "derivation" { -- cgit 1.4.1