difftreelog
refactor prepared builtin parsing is infallible
in: master
2 files changed
crates/jrsonnet-evaluator/src/function/mod.rsdiffbeforeafterboth208 _tailstrict: bool,208 _tailstrict: bool,209 ) -> Result<Val> {209 ) -> Result<Val> {210 match self {210 match self {211 FuncVal::Id => {212 let args = parse_prepared_builtin_call(prepared, ID.params(), unnamed, named)?;213 ID.call(loc, &args)214 }215 FuncVal::Normal(func) => {211 FuncVal::Normal(func) => {216 let body_ctx = parse_prepared_function_call(212 let body_ctx = parse_prepared_function_call(217 func.ctx.clone(),213 func.ctx.clone(),223 evaluate(body_ctx, &func.body)219 evaluate(body_ctx, &func.body)224 }220 }225 FuncVal::Thunk(t) => t.evaluate(),221 FuncVal::Thunk(t) => t.evaluate(),222 FuncVal::Id => {223 let args = parse_prepared_builtin_call(prepared, ID.params(), unnamed, named);224 ID.call(loc, &args)225 }226 FuncVal::StaticBuiltin(b) => {226 FuncVal::StaticBuiltin(b) => {227 let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named)?;227 let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named);228 b.call(loc, &args)228 b.call(loc, &args)229 }229 }230 FuncVal::Builtin(b) => {230 FuncVal::Builtin(b) => {231 let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named)?;231 let args = parse_prepared_builtin_call(prepared, b.params(), unnamed, named);232 b.call(loc, &args)232 b.call(loc, &args)233 }233 }234 }234 }crates/jrsonnet-evaluator/src/function/prepared.rsdiffbeforeafterboth180 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()];185185186 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 }193193194 Ok(passed_args)194 passed_args195}195}196196