1// run 2 3// Copyright 2019 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Test break statements in a select. 8// Gccgo had a bug in handling this. 9// Test 1,2,3-case selects, so it covers both the general 10// code path and the specialized optimizations for one- 11// and two-case selects. 12 13package main 14 15var ch = make(chan int) 16 17func main() { 18 go func() { 19 for { 20 ch <- 5 21 } 22 }() 23 24 select { 25 case <-ch: 26 break 27 panic("unreachable") 28 } 29 30 select { 31 default: 32 break 33 panic("unreachable") 34 } 35 36 select { 37 case <-ch: 38 break 39 panic("unreachable") 40 default: 41 break 42 panic("unreachable") 43 } 44 45 select { 46 case <-ch: 47 break 48 panic("unreachable") 49 case ch <- 10: 50 panic("unreachable") 51 default: 52 break 53 panic("unreachable") 54 } 55} 56