]> Cypherpunks repositories - gostls13.git/commitdiff
gc: fix copying of types
authorMaxim Pimenov <mpimenov@google.com>
Mon, 28 Nov 2011 16:52:16 +0000 (11:52 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 28 Nov 2011 16:52:16 +0000 (11:52 -0500)
reset xmethod during copytype

Fixes #2497

R=rsc, dvyukov
CC=golang-dev
https://golang.org/cl/5441045

src/cmd/gc/typecheck.c
test/fixedbugs/bug378.go [new file with mode: 0644]

index 5b667553fa23a5b4324a569182d937e3344978a8..2ec3c7297148a03c882f154346262a7c125f4ad0 100644 (file)
@@ -2530,6 +2530,7 @@ copytype(Node *n, Type *t)
        t->vargen = n->vargen;
        t->siggen = 0;
        t->method = nil;
+       t->xmethod = nil;
        t->nod = N;
        t->printed = 0;
        t->deferwidth = 0;
diff --git a/test/fixedbugs/bug378.go b/test/fixedbugs/bug378.go
new file mode 100644 (file)
index 0000000..b393b3d
--- /dev/null
@@ -0,0 +1,19 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug378
+
+// 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.
+
+// Issue 2497
+
+package main
+
+type Header struct{}
+func (h Header) Method() {}
+
+var _ interface{} = Header{}
+
+func main() {
+       type X Header
+       var _ interface{} = X{}
+}