Prevent confusing template errors when seq is nil
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 9 Feb 2016 18:00:07 +0000 (19:00 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 9 Feb 2016 18:02:05 +0000 (19:02 +0100)
The common is the `where` func and this:

```
panic: reflect: call of reflect.Value.Type on zero Value [recovered]
panic: reflect: call of reflect.Value.Type on zero Value
```

tpl/template_funcs.go

index f495adf91c3b7fef4905e9ba1fd497ba9be76ef7..3c4a87474ab1cfb80033aa6884b3fc2628032299 100644 (file)
@@ -814,7 +814,7 @@ func where(seq, key interface{}, args ...interface{}) (r interface{}, err error)
                }
                return rv.Interface(), nil
        default:
-               return nil, errors.New("can't iterate over " + reflect.ValueOf(seq).Type().String())
+               return nil, fmt.Errorf("can't iterate over %v", seq)
        }
 }
 
@@ -858,7 +858,7 @@ func apply(seq interface{}, fname string, args ...interface{}) (interface{}, err
 
                return r, nil
        default:
-               return nil, errors.New("can't apply over " + reflect.ValueOf(seq).Type().String())
+               return nil, fmt.Errorf("can't apply over %v", seq)
        }
 }
 
@@ -950,7 +950,7 @@ func delimit(seq, delimiter interface{}, last ...interface{}) (template.HTML, er
                }
 
        default:
-               return "", errors.New("can't iterate over " + reflect.ValueOf(seq).Type().String())
+               return "", fmt.Errorf("can't iterate over %v", seq)
        }
 
        return template.HTML(str), nil