git.delta.rocks / jrsonnet / refs/commits / 57e587bf221b

difftreelog

refactor prepared builtin parsing is infallible

qmvptnvvYaroslav Bolyukin2026-03-21parent: #cbdee48.patch.diff
in: master

2 files changed

modifiedcrates/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)
 			}
 		}
modifiedcrates/jrsonnet-evaluator/src/function/prepared.rsdiffbeforeafterboth
180 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()];
185185
186 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 }
193193
194 Ok(passed_args)194 passed_args
195}195}
196196