difftreelog
fix prepare with extra named arguments
in: master
2 files changed
crates/jrsonnet-evaluator/src/evaluate/mod.rsdiffbeforeafterboth431 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 = args436 .unnamed435 .unnamed437 .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()?crates/jrsonnet-evaluator/src/function/prepared.rsdiffbeforeafterboth51 bail!(TooManyArgsFunctionHas(params.len(), params))51 bail!(TooManyArgsFunctionHas(params.len(), params))52 }52 }535354 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),