// compile | |
// Copyright 2012 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
// Issue 4529: escape analysis crashes on "go f(g())" | |
// when g has multiple returns. | |
package main | |
type M interface{} | |
type A struct { | |
a string | |
b chan M | |
} | |
func (a *A) I() (b <-chan M, c chan<- M) { | |
a.b, c = make(chan M), make(chan M) | |
b = a.b | |
return | |
} | |
func Init(a string, b *A, c interface { | |
I() (<-chan M, chan<- M) | |
}) { | |
b.a = a | |
go b.c(c.I()) | |
} | |
func (a *A) c(b <-chan M, _ chan<- M) {} |