| package main |
| |
| // Static tests of SSA builder (via the sanity checker). |
| // Dynamic semantics are not exercised. |
| |
| func init() { |
| // Regression test for issue 6806. |
| ch := make(chan int) |
| select { |
| case n, _ := <-ch: |
| _ = n |
| default: |
| // The default case disables the simplification of |
| // select to a simple receive statement. |
| } |
| |
| // value,ok-form receive where TypeOf(ok) is a named boolean. |
| type mybool bool |
| var x int |
| var y mybool |
| select { |
| case x, y = <-ch: |
| default: |
| // The default case disables the simplification of |
| // select to a simple receive statement. |
| } |
| _ = x |
| _ = y |
| } |
| |
| var a int |
| |
| // Regression test for issue 7840 (covered by SSA sanity checker). |
| func bug7840() bool { |
| // This creates a single-predecessor block with a φ-node. |
| return false && a == 0 && a == 0 |
| } |
| |
| // A blocking select (sans "default:") cannot fall through. |
| // Regression test for issue 7022. |
| func bug7022() int { |
| var c1, c2 chan int |
| select { |
| case <-c1: |
| return 123 |
| case <-c2: |
| return 456 |
| } |
| } |
| |
| // Parens should not prevent intrinsic treatment of built-ins. |
| // (Regression test for a crash.) |
| func init() { |
| _ = (new)(int) |
| _ = (make)([]int, 0) |
| } |
| |
| func main() {} |