From: Russ Cox Date: Mon, 26 Jul 2010 21:21:39 +0000 (-0700) Subject: gc: import dot shadowing bug X-Git-Tag: weekly.2010-07-29~37 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7b240e81354003c3a8ba6235bd38adfd07b3cc73;p=gostls13.git gc: import dot shadowing bug R=ken2 CC=golang-dev https://golang.org/cl/1873047 --- diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 85a63124ae..39e5774048 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -1781,6 +1781,11 @@ typecheckcomplit(Node **np) typecheck(&l->right, Erv); continue; } + // Sym might have resolved to name in other top-level + // package, because of import dot. Redirect to correct sym + // before we do the lookup. + if(s->pkg != localpkg) + s = lookup(s->name); l->left = newname(s); l->left->typecheck = 1; f = lookdot1(s, t, t->type, 0); diff --git a/test/fixedbugs/bug295.go b/test/fixedbugs/bug295.go new file mode 100644 index 0000000000..fec2351f31 --- /dev/null +++ b/test/fixedbugs/bug295.go @@ -0,0 +1,17 @@ +// $G $D/$F.go && $L $F.$A && ./$A.out + +// Copyright 2010 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 . "testing" // defines top-level T + +type S struct { + T int +} + +func main() { + _ = &S{T: 1} // should work +}