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 {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…