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:
Rémy Oudompheng 2014-01-21 22:55:50 -05:00 committed by Russ Cox
parent 062ae45711
commit 20137eb4b9
5 changed files with 68 additions and 2 deletions

View 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 {

View 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() {}

View 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{}
}

View 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() {}

View 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