]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: preserve qualified names of unexported methods in imports.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Wed, 22 Jan 2014 03:55:50 +0000 (22:55 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 22 Jan 2014 03:55:50 +0000 (22:55 -0500)
Fixes #6295.

LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://golang.org/cl/20850043

src/cmd/gc/dcl.c
test/fixedbugs/issue6295.dir/p0.go [new file with mode: 0644]
test/fixedbugs/issue6295.dir/p1.go [new file with mode: 0644]
test/fixedbugs/issue6295.dir/p2.go [new file with mode: 0644]
test/fixedbugs/issue6295.go [new file with mode: 0644]

index 6a4516668f033a3d433f7e5916725506862af524..7df1d97a8c6af87303381af6e9d57dbf817f6b12 100644 (file)
@@ -941,8 +941,6 @@ interfacefield(Node *n)
                                f->nname = n->left;
                                f->embedded = n->embedded;
                                f->sym = f->nname->sym;
-                               if(importpkg && !exportname(f->sym->name))
-                                       f->sym = pkglookup(f->sym->name, structpkg);
                        }
 
                } else {
diff --git a/test/fixedbugs/issue6295.dir/p0.go b/test/fixedbugs/issue6295.dir/p0.go
new file mode 100644 (file)
index 0000000..cf86fbc
--- /dev/null
@@ -0,0 +1,13 @@
+// Copyright 2013 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 p0
+
+type T0 interface {
+       m0()
+}
+
+type S0 struct{}
+
+func (S0) m0() {}
diff --git a/test/fixedbugs/issue6295.dir/p1.go b/test/fixedbugs/issue6295.dir/p1.go
new file mode 100644 (file)
index 0000000..974d02f
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright 2013 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
+
+import "./p0"
+
+type T1 interface {
+       p0.T0
+       m1()
+}
+
+type S1 struct {
+       p0.S0
+}
+
+func (S1) m1() {}
+
+func NewT0() p0.T0 {
+       return S1{}
+}
+
+func NewT1() T1 {
+       return S1{}
+}
diff --git a/test/fixedbugs/issue6295.dir/p2.go b/test/fixedbugs/issue6295.dir/p2.go
new file mode 100644 (file)
index 0000000..4703ec0
--- /dev/null
@@ -0,0 +1,19 @@
+// Copyright 2013 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 (
+       "./p0"
+       "./p1"
+)
+
+var (
+       _ p0.T0 = p0.S0{}
+       _ p0.T0 = p1.S1{}
+       _ p0.T0 = p1.NewT0()
+       _ p0.T0 = p1.NewT1() // same as p1.S1{}
+)
+
+func main() {}
diff --git a/test/fixedbugs/issue6295.go b/test/fixedbugs/issue6295.go
new file mode 100644 (file)
index 0000000..b8da212
--- /dev/null
@@ -0,0 +1,10 @@
+// compiledir
+
+// Copyright 2013 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 6295: qualified name of unexported methods
+// is corrupted during import.
+
+package ignored