| 1 | // Copyright 2021 The Go Authors. All rights reserved. |
|---|---|
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
| 5 | // go:build ignore |
| 6 | |
| 7 | package testdata |
| 8 | |
| 9 | func foo(c chan interface{}, j int) { |
| 10 | c <- j + 1 |
| 11 | } |
| 12 | |
| 13 | func Baz(i int) { |
| 14 | c := make(chan interface{}) |
| 15 | go foo(c, i) |
| 16 | x := <-c |
| 17 | print(x) |
| 18 | } |
| 19 | |
| 20 | // Relevant SSA: |
| 21 | // func foo(c chan interface{}, j int): |
| 22 | // t0 = j + 1:int |
| 23 | // t1 = make interface{} <- int (t0) |
| 24 | // send c <- t1 // t1 -> chan {}interface |
| 25 | // return |
| 26 | // |
| 27 | // func Baz(i int): |
| 28 | // t0 = make chan interface{} 0:int |
| 29 | // go foo(t0, i) |
| 30 | // t1 = <-t0 // chan {}interface -> t1 |
| 31 | // t2 = print(t1) |
| 32 | // return |
| 33 | |
| 34 | // WANT: |
| 35 | // Channel(chan interface{}) -> Local(t1) |
| 36 | // Local(t1) -> Channel(chan interface{}) |
| 37 |