func (e *Evaluator) caseExpr(v *ast.CaseExpr) bool { var target interface{} = true if v.Value != nil { target = v.Value.GetValue() } if target != nil { for _, val := range v.WhenClauses { cmp, err := types.Compare(target, val.Expr.GetValue()) if err != nil { e.err = errors.Trace(err) return false } if cmp == 0 { v.SetValue(val.Result.GetValue()) return true } } } if v.ElseClause != nil { v.SetValue(v.ElseClause.GetValue()) } else { v.SetValue(nil) } return true }