| // Conversions of channel direction. |
| ch := make(chan int) // @line c1make |
| print((<-chan int)(ch)) // @pointsto makechan@c1make:12 |
| print((chan<- int)(ch)) // @pointsto makechan@c1make:12 |
| // string -> []byte/[]rune conversion |
| ba := []byte(s) // @line c2ba |
| ra := []rune(s) // @line c2ra |
| print(ba) // @pointsto convert@c2ba:14 |
| print(ra) // @pointsto convert@c2ra:14 |
| // Conversion of same underlying types. |
| print(pi) // @pointsto main.a |
| print(pint) // @pointsto main.a |
| // Conversions between pointers to identical base types. |
| print(*x) // @pointsto main.a |
| print(*y) // @pointsto main.a |
| print(*y) // @pointsto main.a |
| // Handling of unsafe.Pointer conversion is unsound: |
| // we lose the alias to main.a and get something like new(int) instead. |
| p := (*int)(unsafe.Pointer(&a)) // @line c2p |
| print(p) // @pointsto convert@c2p:13 |
| // Regression test for b/8231. |