git.delta.rocks / jrsonnet / refs/commits / 5fc1275a239d

difftreelog

fix prepare with extra named arguments

onzopuokYaroslav Bolyukin2026-04-05parent: #340c467.patch.diff
in: master

2 files changed

modifiedcrates/jrsonnet-evaluator/src/evaluate/mod.rsdiffbeforeafterboth
431 Ok(match value {431 Ok(match value {
432 Val::Func(f) => {432 Val::Func(f) => {
433 let name = f.name();433 let name = f.name();
434 let prepare = PreparedFuncVal::new(f, args.unnamed.len(), &args.names)?;
435 let unnamed = args434 let unnamed = args
436 .unnamed435 .unnamed
437 .iter()436 .iter()
444 .cloned()443 .cloned()
445 .map(|un| evaluate_thunk(ctx.clone(), un, tailstrict))444 .map(|un| evaluate_thunk(ctx.clone(), un, tailstrict))
446 .collect::<Result<Vec<_>>>()?;445 .collect::<Result<Vec<_>>>()?;
446 let prepare = PreparedFuncVal::new(f, args.unnamed.len(), &args.names)
447 .with_description_src(loc, || format!("function <{name}> call"))?;
447 let body = || prepare.call(loc, &unnamed, &named);448 let body = || prepare.call(loc, &unnamed, &named);
448 if tailstrict {449 if tailstrict {
449 body()?450 body()?
modifiedcrates/jrsonnet-evaluator/src/function/prepared.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/function/prepared.rs
+++ b/crates/jrsonnet-evaluator/src/function/prepared.rs
@@ -51,7 +51,7 @@
 		bail!(TooManyArgsFunctionHas(params.len(), params))
 	}
 
-	let expected_defaults = params.len() - unnamed - named.len();
+	let expected_defaults = (params.len() - unnamed).saturating_sub(named.len());
 	let mut ops = PreparedCall {
 		named: Vec::with_capacity(named.len()),
 		defaults: Vec::with_capacity(expected_defaults),