aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Pimenov <mpimenov@google.com>2011-11-28 11:52:16 -0500
committerRuss Cox <rsc@golang.org>2011-11-28 11:52:16 -0500
commitffa6b383f5ac5ab317701a4cccea3aa5b585f477 (patch)
tree6f3964f80ae6cadd6409ca8c74090c3d00cf011d
parent1e85f41fd512d570b04f87d906d44e456f1c2108 (diff)
downloadgo-ffa6b383f5ac5ab317701a4cccea3aa5b585f477.tar.gz
go-ffa6b383f5ac5ab317701a4cccea3aa5b585f477.zip
gc: fix copying of types
reset xmethod during copytype Fixes #2497 R=rsc, dvyukov CC=golang-dev https://golang.org/cl/5441045
-rw-r--r--src/cmd/gc/typecheck.c1
-rw-r--r--test/fixedbugs/bug378.go19
2 files changed, 20 insertions, 0 deletions
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c
index 5b667553fa..2ec3c72971 100644
--- a/src/cmd/gc/typecheck.c
+++ b/src/cmd/gc/typecheck.c
@@ -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
index 0000000000..b393b3dc1e
--- /dev/null
+++ b/test/fixedbugs/bug378.go
@@ -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{}
+}