bug132

R=ken
OCL=33792
CL=33803
diff --git a/test/fixedbugs/bug132.go b/test/fixedbugs/bug132.go
new file mode 100644
index 0000000..13a054e
--- /dev/null
+++ b/test/fixedbugs/bug132.go
@@ -0,0 +1,80 @@
+// errchk $G $D/$F.go
+
+// Copyright 2009 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
+
+type T struct {
+	x, x int  // ERROR "duplicate"
+}
+
+/*
+Accessing obj.x for obj of type T will lead to an error so this cannot
+be used in a program, but I would argue that this should be a compile-
+tume error at the declaration point.
+*/
+
+/* Condensed e-mail thread:
+
+---------- Russ Cox
+I don't think this is an error as long as you don't refer to x. I like the fact that you could name
+multiple elements in the struct "pad".
+
+
+---------- Rob 'Commander' Pike to Russ, me, go-dev, reviewlog2
+the real question is whether this program matches the spec and if not, which is in error.
+
+
+---------- Russ Cox to Rob, me, go-dev, reviewlog2
+true enough.  the spec disagrees with 6g.
+when we discussed the disambiguation
+rules for anonymous structs i thought we'd
+mentioned this issue too and decided the
+opposite, but i'm happy to make 6g agree
+with the spec.
+
+
+---------- Robert Griesemer to Russ, Rob, go-dev, reviewlog2
+I think the spec could perhaps be more definitive. Note that 6g also accepts:
+
+type T struct {
+	x int
+}
+
+func (p *T) x() {
+}
+
+func (p *T) x() {
+}
+
+The spec says that the scope of methods and fields is selectors of the form obj.selector. In a scope an identifier can be declared only once. I'd conclude that in the scope of fields and selectors of T, there are multiple x. But it's somewhat indirect. From a programmer's point of view making this an error seems less surprising, at least to me.
+
+
+---------- Ken Thompson to me, Russ, Rob, go-dev, reviewlog2
+obviously i dont think this is an error, or
+i would have made it an error. it seems like
+a small point if the error comes up at
+declaration or use.
+
+
+---------- Robert Griesemer to Ken, Russ, Rob, go-dev, reviewlog2
+I don't really care too much, but I think it should be consistent. The following code:
+
+type T struct {
+	x int;
+}
+
+func (p *T) x() {
+}
+
+func (p *T) x(a, b, c int) {
+}
+
+does result in an error (method redeclared). I don't quite see why this should behave any different then if both x() had the same parameter list.
+
+PS: I agree that the spec is saying two different things here - or at least should be more precise; the section on selectors (which arguably is the newer section), would allow such a declaration. I suspect that the case below leads to an early error possibly due to some interaction with code that checks for forward declaration of functions/methods (this not having looked at 6g).
+
+I am happy to go either way. It's a small item and we can close it once we all agree.
+*/