INNER CODE UNIT · Go
decodeSliceArg
open-policy-agent/conftest · builtins/parse_config.go:127
func decodeSliceArg[T any](arg *ast.Term) ([]T, error) {
iface, err := ast.ValueToInterface(arg.Value, nil)
if err != nil {
return nil, fmt.Errorf("decode arg: %w", err)
}
ifaceSlice, ok := iface.([]any)
if !ok {
return nil, fmt.Errorf("decodeSliceArg used with non-slice value: (%T)%v", iface, iface)
}
var t T
slice := make([]T, len(ifaceSlice))
for i, val := range ifaceSlice {
v, ok := val.(T)
if !ok {
return nil, fmt.Errorf("slice index %d is not expected type %T, got %T", i, t, val)
}
slice[i] = v