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
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
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),