// 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, ""
}
