mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
cmd/gc: preserve qualified names of unexported methods in imports.
Fixes #6295. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews https://golang.org/cl/20850043
This commit is contained in:
parent
062ae45711
commit
20137eb4b9
5 changed files with 68 additions and 2 deletions
|
@ -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 {
|
||||
|
|
13
test/fixedbugs/issue6295.dir/p0.go
Normal file
13
test/fixedbugs/issue6295.dir/p0.go
Normal file
|
@ -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() {}
|
26
test/fixedbugs/issue6295.dir/p1.go
Normal file
26
test/fixedbugs/issue6295.dir/p1.go
Normal file
|
@ -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{}
|
||||
}
|
19
test/fixedbugs/issue6295.dir/p2.go
Normal file
19
test/fixedbugs/issue6295.dir/p2.go
Normal file
|
@ -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() {}
|
10
test/fixedbugs/issue6295.go
Normal file
10
test/fixedbugs/issue6295.go
Normal file
|
@ -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
|
Loading…
Reference in a new issue