mirror of
https://github.com/golang/go
synced 2024-11-21 16:54:46 -07:00
gc: do not compile switch on interface values into a binary search.
Fixes #2672. R=golang-dev, lvd CC=golang-dev, remy https://golang.org/cl/5543058
This commit is contained in:
parent
a9e1f6d7a6
commit
6b72b07016
@ -540,7 +540,7 @@ loop:
|
||||
}
|
||||
|
||||
// deal with the variables one-at-a-time
|
||||
if(c0->type != Texprconst) {
|
||||
if(!okforcmp[t->etype] || c0->type != Texprconst) {
|
||||
a = exprbsw(c0, 1, arg);
|
||||
cas = list(cas, a);
|
||||
c0 = c0->link;
|
||||
|
30
test/fixedbugs/bug393.go
Normal file
30
test/fixedbugs/bug393.go
Normal file
@ -0,0 +1,30 @@
|
||||
// $G $D/$F.go || echo BUG: bug393
|
||||
|
||||
// Copyright 2012 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// issue 2672
|
||||
// was trying binary search with an interface type
|
||||
|
||||
package main
|
||||
|
||||
func f(x interface{}) int {
|
||||
switch x {
|
||||
case 1:
|
||||
return 1
|
||||
case 2:
|
||||
return 2
|
||||
case 3:
|
||||
return 3
|
||||
case 4:
|
||||
return 4
|
||||
case "5":
|
||||
return 5
|
||||
case "6":
|
||||
return 6
|
||||
default:
|
||||
return 7
|
||||
}
|
||||
panic("switch")
|
||||
}
|
Loading…
Reference in New Issue
Block a user