// Copyright 2013 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // terminating statements package stmt1 func _() {} func _() int {} /* ERROR "missing return" */ func _() int { panic(0) } func _() int { (panic(0)) } // block statements func _(x, y int) (z int) { { return } } func _(x, y int) (z int) { { return; ; ; // trailing empty statements are ok } ; ; ; } func _(x, y int) (z int) { { } } /* ERROR "missing return" */ func _(x, y int) (z int) { { ; ; ; } ; ; ; } /* ERROR "missing return" */ // if statements func _(x, y int) (z int) { if x < y { return } return 1 } func _(x, y int) (z int) { if x < y { return; ; ; ; } return 1 } func _(x, y int) (z int) { if x < y { return } return 1; ; } func _(x, y int) (z int) { if x < y { return } } /* ERROR "missing return" */ func _(x, y int) (z int) { if x < y { } else { return 1 } } /* ERROR "missing return" */ func _(x, y int) (z int) { if x < y { return } else { return } } // for statements func _(x, y int) (z int) { for x < y { return } } /* ERROR "missing return" */ func _(x, y int) (z int) { for { return } } func _(x, y int) (z int) { for { return; ; ; ; } } func _(x, y int) (z int) { for { return break } ; ; ; } /* ERROR "missing return" */ func _(x, y int) (z int) { for { for { break } return } } func _(x, y int) (z int) { for { for { break } return ; ; } ; } func _(x, y int) (z int) { L: for { for { break L } return } } /* ERROR "missing return" */ // switch statements func _(x, y int) (z int) { switch x { case 0: return default: return } } func _(x, y int) (z int) { switch x { case 0: return; default: return; ; ; } } func _(x, y int) (z int) { switch x { case 0: return } } /* ERROR "missing return" */ func _(x, y int) (z int) { switch x { case 0: return case 1: break } } /* ERROR "missing return" */ func _(x, y int) (z int) { switch x { case 0: return default: switch y { case 0: break } panic(0) } } func _(x, y int) (z int) { switch x { case 0: return default: switch y { case 0: break } panic(0); ; ; } ; } func _(x, y int) (z int) { L: switch x { case 0: return default: switch y { case 0: break L } panic(0) } } /* ERROR "missing return" */ // select statements func _(ch chan int) (z int) { select {} } // nice! func _(ch chan int) (z int) { select {} ; ; } func _(ch chan int) (z int) { select { default: break } } /* ERROR "missing return" */ func _(ch chan int) (z int) { select { case <-ch: return default: break } } /* ERROR "missing return" */ func _(ch chan int) (z int) { select { case <-ch: return default: for i := 0; i < 10; i++ { break } return } } func _(ch chan int) (z int) { select { case <-ch: return; ; ; default: for i := 0; i < 10; i++ { break } return; ; ; } ; ; ; } func _(ch chan int) (z int) { L: select { case <-ch: return default: for i := 0; i < 10; i++ { break L } return } ; ; ; } /* ERROR "missing return" */ func parenPanic() int { ((((((panic)))(0)))) } func issue23218a() int { { panic := func(interface{}){} panic(0) } } /* ERROR "missing return" */ func issue23218b() int { { panic := func(interface{}){} ((((panic))))(0) } } /* ERROR "missing return" */