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

difftreelog

fix prepare with extra named arguments

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

2 files changed

modifiedcrates/jrsonnet-evaluator/src/evaluate/mod.rsdiffbeforeafterboth
--- a/crates/jrsonnet-evaluator/src/evaluate/mod.rs
+++ b/crates/jrsonnet-evaluator/src/evaluate/mod.rs
@@ -431,7 +431,6 @@
 	Ok(match value {
 		Val::Func(f) => {
 			let name = f.name();
-			let prepare = PreparedFuncVal::new(f, args.unnamed.len(), &args.names)?;
 			let unnamed = args
 				.unnamed
 				.iter()
@@ -444,6 +443,8 @@
 				.cloned()
 				.map(|un| evaluate_thunk(ctx.clone(), un, tailstrict))
 				.collect::<Result<Vec<_>>>()?;
+			let prepare = PreparedFuncVal::new(f, args.unnamed.len(), &args.names)
+				.with_description_src(loc, || format!("function <{name}> call"))?;
 			let body = || prepare.call(loc, &unnamed, &named);
 			if tailstrict {
 				body()?
modifiedcrates/jrsonnet-evaluator/src/function/prepared.rsdiffbeforeafterboth
51 bail!(TooManyArgsFunctionHas(params.len(), params))51 bail!(TooManyArgsFunctionHas(params.len(), params))
52 }52 }
5353
54 let expected_defaults = params.len() - unnamed - named.len();54 let expected_defaults = (params.len() - unnamed).saturating_sub(named.len());
55 let mut ops = PreparedCall {55 let mut ops = PreparedCall {
56 named: Vec::with_capacity(named.len()),56 named: Vec::with_capacity(named.len()),
57 defaults: Vec::with_capacity(expected_defaults),57 defaults: Vec::with_capacity(expected_defaults),