Source File
func.go
Belonging Package
github.com/google/go-cmp/cmp/internal/function
package function
import (
)
type funcType int
const (
_ funcType = iota
tbFunc // func(T) bool
ttbFunc // func(T, T) bool
trbFunc // func(T, R) bool
tibFunc // func(T, I) bool
trFunc // func(T) R
Equal = ttbFunc // func(T, T) bool
EqualAssignable = tibFunc // func(T, I) bool; encapsulates func(T, T) bool
Transformer = trFunc // func(T) R
ValueFilter = ttbFunc // func(T, T) bool
Less = ttbFunc // func(T, T) bool
ValuePredicate = tbFunc // func(T) bool
KeyValuePredicate = trbFunc // func(T, R) bool
)
var boolType = reflect.TypeOf(true)
func ( reflect.Type, funcType) bool {
if == nil || .Kind() != reflect.Func || .IsVariadic() {
return false
}
, := .NumIn(), .NumOut()
switch {
case tbFunc: // func(T) bool
if == 1 && == 1 && .Out(0) == boolType {
return true
}
case ttbFunc: // func(T, T) bool
if == 2 && == 1 && .In(0) == .In(1) && .Out(0) == boolType {
return true
}
case trbFunc: // func(T, R) bool
if == 2 && == 1 && .Out(0) == boolType {
return true
}
case tibFunc: // func(T, I) bool
if == 2 && == 1 && .In(0).AssignableTo(.In(1)) && .Out(0) == boolType {
return true
}
case trFunc: // func(T) R
if == 1 && == 1 {
return true
}
}
return false
}
var lastIdentRx = regexp.MustCompile(`[_\p{L}][_\p{L}\p{N}]*$`)
= strings.TrimSuffix(, "-fm")
var string
for len() > 0 {
:= strings.HasSuffix(, ")")
= strings.TrimSuffix(, ")")
:= lastIdentRx.FindString()
if == "" {
break
}
= + "." +
= strings.TrimSuffix(, )
if := strings.LastIndexByte(, '('); && >= 0 {
= [:]
}
= strings.TrimSuffix(, ".")
}
return strings.TrimSuffix(, ".")
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |