]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: don't use ."" as a pkg prefix
authorDaniel Martí <mvdan@mvdan.cc>
Wed, 24 May 2017 10:34:56 +0000 (11:34 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 9 Jun 2017 16:13:52 +0000 (16:13 +0000)
This results in names to unexported fields like
net.(*Dialer)."".deadline instead of net.(*Dialer).deadline.

Fixes #18419.

Change-Id: I0415c68b77cc16125c2401320f56308060ac3f25
Reviewed-on: https://go-review.googlesource.com/44070
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/dcl.go
test/fixedbugs/issue18419.dir/other.go [new file with mode: 0644]
test/fixedbugs/issue18419.dir/test.go [new file with mode: 0644]
test/fixedbugs/issue18419.go [new file with mode: 0644]

index 471a7e578b1f71bcb8362daf639f2a4c7e1db063..b8a5a90a0368a1c0d693b91ac1a54d6e37c396ec 100644 (file)
@@ -899,7 +899,7 @@ func methodsym(nsym *types.Sym, t0 *types.Type, iface bool) *types.Sym {
                spkg = s.Pkg
        }
        pkgprefix := ""
-       if (spkg == nil || nsym.Pkg != spkg) && !exportname(nsym.Name) {
+       if (spkg == nil || nsym.Pkg != spkg) && !exportname(nsym.Name) && nsym.Pkg.Prefix != `""` {
                pkgprefix = "." + nsym.Pkg.Prefix
        }
        var p string
diff --git a/test/fixedbugs/issue18419.dir/other.go b/test/fixedbugs/issue18419.dir/other.go
new file mode 100644 (file)
index 0000000..27243d2
--- /dev/null
@@ -0,0 +1,11 @@
+// Copyright 2017 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 other
+
+type Exported struct {
+       Member int
+}
+
+func (e *Exported) member() int { return 1 }
diff --git a/test/fixedbugs/issue18419.dir/test.go b/test/fixedbugs/issue18419.dir/test.go
new file mode 100644 (file)
index 0000000..31c6025
--- /dev/null
@@ -0,0 +1,15 @@
+// errorcheck -0 -m -l
+
+// Copyright 2017 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
+
+import "./other"
+
+func InMyCode(e *other.Exported) {
+       e.member() // ERROR "e\.member undefined .cannot refer to unexported field or method other\.\(\*Exported\)\.member."
+}
+
+func main() {}
diff --git a/test/fixedbugs/issue18419.go b/test/fixedbugs/issue18419.go
new file mode 100644 (file)
index 0000000..25544ef
--- /dev/null
@@ -0,0 +1,7 @@
+// errorcheckdir
+
+// Copyright 2015 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 ignored