INNER CODE UNIT · Go
decodeArg
open-policy-agent/conftest · builtins/parse_config.go:150
func decodeArg[T any](arg *ast.Term) (T, error) {
iface, err := ast.ValueToInterface(arg.Value, nil)
if err != nil {
return *new(T), fmt.Errorf("ast.ValueToInterface: %w", err)
}
v, ok := iface.(T)
if !ok {
return *new(T), fmt.Errorf("argument is not expected type, have %T", iface)
}
return v, nil
}
func decodeArgs[T any](args ...*ast.Term) ([]T, error) {
decoded := make([]T, len(args))
for i, arg := range args {
v, err := decodeArg[T](arg)
if err != nil {