fix(tvix/eval): Propagate catchables in a few more places
Propagate catchables that we get from forcing thunks in builtins in a few more places using the new try_value! macro Change-Id: I95fd41a231f877ff153f4adbabd944372d4cc7eb Reviewed-on: https://cl.tvl.fyi/c/depot/+/10738 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
This commit is contained in:
parent
780b47193a
commit
b77a103a2a
1 changed files with 10 additions and 9 deletions
|
@ -249,7 +249,7 @@ mod pure_builtins {
|
||||||
let mut out = imbl::Vector::new();
|
let mut out = imbl::Vector::new();
|
||||||
|
|
||||||
for value in lists.to_list()? {
|
for value in lists.to_list()? {
|
||||||
let list = generators::request_force(&co, value).await.to_list()?;
|
let list = try_value!(generators::request_force(&co, value).await).to_list()?;
|
||||||
out.extend(list.into_iter());
|
out.extend(list.into_iter());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,7 +262,7 @@ mod pure_builtins {
|
||||||
let mut res = imbl::Vector::new();
|
let mut res = imbl::Vector::new();
|
||||||
for val in list {
|
for val in list {
|
||||||
let out = generators::request_call_with(&co, f.clone(), [val]).await;
|
let out = generators::request_call_with(&co, f.clone(), [val]).await;
|
||||||
let out = generators::request_force(&co, out).await;
|
let out = try_value!(generators::request_force(&co, out).await);
|
||||||
res.extend(out.to_list()?);
|
res.extend(out.to_list()?);
|
||||||
}
|
}
|
||||||
Ok(Value::List(res.into()))
|
Ok(Value::List(res.into()))
|
||||||
|
@ -898,9 +898,10 @@ mod pure_builtins {
|
||||||
let list = list.to_list()?;
|
let list = list.to_list()?;
|
||||||
let mut map = BTreeMap::new();
|
let mut map = BTreeMap::new();
|
||||||
for val in list {
|
for val in list {
|
||||||
let attrs = generators::request_force(&co, val).await.to_attrs()?;
|
let attrs = try_value!(generators::request_force(&co, val).await).to_attrs()?;
|
||||||
let name = generators::request_force(&co, attrs.select_required("name")?.clone())
|
let name = try_value!(
|
||||||
.await
|
generators::request_force(&co, attrs.select_required("name")?.clone()).await
|
||||||
|
)
|
||||||
.to_str()?;
|
.to_str()?;
|
||||||
let value = attrs.select_required("value")?.clone();
|
let value = attrs.select_required("value")?.clone();
|
||||||
// Map entries earlier in the list take precedence over entries later in the list
|
// Map entries earlier in the list take precedence over entries later in the list
|
||||||
|
@ -1023,7 +1024,7 @@ mod pure_builtins {
|
||||||
for elem in list {
|
for elem in list {
|
||||||
let result = generators::request_call_with(&co, pred.clone(), [elem.clone()]).await;
|
let result = generators::request_call_with(&co, pred.clone(), [elem.clone()]).await;
|
||||||
|
|
||||||
if generators::request_force(&co, result).await.as_bool()? {
|
if try_value!(generators::request_force(&co, result).await).as_bool()? {
|
||||||
right.push_back(elem);
|
right.push_back(elem);
|
||||||
} else {
|
} else {
|
||||||
wrong.push_back(elem);
|
wrong.push_back(elem);
|
||||||
|
@ -1069,12 +1070,12 @@ mod pure_builtins {
|
||||||
) -> Result<Value, ErrorKind> {
|
) -> Result<Value, ErrorKind> {
|
||||||
let from = from.to_list()?;
|
let from = from.to_list()?;
|
||||||
for val in &from {
|
for val in &from {
|
||||||
generators::request_force(&co, val.clone()).await;
|
try_value!(generators::request_force(&co, val.clone()).await);
|
||||||
}
|
}
|
||||||
|
|
||||||
let to = to.to_list()?;
|
let to = to.to_list()?;
|
||||||
for val in &to {
|
for val in &to {
|
||||||
generators::request_force(&co, val.clone()).await;
|
try_value!(generators::request_force(&co, val.clone()).await);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut string = s.to_contextful_str()?;
|
let mut string = s.to_contextful_str()?;
|
||||||
|
|
Loading…
Add table
Reference in a new issue