Fix nil index handling
This commit is contained in:
parent
d9356a48a5
commit
feb0f0db31
2
salix.go
2
salix.go
@ -415,7 +415,7 @@ func (t *Template) getIndex(i ast.Index, local map[string]any) (any, error) {
|
|||||||
return nil, ast.PosError(i, "%s: cannot get index of nil value", valueToString(i))
|
return nil, ast.PosError(i, "%s: cannot get index of nil value", valueToString(i))
|
||||||
}
|
}
|
||||||
rindex := reflect.ValueOf(index)
|
rindex := reflect.ValueOf(index)
|
||||||
if !rval.IsValid() {
|
if !rindex.IsValid() {
|
||||||
return nil, ast.PosError(i, "%s: cannot use nil value as an index", valueToString(i))
|
return nil, ast.PosError(i, "%s: cannot use nil value as an index", valueToString(i))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,6 +107,23 @@ func TestGetIndexNil(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetIndexNilIndex(t *testing.T) {
|
||||||
|
testMap := map[string]any{}
|
||||||
|
tmpl := testTmpl(t)
|
||||||
|
|
||||||
|
// test[index]
|
||||||
|
ast := ast.Index{
|
||||||
|
Value: ast.Ident{Value: "test", Position: testPos(t)},
|
||||||
|
Index: ast.Ident{Value: "index", Position: testPos(t)},
|
||||||
|
Position: testPos(t),
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := tmpl.getIndex(ast, map[string]any{"test": testMap, "index": nil})
|
||||||
|
if err == nil {
|
||||||
|
t.Error("Expected error, got nil")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetField(t *testing.T) {
|
func TestGetField(t *testing.T) {
|
||||||
testStruct := struct {
|
testStruct := struct {
|
||||||
X int
|
X int
|
||||||
|
Loading…
Reference in New Issue
Block a user