| // run |
| |
| // Copyright 2019 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. |
| |
| // Test break statements in a select. |
| // Gccgo had a bug in handling this. |
| // Test 1,2,3-case selects, so it covers both the general |
| // code path and the specialized optimizations for one- |
| // and two-case selects. |
| |
| package main |
| |
| var ch = make(chan int) |
| |
| func main() { |
| go func() { |
| for { |
| ch <- 5 |
| } |
| }() |
| |
| select { |
| case <-ch: |
| break |
| panic("unreachable") |
| } |
| |
| select { |
| default: |
| break |
| panic("unreachable") |
| } |
| |
| select { |
| case <-ch: |
| break |
| panic("unreachable") |
| default: |
| break |
| panic("unreachable") |
| } |
| |
| select { |
| case <-ch: |
| break |
| panic("unreachable") |
| case ch <- 10: |
| panic("unreachable") |
| default: |
| break |
| panic("unreachable") |
| } |
| } |