mirror of
https://github.com/golang/go
synced 2024-11-18 21:44:45 -07:00
go.tools/go/types: export ConvertibleTo
LGTM=adonovan R=adonovan CC=golang-codereviews https://golang.org/cl/57950043
This commit is contained in:
parent
d0efad3082
commit
83cdd9ba10
@ -229,6 +229,12 @@ func AssignableTo(V, T Type) bool {
|
||||
return x.assignableTo(nil, T) // config not needed for non-constant x
|
||||
}
|
||||
|
||||
// ConvertibleTo reports whether a value of type V is convertible to a value of type T.
|
||||
func ConvertibleTo(V, T Type) bool {
|
||||
x := operand{mode: value, typ: V}
|
||||
return x.convertibleTo(nil, T) // config not needed for non-constant x
|
||||
}
|
||||
|
||||
// Implements reports whether a value of type V implements T, as follows:
|
||||
//
|
||||
// 1) For non-interface types V, or if static is set, V implements T if all
|
||||
|
@ -31,7 +31,7 @@ func (check *checker) conversion(x *operand, T Type) {
|
||||
x.val = exact.MakeString(string(codepoint))
|
||||
ok = true
|
||||
}
|
||||
case x.isConvertible(check.conf, T):
|
||||
case x.convertibleTo(check.conf, T):
|
||||
// non-constant conversion
|
||||
x.mode = value
|
||||
ok = true
|
||||
@ -63,7 +63,7 @@ func (check *checker) conversion(x *operand, T Type) {
|
||||
check.updateExprType(x.expr, final, true)
|
||||
}
|
||||
|
||||
func (x *operand) isConvertible(conf *Config, T Type) bool {
|
||||
func (x *operand) convertibleTo(conf *Config, T Type) bool {
|
||||
// "x is assignable to T"
|
||||
if x.assignableTo(conf, T) {
|
||||
return true
|
||||
|
Loading…
Reference in New Issue
Block a user