]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: fix import of package with var func returning _
authorRuss Cox <rsc@golang.org>
Wed, 24 Sep 2014 20:53:34 +0000 (16:53 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 24 Sep 2014 20:53:34 +0000 (16:53 -0400)
Fixes #8280.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews, r
https://golang.org/cl/146240043

src/cmd/gc/fmt.c
test/fixedbugs/issue8280.dir/a.go [new file with mode: 0644]
test/fixedbugs/issue8280.dir/b.go [new file with mode: 0644]
test/fixedbugs/issue8280.go [new file with mode: 0644]

index 98556a658f3f2b88aae8d2f26b2b7ca2af133a5a..f67757449b63f388106bdf2284dc1890cf354848 100644 (file)
@@ -1108,16 +1108,11 @@ exprfmt(Fmt *f, Node *n, int prec)
 
        case ONAME:
                // Special case: name used as local variable in export.
-               switch(n->class&~PHEAP){
-               case PAUTO:
-               case PPARAM:
-               case PPARAMOUT:
-                       // _ becomes ~b%d internally; print as _ for export
-                       if(fmtmode == FExp && n->sym && n->sym->name[0] == '~' && n->sym->name[1] == 'b')
-                               return fmtprint(f, "_");
-                       if(fmtmode == FExp && n->sym && !isblank(n) && n->vargen > 0)
-                               return fmtprint(f, "%S·%d", n->sym, n->vargen);
-               }
+               // _ becomes ~b%d internally; print as _ for export
+               if(fmtmode == FExp && n->sym && n->sym->name[0] == '~' && n->sym->name[1] == 'b')
+                       return fmtprint(f, "_");
+               if(fmtmode == FExp && n->sym && !isblank(n) && n->vargen > 0)
+                       return fmtprint(f, "%S·%d", n->sym, n->vargen);
 
                // Special case: explicit name of func (*T) method(...) is turned into pkg.(*T).method,
                // but for export, this should be rendered as (*pkg.T).meth.
diff --git a/test/fixedbugs/issue8280.dir/a.go b/test/fixedbugs/issue8280.dir/a.go
new file mode 100644 (file)
index 0000000..588536e
--- /dev/null
@@ -0,0 +1,3 @@
+package a
+
+var Bar = func() (_ int) { return 0 }
diff --git a/test/fixedbugs/issue8280.dir/b.go b/test/fixedbugs/issue8280.dir/b.go
new file mode 100644 (file)
index 0000000..c46c554
--- /dev/null
@@ -0,0 +1,5 @@
+package b
+
+import "./a"
+
+var foo = a.Bar
diff --git a/test/fixedbugs/issue8280.go b/test/fixedbugs/issue8280.go
new file mode 100644 (file)
index 0000000..91256c8
--- /dev/null
@@ -0,0 +1,9 @@
+// compiledir
+
+// Copyright 2014 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.
+
+// Issue 8280: cannot import package exporting a func var returning a result named _
+
+package ignored