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

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…