| // 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 an 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") | |
| } | |
| } | |