aboutsummaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2021-06-12 12:25:12 -0700
committerJoe Tsai <thebrokentoaster@gmail.com>2021-06-15 00:14:03 +0000
commitcf4e3e3d3b3a713ec4df7e995d5bf5caef045a09 (patch)
treee8e54211418a9dd798c9fc6f14f6bf3301f913aa /src/reflect
parent7841cb14d95cf64c29b865c8a761a9e00fbbb37c (diff)
downloadgo-cf4e3e3d3b3a713ec4df7e995d5bf5caef045a09.tar.gz
go-cf4e3e3d3b3a713ec4df7e995d5bf5caef045a09.zip
reflect: explain why convertible or comparable types may still panic
Conversions of slices to arrays may panic since the slice is too short. Comparibility of interfaces may panic since the underlying value is incomparable. This is a follow-up to CL 301652 Change-Id: Ia5d84a6e556a7b82c39add4be93ed7463e63cc8d Reviewed-on: https://go-review.googlesource.com/c/go/+/327589 Trust: Joe Tsai <joetsai@digital-static.net> Trust: Joe Tsai <thebrokentoaster@gmail.com> Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Katie Hockman <katie@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/type.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/reflect/type.go b/src/reflect/type.go
index 39414fc2a6..df863ae106 100644
--- a/src/reflect/type.go
+++ b/src/reflect/type.go
@@ -107,10 +107,14 @@ type Type interface {
// ConvertibleTo reports whether a value of the type is convertible to type u.
// Even if ConvertibleTo returns true, the conversion may still panic.
+ // For example, a slice of type []T is convertible to *[N]T,
+ // but the conversion will panic if its length is less than N.
ConvertibleTo(u Type) bool
// Comparable reports whether values of this type are comparable.
// Even if Comparable returns true, the comparison may still panic.
+ // For example, values of interface type are comparable,
+ // but the comparison will panic if their dynamic type is not comparable.
Comparable() bool
// Methods applicable only to some types, depending on Kind.