mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
gc: implement nil chan support
The spec has defined nil chans this way for months. I'm behind. R=ken2 CC=golang-dev https://golang.org/cl/4897050
This commit is contained in:
parent
65bde087ae
commit
3770b0e60c
9 changed files with 93 additions and 110 deletions
|
|
@ -1162,7 +1162,7 @@ func (iv internalValue) recv(nb bool) (val Value, ok bool) {
|
|||
if ch == 0 {
|
||||
panic("recv on nil channel")
|
||||
}
|
||||
valWord, selected, ok := chanrecv(ch, nb)
|
||||
valWord, selected, ok := chanrecv(iv.typ.runtimeType(), ch, nb)
|
||||
if selected {
|
||||
val = valueFromIword(0, t.Elem(), valWord)
|
||||
}
|
||||
|
|
@ -1192,7 +1192,7 @@ func (iv internalValue) send(x Value, nb bool) (selected bool) {
|
|||
if ch == 0 {
|
||||
panic("send on nil channel")
|
||||
}
|
||||
return chansend(ch, ix.word, nb)
|
||||
return chansend(iv.typ.runtimeType(), ch, ix.word, nb)
|
||||
}
|
||||
|
||||
// Set assigns x to the value v.
|
||||
|
|
@ -1720,8 +1720,8 @@ func convertForAssignment(what string, addr unsafe.Pointer, dst Type, iv interna
|
|||
func chancap(ch iword) int32
|
||||
func chanclose(ch iword)
|
||||
func chanlen(ch iword) int32
|
||||
func chanrecv(ch iword, nb bool) (val iword, selected, received bool)
|
||||
func chansend(ch iword, val iword, nb bool) bool
|
||||
func chanrecv(t *runtime.Type, ch iword, nb bool) (val iword, selected, received bool)
|
||||
func chansend(t *runtime.Type, ch iword, val iword, nb bool) bool
|
||||
|
||||
func makechan(typ *runtime.Type, size uint32) (ch iword)
|
||||
func makemap(t *runtime.Type) iword
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue