elvish/pkg/eval/vals/reflect_wrappers.go
2019-12-23 20:00:59 +00:00

29 lines
721 B
Go

package vals
import "reflect"
var (
dummy interface{}
nilValue = reflect.ValueOf(&dummy).Elem()
emptyInterfaceType = reflect.TypeOf(&dummy).Elem()
)
// ValueOf is like reflect.ValueOf, except that when given an argument of nil,
// it does not return a zero Value, but the Value for the zero value of the
// empty interface.
func ValueOf(i interface{}) reflect.Value {
if i == nil {
return nilValue
}
return reflect.ValueOf(i)
}
// TypeOf is like reflect.TypeOf, except that when given an argument of nil, it
// does not return nil, but the Type for the empty interface.
func TypeOf(i interface{}) reflect.Type {
if i == nil {
return emptyInterfaceType
}
return reflect.TypeOf(i)
}