...
Run Format

Source file test/fixedbugs/issue4313.go

Documentation: test/fixedbugs

  // run
  
  // 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.
  
  // Order of operations in select.
  
  package main
  
  func main() {
  	c := make(chan int, 1)
  	x := 0
  	select {
  	case c <- x: // should see x = 0, not x = 42 (after makec)
  	case <-makec(&x): // should be evaluated only after c and x on previous line
  	}
  	y := <-c
  	if y != 0 {
  		panic(y)
  	}
  }
  
  func makec(px *int) chan bool {
  	if false { for {} }
  	*px = 42
  	return make(chan bool, 0)
  }
  

View as plain text