difftreelog
refactor prepared builtin parsing is infallible
in: master
2 files changed
crates/jrsonnet-evaluator/src/function/mod.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/src/function/mod.rs
+++ b/crates/jrsonnet-evaluator/src/function/mod.rs
@@ -208,10 +208,6 @@
_tailstrict: bool,
) -> Result<Val> {
match self {
- FuncVal::Id => {
- let args = parse_prepared_builtin_call(prepared, ID.params(), unnamed, named)?;
- ID.call(loc, &args)
- }
FuncVal::Normal(func) => {
let body_ctx = parse_prepared_function_call(
func.ctx.clone(),
@@ -223,12 +219,16 @@
evaluate(body_ctx, &func.body)
}
FuncVal::Thunk(t) => t.evaluate(),
+ FuncVal::Id => {
+ let args = parse_prepared_builtin_call(prepared, ID.params(), unnamed, named);
+ ID.call(loc, &args)
+ }
FuncVal::StaticBuiltin(b) => {
- let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named)?;
+ let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named);
b.call(loc, &args)
}
FuncVal::Builtin(b) => {
- let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named)?;
+ let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named);
b.call(loc, &args)
}
}
crates/jrsonnet-evaluator/src/function/prepared.rsdiffbeforeafterboth180 params: FunctionSignature,180 params: FunctionSignature,181 unnamed: &[Thunk<Val>],181 unnamed: &[Thunk<Val>],182 named: &[Thunk<Val>],182 named: &[Thunk<Val>],183) -> Result<Vec<Option<Thunk<Val>>>> {183) -> Vec<Option<Thunk<Val>>> {184 let mut passed_args = vec![None; params.len()];184 let mut passed_args = vec![None; params.len()];185185186 for (param_idx, unnamed) in unnamed.iter().enumerate() {186 for (param_idx, unnamed) in unnamed.iter().enumerate() {191 passed_args[param_idx] = Some(named[arg_idx].clone());191 passed_args[param_idx] = Some(named[arg_idx].clone());192 }192 }193193194 Ok(passed_args)194 passed_args195}195}196196