in isdef/core.go [58:83]
func RegisterEqual(fn interface{}) error {
fnV := reflect.ValueOf(fn)
fnT := fnV.Type()
if fnT.Kind() != reflect.Func {
return InvalidEqualFnError{"Provided value is not a function"}
}
if fnT.NumIn() != 1 {
return InvalidEqualFnError{"Equal FN should take one argument"}
}
if fnT.NumOut() != 1 {
return InvalidEqualFnError{"Equal FN should return one value"}
}
if fnT.Out(0) != reflect.TypeOf(IsDef{}) {
return InvalidEqualFnError{"Equal FN should return an IsDef"}
}
inT := fnT.In(0)
if _, ok := equalChecks[inT]; ok {
return InvalidEqualFnError{fmt.Sprintf("Duplicate Equal FN for type %v encountered!", inT)}
}
equalChecks[inT] = fnV
return nil
}