go/gcimporter15: revert user-visible changes related to aliases

Reason: Decision to back out current alias implementation.
For golang/go#16339 (comment).

Change-Id: Id2a394d78a8661c767bcc05370b81f79d9bfb714
Reviewed-on: https://go-review.googlesource.com/32756
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Chris Manghane <cmang@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
Robert Griesemer 2016-11-04 15:17:09 -07:00
parent 58ec10c513
commit 46c63f3841
8 changed files with 23 additions and 175 deletions

View File

@ -203,19 +203,20 @@ func (p *exporter) obj(obj types.Object) {
p.paramList(sig.Params(), sig.Variadic())
p.paramList(sig.Results(), false)
case *types_Alias:
// make sure the original is exported before the alias
// (if the alias declaration was invalid, orig will be nil)
orig := original(obj)
if orig != nil && !p.reexported[orig] {
p.obj(orig)
p.reexported[orig] = true
}
// Alias-related code. Keep for now.
// case *types_Alias:
// // make sure the original is exported before the alias
// // (if the alias declaration was invalid, orig will be nil)
// orig := original(obj)
// if orig != nil && !p.reexported[orig] {
// p.obj(orig)
// p.reexported[orig] = true
// }
p.tag(aliasTag)
p.pos(obj)
p.string(obj.Name())
p.qualifiedName(orig)
// p.tag(aliasTag)
// p.pos(obj)
// p.string(obj.Name())
// p.qualifiedName(orig)
default:
log.Fatalf("gcimporter: unexpected object %v (%T)", obj, obj)

View File

@ -2,7 +2,8 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build go1.8
// Alias-related code. Keep for now.
// +build ignore
package gcimporter_test
@ -16,7 +17,7 @@ import (
gcimporter "golang.org/x/tools/go/gcimporter15"
)
func TestInvalidAlias(t *testing.T) {
func disabledTestInvalidAlias(t *testing.T) {
// parse and typecheck
const src = "package p; func InvalidAlias => foo.f"
fset1 := token.NewFileSet()

View File

@ -288,7 +288,11 @@ func (p *importer) obj(tag int) {
if pkg, name := p.qualifiedName(); pkg != nil {
orig = pkg.Scope().Lookup(name)
}
p.declare(types_NewAlias(pos, p.pkgList[0], name, orig))
// Alias-related code. Keep for now.
_ = pos
_ = name
_ = orig
// p.declare(types_NewAlias(pos, p.pkgList[0], name, orig))
default:
errorf("unexpected object tag %d", tag)

View File

@ -130,6 +130,8 @@ func testDir(t *testing.T, dir string, endTime time.Time) (nimports int) {
return
}
const testfile = "exports.go"
func TestImportTestdata(t *testing.T) {
// This package only handles gc export data.
if runtime.Compiler != "gc" {

View File

@ -1,28 +0,0 @@
// Copyright 2016 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.
// +build go1.6,!go1.8
package gcimporter
import (
"go/token"
"go/types"
)
type types_Alias struct {
types.Object
dummy int
} // satisfies types.Object but will never be encountered
func types_NewAlias(pos token.Pos, pkg *types.Package, name string, orig types.Object) types.Object {
errorf("unexpected alias in non-Go1.8 export data: %s.%s => %v", pkg.Name(), name, orig) // panics
panic("unreachable")
}
func original(types.Object) types.Object {
panic("unreachable")
}
const testfile = "exports17.go"

View File

@ -1,23 +0,0 @@
// Copyright 2016 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.
// +build go1.8
package gcimporter
import "go/types"
type types_Alias => types.Alias
func types_NewAlias => types.NewAlias
// TODO(gri) Consider exporting this functionality from go/types (issue 17730).
func original(obj types.Object) types.Object {
if alias, ok := obj.(*types.Alias); ok {
return alias.Orig()
}
return obj
}
const testfile = "exports18.go"

View File

@ -1,109 +0,0 @@
// Copyright 2011 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.
// This file is used to generate an object file which
// serves as test file for gcimporter_test.go.
package exports
import (
"go/ast"
"go/build"
"math"
)
// Issue 3682: Correctly read dotted identifiers from export data.
const init1 = 0
func init() {}
const (
C0 int = 0
C1 = 3.14159265
C2 = 2.718281828i
C3 = -123.456e-789
C4 = +123.456E+789
C5 = 1234i
C6 = "foo\n"
C7 = `bar\n`
)
const (
C8 => math.Pi
)
type (
T1 int
T2 [10]int
T3 []int
T4 *int
T5 chan int
T6a chan<- int
T6b chan (<-chan int)
T6c chan<- (chan int)
T7 <-chan *ast.File
T8 struct{}
T9 struct {
a int
b, c float32
d []string `go:"tag"`
}
T10 struct {
T8
T9
_ *T10
}
T11 map[int]string
T12 interface{}
T13 interface {
m1()
m2(int) float32
}
T14 interface {
T12
T13
m3(x ...struct{}) []T9
}
T15 func()
T16 func(int)
T17 func(x int)
T18 func() float32
T19 func() (x float32)
T20 func(...interface{})
T21 struct{ next *T21 }
T22 struct{ link *T23 }
T23 struct{ link *T22 }
T24 *T24
T25 *T26
T26 *T27
T27 *T25
T28 func(T28) T28
)
type (
T29 => ast.File
T30 => build.Context
)
var (
V0 int
V1 = -991.0
V2 float32 = 1.2
)
var (
V3 => build.Default
)
func F1() {}
func F2(x int) {}
func F3() int { return 0 }
func F4() float32 { return 0 }
func F5(a, b, c int, u, v, w struct{ x, y T1 }, more ...interface{}) (p, q, r chan<- T10)
func (p *T1) M1()
func F6 => math.Sin
func F7 => ast.IsExported
func F8 => build.Import