mirror of
https://github.com/golang/go
synced 2024-11-26 04:17:59 -07:00
cmd/compile: prevent un-necessary wrapping in switch statement
Follow up discussion in CL 594575. The wrapping in "any" is only necessary if either casType or tagType is an interface, as "==" in this situation is implemented by upconverting to an interface anyway. Change-Id: I73da771d25685a23eec612ac696965c892db4764 Reviewed-on: https://go-review.googlesource.com/c/go/+/596555 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
d55253f5dd
commit
3f9360345c
@ -1665,7 +1665,7 @@ func (w *writer) switchStmt(stmt *syntax.SwitchStmt) {
|
||||
Outer:
|
||||
for _, clause := range stmt.Body {
|
||||
for _, cas := range syntax.UnpackListExpr(clause.Cases) {
|
||||
if casType := w.p.typeOf(cas); !types2.AssignableTo(casType, tagType) {
|
||||
if casType := w.p.typeOf(cas); !types2.AssignableTo(casType, tagType) && (types2.IsInterface(casType) || types2.IsInterface(tagType)) {
|
||||
tagType = types2.NewInterfaceType(nil, nil)
|
||||
break Outer
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user