|  | // run | 
|  |  | 
|  | // Copyright 2010 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. | 
|  |  | 
|  | package main | 
|  |  | 
|  | import "errors" | 
|  |  | 
|  | // Issue 481: closures and var declarations | 
|  | // with multiple variables assigned from one | 
|  | // function call. | 
|  |  | 
|  | func main() { | 
|  | var listen, _ = Listen("tcp", "127.0.0.1:0") | 
|  |  | 
|  | go func() { | 
|  | for { | 
|  | var conn, _ = listen.Accept() | 
|  | _ = conn | 
|  | } | 
|  | }() | 
|  |  | 
|  | var conn, _ = Dial("tcp", "", listen.Addr().Error()) | 
|  | _ = conn | 
|  | } | 
|  |  | 
|  | // Simulated net interface to exercise bug | 
|  | // without involving a real network. | 
|  | type T chan int | 
|  |  | 
|  | var global T | 
|  |  | 
|  | func Listen(x, y string) (T, string) { | 
|  | global = make(chan int) | 
|  | return global, y | 
|  | } | 
|  |  | 
|  | func (t T) Addr() error { | 
|  | return errors.New("stringer") | 
|  | } | 
|  |  | 
|  | func (t T) Accept() (int, string) { | 
|  | return <-t, "" | 
|  | } | 
|  |  | 
|  | func Dial(x, y, z string) (int, string) { | 
|  | global <- 1 | 
|  | return 0, "" | 
|  | } |