in gotype/unfold_user.go [215:236]
func checkUserStateUnfolder(fn reflect.Value) error {
if fn.Kind() != reflect.Func {
return fmt.Errorf("state unfolder '%v' is no function", fn)
}
t := fn.Type()
// check input
if t.NumIn() != 1 {
return fmt.Errorf("state unfolder '%v' must accept one target argument", fn)
}
in := t.In(0)
if in.Kind() != reflect.Ptr {
return fmt.Errorf("state unfolder '%v' target argument must be a pointer", fn)
}
if t.NumOut() != 1 || (t.NumOut() > 0 && t.Out(0) != tUnfoldState) {
return fmt.Errorf("function '%v' does not return UnfoldState type", fn)
}
return nil
}