aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Hencke <robert.hencke@gmail.com>2011-04-25 12:02:54 -0400
committerRuss Cox <rsc@golang.org>2011-04-25 12:02:54 -0400
commit883d68f885750806ca9a244ed1c19db58a971ab7 (patch)
tree05e600446452966a5a5937e80b7fe0f7ec070cf5
parenta9a6c90104a9fd4e9627a300bb301adf8a039592 (diff)
downloadgo-883d68f885750806ca9a244ed1c19db58a971ab7.tar.gz
go-883d68f885750806ca9a244ed1c19db58a971ab7.zip
gc: allow complex types to be receiver types
Fixes #1716. R=golang-dev, rsc1, rsc CC=golang-dev https://golang.org/cl/4439068
-rw-r--r--src/cmd/gc/align.c2
-rw-r--r--src/cmd/gc/subr.c2
-rw-r--r--test/fixedbugs/bug334.go31
3 files changed, 33 insertions, 2 deletions
diff --git a/src/cmd/gc/align.c b/src/cmd/gc/align.c
index 4303bbd0f1..a8454bf130 100644
--- a/src/cmd/gc/align.c
+++ b/src/cmd/gc/align.c
@@ -468,7 +468,7 @@ typeinit(void)
okforadd[i] = 1;
okforarith[i] = 1;
okforconst[i] = 1;
-// issimple[i] = 1;
+ issimple[i] = 1;
}
}
diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c
index 884bb439d8..bb25056940 100644
--- a/src/cmd/gc/subr.c
+++ b/src/cmd/gc/subr.c
@@ -488,7 +488,7 @@ algtype(Type *t)
{
int a;
- if(issimple[t->etype] || isptr[t->etype] || iscomplex[t->etype] ||
+ if(issimple[t->etype] || isptr[t->etype] ||
t->etype == TCHAN || t->etype == TFUNC || t->etype == TMAP) {
if(t->width == widthptr)
a = AMEMWORD;
diff --git a/test/fixedbugs/bug334.go b/test/fixedbugs/bug334.go
new file mode 100644
index 0000000000..870c9ae24f
--- /dev/null
+++ b/test/fixedbugs/bug334.go
@@ -0,0 +1,31 @@
+// $G $D/$F.go || echo BUG: bug334
+
+// 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 1716
+
+package main
+
+type (
+ cplx64 complex64
+ cplx128 complex128
+)
+
+func (c cplx64) Foo() {}
+func (c cplx128) Foo() {}
+
+func main() {
+ var c64 cplx128
+ var c128 cplx64
+ c64.Foo()
+ c128.Foo()
+}
+
+/*
+bug334.go:16: invalid receiver type cplx64
+bug334.go:17: invalid receiver type cplx128
+bug334.go:22: c64.Foo undefined (type cplx128 has no field or method Foo)
+bug334.go:23: c128.Foo undefined (type cplx64 has no field or method Foo)
+*/