fix(tvix/eval): fix last uses of Vec<Value> -> NixList in builtins
Change-Id: I0d71b82eb7ddc1e457b0996b0668006f55f56751 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7790 Autosubmit: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
e3c1981619
commit
1d59d3ba8f
2 changed files with 21 additions and 22 deletions
|
@ -577,12 +577,13 @@ mod pure_builtins {
|
|||
let re = regex.to_str()?;
|
||||
let re: Regex = Regex::new(&format!("^{}$", re.as_str())).unwrap();
|
||||
match re.captures(&s) {
|
||||
Some(caps) => Ok(caps
|
||||
.iter()
|
||||
.skip(1)
|
||||
.map(|grp| grp.map(|g| Value::from(g.as_str())).unwrap_or(Value::Null))
|
||||
.collect::<Vec<Value>>()
|
||||
.into()),
|
||||
Some(caps) => Ok(Value::List(
|
||||
caps.iter()
|
||||
.skip(1)
|
||||
.map(|grp| grp.map(|g| Value::from(g.as_str())).unwrap_or(Value::Null))
|
||||
.collect::<imbl::Vector<Value>>()
|
||||
.into(),
|
||||
)),
|
||||
None => Ok(Value::Null),
|
||||
}
|
||||
}
|
||||
|
@ -618,21 +619,24 @@ mod pure_builtins {
|
|||
}
|
||||
#[builtin("partition")]
|
||||
fn builtin_partition(vm: &mut VM, pred: Value, list: Value) -> Result<Value, ErrorKind> {
|
||||
let mut right: Vec<Value> = vec![];
|
||||
let mut wrong: Vec<Value> = vec![];
|
||||
let mut right: imbl::Vector<Value> = Default::default();
|
||||
let mut wrong: imbl::Vector<Value> = Default::default();
|
||||
|
||||
let list: NixList = list.to_list()?;
|
||||
for elem in list {
|
||||
let result = vm.call_with(&pred, [elem.clone()])?;
|
||||
|
||||
if result.force(vm)?.as_bool()? {
|
||||
right.push(elem);
|
||||
right.push_back(elem);
|
||||
} else {
|
||||
wrong.push(elem);
|
||||
wrong.push_back(elem);
|
||||
};
|
||||
}
|
||||
|
||||
let res = [("right", right), ("wrong", wrong)];
|
||||
let res = [
|
||||
("right", Value::List(NixList::from(right))),
|
||||
("wrong", Value::List(NixList::from(wrong))),
|
||||
];
|
||||
|
||||
Ok(Value::attrs(NixAttrs::from_iter(res.into_iter())))
|
||||
}
|
||||
|
|
|
@ -542,12 +542,6 @@ impl From<PathBuf> for Value {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<Vec<Value>> for Value {
|
||||
fn from(val: Vec<Value>) -> Self {
|
||||
Self::List(NixList::from_vec(val))
|
||||
}
|
||||
}
|
||||
|
||||
impl TryFrom<serde_json::Value> for Value {
|
||||
type Error = ErrorKind;
|
||||
|
||||
|
@ -568,11 +562,12 @@ impl TryFrom<serde_json::Value> for Value {
|
|||
}
|
||||
}
|
||||
serde_json::Value::String(s) => Ok(s.into()),
|
||||
serde_json::Value::Array(a) => Ok(a
|
||||
.into_iter()
|
||||
.map(Value::try_from)
|
||||
.collect::<Result<Vec<_>, _>>()?
|
||||
.into()),
|
||||
serde_json::Value::Array(a) => Ok(Value::List(
|
||||
a.into_iter()
|
||||
.map(Value::try_from)
|
||||
.collect::<Result<imbl::Vector<_>, _>>()?
|
||||
.into(),
|
||||
)),
|
||||
serde_json::Value::Object(obj) => {
|
||||
match (obj.len(), obj.get("name"), obj.get("value")) {
|
||||
(2, Some(name), Some(value)) => Ok(Self::attrs(NixAttrs::from_kv(
|
||||
|
|
Loading…
Reference in a new issue