From 09c672d50a704a712b64df87796fba4c80a9db8d Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 29 Mar 2016 10:00:54 -0700 Subject: [PATCH] cmd/compile: add typChan Passes toolstash -cmp. Change-Id: I2c71882f957c44047c7ac83c78236dcc3dfa15a1 Reviewed-on: https://go-review.googlesource.com/21304 Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/parser.go | 16 ++++------------ src/cmd/compile/internal/gc/type.go | 8 ++++++++ src/cmd/compile/internal/gc/typecheck.go | 5 +---- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/src/cmd/compile/internal/gc/parser.go b/src/cmd/compile/internal/gc/parser.go index cf2d3be9ef5..90be80154dc 100644 --- a/src/cmd/compile/internal/gc/parser.go +++ b/src/cmd/compile/internal/gc/parser.go @@ -3050,9 +3050,7 @@ func (p *parser) hidden_type_misc() *Type { default: // LCHAN hidden_type_non_recv_chan s2 := p.hidden_type_non_recv_chan() - ss := typ(TCHAN) - ss.Type = s2 - ss.Chan = Cboth + ss := typeChan(s2, Cboth) return ss case '(': @@ -3060,18 +3058,14 @@ func (p *parser) hidden_type_misc() *Type { p.next() s3 := p.hidden_type_recv_chan() p.want(')') - ss := typ(TCHAN) - ss.Type = s3 - ss.Chan = Cboth + ss := typeChan(s3, Cboth) return ss case LCOMM: // LCHAN hidden_type p.next() s3 := p.hidden_type() - ss := typ(TCHAN) - ss.Type = s3 - ss.Chan = Csend + ss := typeChan(s3, Csend) return ss } @@ -3090,9 +3084,7 @@ func (p *parser) hidden_type_recv_chan() *Type { p.want(LCHAN) s3 := p.hidden_type() - ss := typ(TCHAN) - ss.Type = s3 - ss.Chan = Crecv + ss := typeChan(s3, Crecv) return ss } diff --git a/src/cmd/compile/internal/gc/type.go b/src/cmd/compile/internal/gc/type.go index 6f40b00bc09..6d0476eedb6 100644 --- a/src/cmd/compile/internal/gc/type.go +++ b/src/cmd/compile/internal/gc/type.go @@ -259,6 +259,14 @@ func typeDDDArray(elem *Type) *Type { return t } +// typeChan returns a new chan Type with direction dir. +func typeChan(elem *Type, dir uint8) *Type { + t := typ(TCHAN) + t.Type = elem + t.Chan = dir + return t +} + func newField() *Field { return &Field{ Offset: BADWIDTH, diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index ffd885671e8..b570d2dcd7b 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -413,10 +413,7 @@ OpSwitch: n.Type = nil return n } - t := typ(TCHAN) - t.Type = l.Type - // TODO(marvin): Fix Node.EType type union. - t.Chan = uint8(n.Etype) + t := typeChan(l.Type, uint8(n.Etype)) // TODO(marvin): Fix Node.EType type union. n.Op = OTYPE n.Type = t n.Left = nil