in reify.go [627:653]
func castArr(opts *options, v value) ([]value, Error) {
if sub, ok := v.(cfgSub); ok {
return sub.c.fields.array(), nil
}
if ref, ok := v.(*cfgDynamic); ok {
unrefed, err := ref.getValue(opts)
if err != nil {
return nil, raiseMissingMsg(ref.ctx.getParent(), ref.ctx.field, err.Error())
}
if sub, ok := unrefed.(cfgSub); ok {
return sub.c.fields.array(), nil
}
}
l, err := v.Len(opts)
if err != nil {
ctx := v.Context()
return nil, raisePathErr(err, v.meta(), "", ctx.path("."))
}
if l == 0 {
return nil, nil
}
return []value{v}, nil
}