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();
 | 
			
		||||
 | 
			
		||||
        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());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -262,7 +262,7 @@ mod pure_builtins {
 | 
			
		|||
        let mut res = imbl::Vector::new();
 | 
			
		||||
        for val in list {
 | 
			
		||||
            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()?);
 | 
			
		||||
        }
 | 
			
		||||
        Ok(Value::List(res.into()))
 | 
			
		||||
| 
						 | 
				
			
			@ -898,10 +898,11 @@ mod pure_builtins {
 | 
			
		|||
        let list = list.to_list()?;
 | 
			
		||||
        let mut map = BTreeMap::new();
 | 
			
		||||
        for val in list {
 | 
			
		||||
            let attrs = generators::request_force(&co, val).await.to_attrs()?;
 | 
			
		||||
            let name = generators::request_force(&co, attrs.select_required("name")?.clone())
 | 
			
		||||
                .await
 | 
			
		||||
                .to_str()?;
 | 
			
		||||
            let attrs = try_value!(generators::request_force(&co, val).await).to_attrs()?;
 | 
			
		||||
            let name = try_value!(
 | 
			
		||||
                generators::request_force(&co, attrs.select_required("name")?.clone()).await
 | 
			
		||||
            )
 | 
			
		||||
            .to_str()?;
 | 
			
		||||
            let value = attrs.select_required("value")?.clone();
 | 
			
		||||
            // Map entries earlier in the list take precedence over entries later in the list
 | 
			
		||||
            map.entry(name).or_insert(value);
 | 
			
		||||
| 
						 | 
				
			
			@ -1023,7 +1024,7 @@ mod pure_builtins {
 | 
			
		|||
        for elem in list {
 | 
			
		||||
            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);
 | 
			
		||||
            } else {
 | 
			
		||||
                wrong.push_back(elem);
 | 
			
		||||
| 
						 | 
				
			
			@ -1069,12 +1070,12 @@ mod pure_builtins {
 | 
			
		|||
    ) -> Result<Value, ErrorKind> {
 | 
			
		||||
        let from = from.to_list()?;
 | 
			
		||||
        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()?;
 | 
			
		||||
        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()?;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue