mirror of
https://github.com/mgechev/revive.git
synced 2025-01-26 03:52:12 +02:00
88 lines
1.5 KiB
Go
88 lines
1.5 KiB
Go
package fixtures
|
|
|
|
import "reflect"
|
|
|
|
func UselessBreaks() {
|
|
|
|
switch {
|
|
case true:
|
|
break // MATCH /useless break in case clause/
|
|
case false:
|
|
if false {
|
|
break
|
|
}
|
|
}
|
|
|
|
select {
|
|
case c:
|
|
break // MATCH /useless break in case clause/
|
|
case n:
|
|
if true {
|
|
if false {
|
|
break
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
for {
|
|
switch {
|
|
case c1:
|
|
break // MATCH /useless break in case clause (WARN: this break statement affects the switch or select statement and not the loop enclosing it)/
|
|
}
|
|
}
|
|
|
|
for _, node := range desc.Args {
|
|
switch node := node.(type) {
|
|
case *ast.FuncLit:
|
|
found = true
|
|
funcLit = node
|
|
break // MATCH /useless break in case clause (WARN: this break statement affects the switch or select statement and not the loop enclosing it)/
|
|
}
|
|
}
|
|
|
|
switch val.Kind() {
|
|
case reflect.Array, reflect.Slice:
|
|
if val.Len() == 0 {
|
|
break
|
|
}
|
|
for i := 0; i < val.Len(); i++ {
|
|
oneIteration(reflect.ValueOf(i), val.Index(i))
|
|
}
|
|
return
|
|
case reflect.Map:
|
|
if val.Len() == 0 {
|
|
break
|
|
}
|
|
om := fmtsort.Sort(val)
|
|
for i, key := range om.Key {
|
|
oneIteration(key, om.Value[i])
|
|
}
|
|
return
|
|
case reflect.Chan:
|
|
if val.IsNil() {
|
|
break
|
|
}
|
|
if val.Type().ChanDir() == reflect.SendDir {
|
|
s.errorf("range over send-only channel %v", val)
|
|
break
|
|
}
|
|
i := 0
|
|
for ; ; i++ {
|
|
elem, ok := val.Recv()
|
|
if !ok {
|
|
break
|
|
}
|
|
oneIteration(reflect.ValueOf(i), elem)
|
|
}
|
|
if i == 0 {
|
|
break
|
|
}
|
|
return
|
|
case reflect.Invalid:
|
|
break // MATCH /useless break in case clause/
|
|
default:
|
|
s.errorf("range can't iterate over %v", val)
|
|
}
|
|
}
|