]> Cypherpunks repositories - gostls13.git/commitdiff
gc: allow complex types to be receiver types
authorRobert Hencke <robert.hencke@gmail.com>
Mon, 25 Apr 2011 16:02:54 +0000 (12:02 -0400)
committerRuss Cox <rsc@golang.org>
Mon, 25 Apr 2011 16:02:54 +0000 (12:02 -0400)
Fixes #1716.

R=golang-dev, rsc1, rsc
CC=golang-dev
https://golang.org/cl/4439068

src/cmd/gc/align.c
src/cmd/gc/subr.c
test/fixedbugs/bug334.go [new file with mode: 0644]

index 4303bbd0f18846867693f6a2b559efd0beceaf0f..a8454bf1306f11012a8fccc814c56152b6395cdf 100644 (file)
@@ -468,7 +468,7 @@ typeinit(void)
                        okforadd[i] = 1;
                        okforarith[i] = 1;
                        okforconst[i] = 1;
-//                     issimple[i] = 1;
+                       issimple[i] = 1;
                }
        }
 
index 884bb439d8598a4705f459b25f7f91fda9f4f048..bb250569406d5bc449614a190bc4b74facf49b5f 100644 (file)
@@ -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 (file)
index 0000000..870c9ae
--- /dev/null
@@ -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)
+*/