mirror of
https://github.com/golang/go
synced 2024-11-21 18:04:40 -07:00
gc: fix send precedence
Test and fix case found by Robert. Add receive inside send to tree too. R=ken2 CC=golang-dev https://golang.org/cl/3973052
This commit is contained in:
parent
5887ef7571
commit
0e47460915
@ -93,9 +93,10 @@ static void fixlbrace(int);
|
||||
%type <type> hidden_type_func
|
||||
%type <type> hidden_type_recv_chan hidden_type_non_recv_chan
|
||||
|
||||
%left LCOMM /* outside the usual hierarchy; here for good error messages */
|
||||
|
||||
%left LOROR
|
||||
%left LANDAND
|
||||
%left LCOMM
|
||||
%left LEQ LNE LLE LGE LLT LGT
|
||||
%left '+' '-' '|' '^'
|
||||
%left '*' '/' '%' '&' LLSH LRSH LANDNOT
|
||||
|
37
test/chan/sendstmt.go
Normal file
37
test/chan/sendstmt.go
Normal file
@ -0,0 +1,37 @@
|
||||
// $G $D/$F.go && $L $F.$A && ./$A.out
|
||||
|
||||
// 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")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user