summaryrefslogtreecommitdiff
path: root/test/blank1.go
diff options
context:
space:
mode:
authorR?my Oudompheng <oudomphe@phare.normalesup.org>2013-07-02 09:08:43 +0200
committerR?my Oudompheng <oudomphe@phare.normalesup.org>2013-07-02 09:08:43 +0200
commitad500041ea3b0e6c9dbb63035f8aa2d219520713 (patch)
tree48474c9115b4a26892e096413bd7d51ed6c71ebd /test/blank1.go
parent23f1ec666073f3d4f013bb03c5d65ba1a39e1d4b (diff)
downloadgo-ad500041ea3b0e6c9dbb63035f8aa2d219520713.tar.gz
cmd/gc: fix computation of equality class of types.
A struct with a single field was considered as equivalent to the field type, which is incorrect is the field is blank. Fields with padding could make the compiler think some types are comparable when they are not. Fixes issue 5698. R=rsc, golang-dev, daniel.morsing, bradfitz, gri, r CC=golang-dev https://codereview.appspot.com/10271046
Diffstat (limited to 'test/blank1.go')
-rw-r--r--test/blank1.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/test/blank1.go b/test/blank1.go
index 4edb2db70..f46a50051 100644
--- a/test/blank1.go
+++ b/test/blank1.go
@@ -13,9 +13,16 @@ var t struct {
_ int
}
+type T struct {
+ _ []int
+}
+
func main() {
_() // ERROR "cannot use _ as value"
x := _+1 // ERROR "cannot use _ as value"
_ = x
_ = t._ // ERROR "cannot refer to blank field"
+
+ var v1, v2 T
+ _ = v1 == v2 // ERROR "cannot be compared|non-comparable"
}