github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug243.go (about)

     1  // run
     2  
     3  // Copyright 2010 The Go Authors.  All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  package main
     8  
     9  import "errors"
    10  
    11  // Issue 481: closures and var declarations
    12  // with multiple variables assigned from one
    13  // function call.
    14  
    15  func main() {
    16  	var listen, _ = Listen("tcp", "127.0.0.1:0")
    17  
    18  	go func() {
    19  		for {
    20  			var conn, _ = listen.Accept()
    21  			_ = conn
    22  		}
    23  	}()
    24  
    25  	var conn, _ = Dial("tcp", "", listen.Addr().Error())
    26  	_ = conn
    27  }
    28  
    29  // Simulated net interface to exercise bug
    30  // without involving a real network.
    31  type T chan int
    32  
    33  var global T
    34  
    35  func Listen(x, y string) (T, string) {
    36  	global = make(chan int)
    37  	return global, y
    38  }
    39  
    40  func (t T) Addr() error {
    41  	return errors.New("stringer")
    42  }
    43  
    44  func (t T) Accept() (int, string) {
    45  	return <-t, ""
    46  }
    47  
    48  func Dial(x, y, z string) (int, string) {
    49  	global <- 1
    50  	return 0, ""
    51  }