difftreelog
feat(evaluator) Expr::Arr support
in: master
1 file changed
crates/jsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth250}250}251251252pub fn evaluate(context: Context, eval_state: EvaluationState, expr: &LocExpr) -> Val {252pub fn evaluate(context: Context, eval_state: EvaluationState, expr: &LocExpr) -> Val {253 println!("===");254 eval_state.print_stack_trace();255 use Expr::*;253 use Expr::*;256 eval_state.clone().push(expr.clone(), "expr".to_owned(), || {254 eval_state.clone().push(expr.clone(), "expr".to_owned(), || {257 let LocExpr(expr, loc) = expr;255 let LocExpr(expr, loc) = expr;330 .into_future(future_context);328 .into_future(future_context);331 evaluate(context, eval_state.clone(), &returned.clone())329 evaluate(context, eval_state.clone(), &returned.clone())332 }330 }331 Arr(items) => {332 let mut out = Vec::with_capacity(items.len());333 for item in items {334 out.push(evaluate(context.clone(), eval_state.clone(), item));335 }336 Val::Arr(out)337 }333 Obj(body) => Val::Obj(evaluate_object(context, eval_state, body.clone())),338 Obj(body) => Val::Obj(evaluate_object(context, eval_state, body.clone())),334 Apply(value, ArgsDesc(args)) => {339 Apply(value, ArgsDesc(args)) => {335 let value = evaluate(context.clone(), eval_state.clone(), value).unwrap_if_lazy();340 let value = evaluate(context.clone(), eval_state.clone(), value).unwrap_if_lazy();