10 // Conversions of channel direction.
11 ch := make(chan int) // @line c1make
12 print((<-chan int)(ch)) // @pointsto makechan@c1make:12
13 print((chan<- int)(ch)) // @pointsto makechan@c1make:12
17 // string -> []byte/[]rune conversion
19 ba := []byte(s) // @line c2ba
20 ra := []rune(s) // @line c2ra
21 print(ba) // @pointsto convert@c2ba:14
22 print(ra) // @pointsto convert@c2ra:14
26 // Conversion of same underlying types.
29 print(pi) // @pointsto main.a
32 print(pint) // @pointsto main.a
34 // Conversions between pointers to identical base types.
36 var x **int = (**int)(y)
37 print(*x) // @pointsto main.a
38 print(*y) // @pointsto main.a
40 print(*y) // @pointsto main.a
44 // Handling of unsafe.Pointer conversion is unsound:
45 // we lose the alias to main.a and get something like new(int) instead.
46 p := (*int)(unsafe.Pointer(&a)) // @line c2p
47 print(p) // @pointsto convert@c2p:13
50 // Regression test for b/8231.