From: Daniel Martí Date: Wed, 24 May 2017 10:34:56 +0000 (+0100) Subject: cmd/compile: don't use ."" as a pkg prefix X-Git-Tag: go1.9beta1~55 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e5e0e5fc3e608046a3dcc2db1ac195769a542b97;p=gostls13.git cmd/compile: don't use ."" as a pkg prefix 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í TryBot-Result: Gobot Gobot Reviewed-by: Matthew Dempsky --- diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go index 471a7e578b..b8a5a90a03 100644 --- a/src/cmd/compile/internal/gc/dcl.go +++ b/src/cmd/compile/internal/gc/dcl.go @@ -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 index 0000000000..27243d297b --- /dev/null +++ b/test/fixedbugs/issue18419.dir/other.go @@ -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 index 0000000000..31c6025e3f --- /dev/null +++ b/test/fixedbugs/issue18419.dir/test.go @@ -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 index 0000000000..25544efd9b --- /dev/null +++ b/test/fixedbugs/issue18419.go @@ -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