//args: -Enlreturn package testdata func cha() { ch := make(chan interface{}) ch1 := make(chan interface{}) ch2 := make(chan interface{}) select { case <-ch: return case <-ch1: { a := 1 _ = a { a := 1 _ = a return // ERROR "return with no blank line before" } return } return case <-ch2: { a := 1 _ = a return // ERROR "return with no blank line before" } return // ERROR "return with no blank line before" } } func baz() { switch 0 { case 0: a := 1 _ = a fallthrough // ERROR "fallthrough with no blank line before" case 1: a := 1 _ = a break // ERROR "break with no blank line before" case 2: break } } func foo() int { v := []int{} for range v { return 0 } for range v { for range v { return 0 } return 0 // ERROR "return with no blank line before" } o := []int{ 0, 1, } return o[0] } func bar() int { o := 1 if o == 1 { if o == 0 { return 1 } return 0 // ERROR "return with no blank line before" } return o } func main() { return } func bugNoAssignSmthHandling() string { switch 0 { case 0: o := struct { foo string }{ "foo", } return o.foo // ERROR "return with no blank line before" case 1: o := struct { foo string }{ "foo", } return o.foo } return "" } func bugNoExprSmthHandling(string) { switch 0 { case 0: bugNoExprSmthHandling( "", ) return // ERROR "return with no blank line before" case 1: bugNoExprSmthHandling( "", ) return } } func bugNoDeferSmthHandling(string) { switch 0 { case 0: defer bugNoDeferSmthHandling( "", ) return // ERROR "return with no blank line before" case 1: defer bugNoDeferSmthHandling( "", ) return } } func bugNoGoSmthHandling(string) { switch 0 { case 0: go bugNoGoSmthHandling( "", ) return // ERROR "return with no blank line before" case 1: go bugNoGoSmthHandling( "", ) return } }