diff options
author | Daniel Morsing <daniel.morsing@gmail.com> | 2012-09-22 05:54:37 +1000 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2012-09-22 05:54:37 +1000 |
commit | c7c975809b53b8af0012a71334fa63c37348f592 (patch) | |
tree | a33d7f4f6bf65a2a8c62ada335418baf99ad9185 | |
parent | dde4af36555c8a0b25ea61103c337c16dbdc53bd (diff) | |
download | go-c7c975809b53b8af0012a71334fa63c37348f592.tar.gz go-c7c975809b53b8af0012a71334fa63c37348f592.zip |
[release-branch.go1] cmd/gc: Don't claim type assertion would help when it wont.
««« backport b76339cc168a
cmd/gc: Don't claim type assertion would help when it wont.
Fixes #3465.
R=golang-dev, rsc, remyoudompheng, iant
CC=golang-dev
https://golang.org/cl/6448097
»»»
-rw-r--r-- | src/cmd/gc/subr.c | 2 | ||||
-rw-r--r-- | test/interface/explicit.go | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index b56e848db7..c264974241 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -1214,7 +1214,7 @@ assignop(Type *src, Type *dst, char **why) return 0; } if(src->etype == TINTER && dst->etype != TBLANK) { - if(why != nil) + if(why != nil && implements(dst, src, &missing, &have, &ptr)) *why = ": need type assertion"; return 0; } diff --git a/test/interface/explicit.go b/test/interface/explicit.go index d19480a685..7822b88d08 100644 --- a/test/interface/explicit.go +++ b/test/interface/explicit.go @@ -40,7 +40,7 @@ func main() { // because i has an extra method // that t does not, so i cannot contain a t. i = t // ERROR "incompatible|missing M method" - t = i // ERROR "incompatible|need type assertion" + t = i // ERROR "incompatible|assignment$" i = i2 // ok i2 = i // ERROR "incompatible|missing N method" |