mirror of
https://github.com/mgechev/revive.git
synced 2024-11-28 08:49:11 +02:00
91 lines
1.6 KiB
Go
91 lines
1.6 KiB
Go
package fixtures
|
|
|
|
import (
|
|
ast "go/ast"
|
|
"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 this 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 this 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)
|
|
}
|
|
}
|