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
*bad = t;
return ANOEQ;
}
- if(t->bound == 0)
- return AMEM;
a = algtype1(t->type, bad);
if(a == ANOEQ || a == AMEM) {
if(a == ANOEQ && bad)
var t3 T3
-type T4 struct { _ []int; a float64 }
+type T4 struct {
+ _ []int
+ a float64
+}
var t4 T4
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"