aboutsummaryrefslogtreecommitdiff
path: root/test/cmp6.go
diff options
context:
space:
mode:
authorRémy Oudompheng <oudomphe@phare.normalesup.org>2014-01-31 00:30:56 +0100
committerRémy Oudompheng <oudomphe@phare.normalesup.org>2014-01-31 00:30:56 +0100
commit502958ffa65440dd79a31f831114d51a610242ef (patch)
tree2c1bc413994916e061ab38e69418dc2baf57e8d8 /test/cmp6.go
parent1683dab725f66320d3d9d500b33233a11930f596 (diff)
downloadgo-502958ffa65440dd79a31f831114d51a610242ef.tar.gz
go-502958ffa65440dd79a31f831114d51a610242ef.zip
cmd/gc: do not consider length zero arrays as comparable.
Array values are comparable if values of the array element type are comparable. Fixes #6526. LGTM=khr R=rsc, bradfitz, khr CC=golang-codereviews https://golang.org/cl/58580043
Diffstat (limited to 'test/cmp6.go')
-rw-r--r--test/cmp6.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/test/cmp6.go b/test/cmp6.go
index 839c274bcc..7cf76044ef 100644
--- a/test/cmp6.go
+++ b/test/cmp6.go
@@ -18,7 +18,10 @@ type T3 struct{ z []int }
var t3 T3
-type T4 struct { _ []int; a float64 }
+type T4 struct {
+ _ []int
+ a float64
+}
var t4 T4
@@ -51,6 +54,14 @@ func main() {
use(p3 == p1)
use(p3 == p2)
+ // Arrays are comparable if and only if their element type is comparable.
+ var a1 [1]int
+ var a2 [1]func()
+ var a3 [0]func()
+ use(a1 == a1)
+ use(a2 == a2) // ERROR "invalid operation|invalid comparison"
+ use(a3 == a3) // ERROR "invalid operation|invalid comparison"
+
// Comparison of structs should have a good message
use(t3 == t3) // ERROR "struct|expected"
use(t4 == t4) // ERROR "cannot be compared|non-comparable"