// run

// Copyright 2011 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.

// Test various parsing cases that are a little
// different now that send is a statement, not a expression.

package main

func main() {
	chanchan()
	sendprec()
}

func chanchan() {
	cc := make(chan chan int, 1)
	c := make(chan int, 1)
	cc <- c
	select {
	case <-cc <- 2:
	default:
		panic("nonblock")
	}
	if <-c != 2 {
		panic("bad receive")
	}
}

func sendprec() {
	c := make(chan bool, 1)
	c <- false || true	// not a syntax error: same as c <- (false || true)
	if !<-c {
		panic("sent false")
	}
}
