1
0
mirror of https://github.com/golang/go synced 2024-11-20 06:44:40 -07:00

cmd/compile: remove redundant switch label

This label was added automatically by grind to remove gotos. As of
today, it's completely useless, as none of its uses need a label to
begin with.

While at it, remove all the redundant breaks too. Leave those that are
the single statement in a case clause body, as that's the style used
throughout std and cmd to clarify when cases are empty.

Change-Id: I3e20068b66b759614e903beab1cc9b2709b31063
Reviewed-on: https://go-review.googlesource.com/62950
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Daniel Martí 2017-09-11 21:10:43 +02:00
parent b86fae041b
commit 6d33df1d65

View File

@ -285,7 +285,6 @@ func typecheck1(n *Node, top int) *Node {
}
ok := 0
OpSwitch:
switch n.Op {
// until typecheck is complete, do nothing.
default:
@ -300,11 +299,9 @@ OpSwitch:
if n.Type == nil && n.Val().Ctype() == CTSTR {
n.Type = types.Idealstring
}
break OpSwitch
case ONONAME:
ok |= Erv
break OpSwitch
case ONAME:
if n.Name.Decldepth == 0 {
@ -312,7 +309,7 @@ OpSwitch:
}
if n.Etype != 0 {
ok |= Ecall
break OpSwitch
break
}
if top&Easgn == 0 {
@ -327,7 +324,6 @@ OpSwitch:
}
ok |= Erv
break OpSwitch
case OPACK:
yyerror("use of package %v without selector", n.Sym)
@ -505,7 +501,7 @@ OpSwitch:
checkwidth(l.Type)
}
n.Left = nil
break OpSwitch
break
}
if !t.IsPtr() {
@ -515,12 +511,11 @@ OpSwitch:
return n
}
break OpSwitch
break
}
ok |= Erv
n.Type = t.Elem()
break OpSwitch
// arithmetic exprs
case OASOP,
@ -597,7 +592,7 @@ OpSwitch:
// the outer context gives the type
n.Type = l.Type
break OpSwitch
break
}
// ideal mixed with non-ideal
@ -781,7 +776,6 @@ OpSwitch:
}
n.Type = t
break OpSwitch
case OCOM, OMINUS, ONOT, OPLUS:
ok |= Erv
@ -799,7 +793,6 @@ OpSwitch:
}
n.Type = t
break OpSwitch
// exprs
case OADDR:
@ -840,7 +833,6 @@ OpSwitch:
return n
}
n.Type = types.NewPtr(t)
break OpSwitch
case OCOMPLIT:
ok |= Erv
@ -848,7 +840,6 @@ OpSwitch:
if n.Type == nil {
return n
}
break OpSwitch
case OXDOT, ODOT:
if n.Op == OXDOT {
@ -899,7 +890,7 @@ OpSwitch:
n.Xoffset = 0
n.SetClass(PFUNC)
ok = Erv
break OpSwitch
break
}
if t.IsPtr() && !t.Elem().IsInterface() {
@ -956,8 +947,6 @@ OpSwitch:
ok |= Erv
}
break OpSwitch
case ODOTTYPE:
ok |= Erv
n.Left = typecheck(n.Left, Erv)
@ -1003,8 +992,6 @@ OpSwitch:
}
}
break OpSwitch
case OINDEX:
ok |= Erv
n.Left = typecheck(n.Left, Erv)
@ -1066,8 +1053,6 @@ OpSwitch:
n.Op = OINDEXMAP
}
break OpSwitch
case ORECV:
ok |= Etop | Erv
n.Left = typecheck(n.Left, Erv)
@ -1091,7 +1076,6 @@ OpSwitch:
}
n.Type = t.Elem()
break OpSwitch
case OSEND:
ok |= Etop
@ -1127,7 +1111,6 @@ OpSwitch:
n.Etype = 0
n.Type = nil
break OpSwitch
case OSLICE, OSLICE3:
ok |= Erv
@ -1202,7 +1185,6 @@ OpSwitch:
n.Type = nil
return n
}
break OpSwitch
// call and call like
case OCALL:
@ -1295,7 +1277,7 @@ OpSwitch:
typecheckaste(OCALL, n.Left, n.Isddd(), t.Params(), n.List, func() string { return fmt.Sprintf("argument to %v", n.Left) })
ok |= Etop
if t.NumResults() == 0 {
break OpSwitch
break
}
ok |= Erv
if t.NumResults() == 1 {
@ -1311,19 +1293,17 @@ OpSwitch:
n.Op = OGETG
}
break OpSwitch
break
}
// multiple return
if top&(Efnstruct|Etop) == 0 {
yyerror("multiple-value %v() in single-value context", l)
break OpSwitch
break
}
n.Type = l.Type.Results()
break OpSwitch
case OALIGNOF, OOFFSETOF, OSIZEOF:
ok |= Erv
if !onearg(n, "%v", n.Op) {
@ -1337,8 +1317,6 @@ OpSwitch:
r.Orig = n
n = &r
break OpSwitch
case OCAP, OLEN:
ok |= Erv
if !onearg(n, "%v", n.Op) {
@ -1389,7 +1367,6 @@ OpSwitch:
}
n.Type = types.Types[TINT]
break OpSwitch
case OREAL, OIMAG:
ok |= Erv
@ -1457,7 +1434,6 @@ OpSwitch:
Fatalf("unexpected Etype: %v\n", et)
}
n.Type = types.Types[et]
break OpSwitch
case OCOMPLEX:
ok |= Erv
@ -1539,7 +1515,6 @@ OpSwitch:
}
n.Type = t
break OpSwitch
case OCLOSE:
if !onearg(n, "%v", n.Op) {
@ -1567,7 +1542,6 @@ OpSwitch:
}
ok |= Etop
break OpSwitch
case ODELETE:
args := n.List
@ -1600,7 +1574,6 @@ OpSwitch:
}
args.SetSecond(assignconv(r, l.Type.Key(), "delete"))
break OpSwitch
case OAPPEND:
ok |= Erv
@ -1658,11 +1631,11 @@ OpSwitch:
if t.Elem().IsKind(TUINT8) && args.Second().Type.IsString() {
args.SetSecond(defaultlit(args.Second(), types.Types[TSTRING]))
break OpSwitch
break
}
args.SetSecond(assignconv(args.Second(), t.Orig, "append"))
break OpSwitch
break
}
if funarg != nil {
@ -1682,8 +1655,6 @@ OpSwitch:
}
}
break OpSwitch
case OCOPY:
ok |= Etop | Erv
args := n.List
@ -1719,7 +1690,7 @@ OpSwitch:
// copy([]byte, string)
if n.Left.Type.IsSlice() && n.Right.Type.IsString() {
if eqtype(n.Left.Type.Elem(), types.Bytetype) {
break OpSwitch
break
}
yyerror("arguments to copy have different element types: %L and string", n.Left.Type)
n.Type = nil
@ -1744,8 +1715,6 @@ OpSwitch:
return n
}
break OpSwitch
case OCONV:
ok |= Erv
saveorignode(n)
@ -1797,8 +1766,6 @@ OpSwitch:
}
}
break OpSwitch
case OMAKE:
ok |= Erv
args := n.List.Slice()
@ -1909,7 +1876,6 @@ OpSwitch:
}
n.Type = t
break OpSwitch
case ONEW:
ok |= Erv
@ -1935,7 +1901,6 @@ OpSwitch:
n.Left = l
n.Type = types.NewPtr(t)
break OpSwitch
case OPRINT, OPRINTN:
ok |= Etop
@ -1950,8 +1915,6 @@ OpSwitch:
}
}
break OpSwitch
case OPANIC:
ok |= Etop
if !onearg(n, "panic") {
@ -1964,7 +1927,6 @@ OpSwitch:
n.Type = nil
return n
}
break OpSwitch
case ORECOVER:
ok |= Erv | Etop
@ -1975,7 +1937,6 @@ OpSwitch:
}
n.Type = types.Types[TINTER]
break OpSwitch
case OCLOSURE:
ok |= Erv
@ -1983,7 +1944,6 @@ OpSwitch:
if n.Type == nil {
return n
}
break OpSwitch
case OITAB:
ok |= Erv
@ -1997,13 +1957,11 @@ OpSwitch:
Fatalf("OITAB of %v", t)
}
n.Type = types.NewPtr(types.Types[TUINTPTR])
break OpSwitch
case OIDATA:
// Whoever creates the OIDATA node must know a priori the concrete type at that moment,
// usually by just having checked the OITAB.
Fatalf("cannot typecheck interface data %v", n)
break OpSwitch
case OSPTR:
ok |= Erv
@ -2021,22 +1979,18 @@ OpSwitch:
} else {
n.Type = types.NewPtr(t.Elem())
}
break OpSwitch
case OCLOSUREVAR:
ok |= Erv
break OpSwitch
case OCFUNC:
ok |= Erv
n.Left = typecheck(n.Left, Erv)
n.Type = types.Types[TUINTPTR]
break OpSwitch
case OCONVNOP:
ok |= Erv
n.Left = typecheck(n.Left, Erv)
break OpSwitch
// statements
case OAS:
@ -2048,12 +2002,10 @@ OpSwitch:
if n.Left.Op == ONAME && n.Left.IsAutoTmp() {
n.Left.Name.Defn = n
}
break OpSwitch
case OAS2:
ok |= Etop
typecheckas2(n)
break OpSwitch
case OBREAK,
OCONTINUE,
@ -2064,7 +2016,6 @@ OpSwitch:
OVARKILL,
OVARLIVE:
ok |= Etop
break OpSwitch
case OLABEL:
ok |= Etop
@ -2076,7 +2027,6 @@ OpSwitch:
n.Op = OEMPTY
n.Left = nil
}
break OpSwitch
case ODEFER:
ok |= Etop
@ -2084,13 +2034,11 @@ OpSwitch:
if !n.Left.Diag() {
checkdefergo(n)
}
break OpSwitch
case OPROC:
ok |= Etop
n.Left = typecheck(n.Left, Etop|Erv)
checkdefergo(n)
break OpSwitch
case OFOR, OFORUNTIL:
ok |= Etop
@ -2106,7 +2054,6 @@ OpSwitch:
n.Right = typecheck(n.Right, Etop)
typecheckslice(n.Nbody.Slice(), Etop)
decldepth--
break OpSwitch
case OIF:
ok |= Etop
@ -2120,7 +2067,6 @@ OpSwitch:
}
typecheckslice(n.Nbody.Slice(), Etop)
typecheckslice(n.Rlist.Slice(), Etop)
break OpSwitch
case ORETURN:
ok |= Etop
@ -2136,29 +2082,24 @@ OpSwitch:
}
if Curfn.Type.FuncType().Outnamed && n.List.Len() == 0 {
break OpSwitch
break
}
typecheckaste(ORETURN, nil, false, Curfn.Type.Results(), n.List, func() string { return "return argument" })
break OpSwitch
case ORETJMP:
ok |= Etop
break OpSwitch
case OSELECT:
ok |= Etop
typecheckselect(n)
break OpSwitch
case OSWITCH:
ok |= Etop
typecheckswitch(n)
break OpSwitch
case ORANGE:
ok |= Etop
typecheckrange(n)
break OpSwitch
case OTYPESW:
yyerror("use of .(type) outside type switch")
@ -2169,17 +2110,14 @@ OpSwitch:
ok |= Etop
typecheckslice(n.List.Slice(), Erv)
typecheckslice(n.Nbody.Slice(), Etop)
break OpSwitch
case ODCLFUNC:
ok |= Etop
typecheckfunc(n)
break OpSwitch
case ODCLCONST:
ok |= Etop
n.Left = typecheck(n.Left, Erv)
break OpSwitch
case ODCLTYPE:
ok |= Etop
@ -2191,7 +2129,6 @@ OpSwitch:
// could silently propagate go:notinheap).
yyerror("type %v must be go:notinheap", n.Left.Type)
}
break OpSwitch
}
t := n.Type