1 | package main |
---|---|
2 | |
3 | // Static tests of SSA builder (via the sanity checker). |
4 | // Dynamic semantics are not exercised. |
5 | |
6 | func init() { |
7 | // Regression test for issue 6806. |
8 | ch := make(chan int) |
9 | select { |
10 | case n, _ := <-ch: |
11 | _ = n |
12 | default: |
13 | // The default case disables the simplification of |
14 | // select to a simple receive statement. |
15 | } |
16 | |
17 | // value,ok-form receive where TypeOf(ok) is a named boolean. |
18 | type mybool bool |
19 | var x int |
20 | var y mybool |
21 | select { |
22 | case x, y = <-ch: |
23 | default: |
24 | // The default case disables the simplification of |
25 | // select to a simple receive statement. |
26 | } |
27 | _ = x |
28 | _ = y |
29 | } |
30 | |
31 | var a int |
32 | |
33 | // Regression test for issue 7840 (covered by SSA sanity checker). |
34 | func bug7840() bool { |
35 | // This creates a single-predecessor block with a φ-node. |
36 | return false && a == 0 && a == 0 |
37 | } |
38 | |
39 | // A blocking select (sans "default:") cannot fall through. |
40 | // Regression test for issue 7022. |
41 | func bug7022() int { |
42 | var c1, c2 chan int |
43 | select { |
44 | case <-c1: |
45 | return 123 |
46 | case <-c2: |
47 | return 456 |
48 | } |
49 | } |
50 | |
51 | // Parens should not prevent intrinsic treatment of built-ins. |
52 | // (Regression test for a crash.) |
53 | func init() { |
54 | _ = (new)(int) |
55 | _ = (make)([]int, 0) |
56 | } |
57 | |
58 | func main() {} |
59 |