]> Cypherpunks repositories - gostls13.git/commitdiff
gc: bug306
authorRuss Cox <rsc@golang.org>
Mon, 13 Sep 2010 19:42:14 +0000 (15:42 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 13 Sep 2010 19:42:14 +0000 (15:42 -0400)
Fixes #1040.

R=ken2
CC=golang-dev
https://golang.org/cl/2132047

src/cmd/gc/print.c
src/cmd/gc/subr.c
test/fixedbugs/bug306.dir/p1.go [new file with mode: 0644]
test/fixedbugs/bug306.dir/p2.go [new file with mode: 0644]
test/fixedbugs/bug306.go [new file with mode: 0644]

index bb6ebfe36b29dfee89df14e26af2a12a7032ec95..5db118f06a54cdbd655af2f58749424dc6cb9704 100644 (file)
@@ -192,7 +192,7 @@ exprfmt(Fmt *f, Node *n, int prec)
                        exprfmt(f, n->left, 0);
                } else {
                        fmtprint(f, " ");
-                       if(n->left->op == OTCHAN && n->left->etype == Crecv) {
+                       if(n->left->op == OTCHAN && n->left->sym == S && n->left->etype == Crecv) {
                                fmtprint(f, "(");
                                exprfmt(f, n->left, 0);
                                fmtprint(f, ")");
index 9c9377c4f589ea0dd0bf1cc637d650374b350795..d938c2d6590f64a94d0dcf8a8b1483a349865fc6 100644 (file)
@@ -1161,7 +1161,7 @@ Tpretty(Fmt *fp, Type *t)
                case Csend:
                        return fmtprint(fp, "chan<- %T", t->type);
                }
-               if(t->type != T && t->type->etype == TCHAN && t->type->chan == Crecv)
+               if(t->type != T && t->type->etype == TCHAN && t->type->sym == S && t->type->chan == Crecv)
                        return fmtprint(fp, "chan (%T)", t->type);
                return fmtprint(fp, "chan %T", t->type);
 
diff --git a/test/fixedbugs/bug306.dir/p1.go b/test/fixedbugs/bug306.dir/p1.go
new file mode 100644 (file)
index 0000000..bf87ea1
--- /dev/null
@@ -0,0 +1,9 @@
+// Copyright 2010 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 p1
+
+type T <-chan int
+var x = make(chan T)
+
diff --git a/test/fixedbugs/bug306.dir/p2.go b/test/fixedbugs/bug306.dir/p2.go
new file mode 100644 (file)
index 0000000..3f8bd9d
--- /dev/null
@@ -0,0 +1,8 @@
+// Copyright 2010 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 p2
+
+import _ "./p1"
+
diff --git a/test/fixedbugs/bug306.go b/test/fixedbugs/bug306.go
new file mode 100644 (file)
index 0000000..a0a4350
--- /dev/null
@@ -0,0 +1,7 @@
+// $G $D/$F.dir/p1.go && $G $D/$F.dir/p2.go
+
+// Copyright 2010 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.
+
+ignored