mirror of
https://github.com/golang/go
synced 2024-11-21 18:24:46 -07:00
channel types parsed not according to spec by 6g
R=r, rsc CC=golang-dev https://golang.org/cl/193101
This commit is contained in:
parent
3884f7321f
commit
f4dfbd1cf0
39
test/bugs/bug249.go
Normal file
39
test/bugs/bug249.go
Normal file
@ -0,0 +1,39 @@
|
||||
// errchk $G $D/$F.go
|
||||
|
||||
// Copyright 2009 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.
|
||||
|
||||
package main
|
||||
|
||||
var c1 chan<- chan int
|
||||
var c2 chan<- (chan int) // same type as c1 according to gccgo, gofmt
|
||||
var c3 chan (<-chan int) // same type as c1 according to 6g
|
||||
|
||||
func main() {
|
||||
c1 = c2 // this should be ok, bug 6g doesn't accept it
|
||||
c1 = c3 // ERROR "chan"
|
||||
}
|
||||
|
||||
/*
|
||||
Channel types are parsed differently by 6g then by gccgo and gofmt.
|
||||
The channel type specification ( http://golang.org/doc/go_spec.html#Channel_types )
|
||||
says that a channel type is either
|
||||
|
||||
chan ElementType
|
||||
chan <- ElementType
|
||||
<-chan ElementType
|
||||
|
||||
which indicates that the <- binds to the chan token (not to the ElementType).
|
||||
So:
|
||||
|
||||
chan <- chan int
|
||||
|
||||
should be parsed as
|
||||
|
||||
chan<- (chan int)
|
||||
|
||||
Both gccgo and gofmt adhere to this, while 6g parses this as
|
||||
|
||||
chan (<-chan int)
|
||||
*/
|
@ -154,3 +154,10 @@ BUG: tuple evaluation order
|
||||
bugs/bug246.go:17: cannot convert 0 to type unsafe.Pointer
|
||||
bugs/bug246.go:17: cannot convert 0 (type uintptr) to type *int in conversion
|
||||
BUG: bug246
|
||||
|
||||
=========== bugs/bug249.go
|
||||
BUG: errchk: bugs/bug249.go:15: missing expected error: 'chan'
|
||||
errchk: bugs/bug249.go: unmatched error messages:
|
||||
==================================================
|
||||
bugs/bug249.go:14: cannot use c2 (type chan<- (chan int)) as type chan <-chan int in assignment
|
||||
==================================================
|
||||
|
Loading…
Reference in New Issue
Block a user