mirror of
https://github.com/mgechev/revive.git
synced 2024-11-28 08:49:11 +02:00
4bb48df5d2
* refactor: extract shared code for linting if-else chains The rules "early-return", "indent-error-flow" and "superfluous-else" have a similar structure. This moves the common logic for classifying if-else chains to a common package. A few side benefits: - "early-return" now handles os.Exit/log.Panicf/etc - "superfluous-else" now handles (builtin) panic - "superfluous-else" and "indent-error-flow" now handle if/else chains with 2+ "if" branches * internal/ifelse: style fixes, renames, spelling
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
// Test of return+else warning.
|
|
|
|
// Package pkg ...
|
|
package pkg
|
|
|
|
import "log"
|
|
|
|
func f(x int) bool {
|
|
if x > 0 {
|
|
return true
|
|
} else { // MATCH /if block ends with a return statement, so drop this else and outdent its block/
|
|
log.Printf("non-positive x: %d", x)
|
|
}
|
|
return false
|
|
}
|
|
|
|
func g(f func() bool) string {
|
|
if ok := f(); ok {
|
|
return "it's okay"
|
|
} else { // MATCH /if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary)/
|
|
return "it's NOT okay!"
|
|
}
|
|
}
|
|
|
|
func h(f func() bool, x int) string {
|
|
if err == author.ErrCourseNotFound {
|
|
return
|
|
} else if err == author.ErrCourseAccess {
|
|
// side effect
|
|
} else if err == author.AnotherError {
|
|
return "okay"
|
|
} else {
|
|
if ok := f(); ok {
|
|
return "it's okay"
|
|
} else { // MATCH /if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary)/
|
|
return "it's NOT okay!"
|
|
}
|
|
}
|
|
}
|
|
|
|
func i() string {
|
|
if err == author.ErrCourseNotFound {
|
|
return "not found"
|
|
} else if err == author.AnotherError {
|
|
return "something else"
|
|
} else { // MATCH /if block ends with a return statement, so drop this else and outdent its block/
|
|
return "okay"
|
|
}
|
|
}
|