diff options
author | Robert Hencke <robert.hencke@gmail.com> | 2011-04-25 12:02:54 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-04-25 12:02:54 -0400 |
commit | 883d68f885750806ca9a244ed1c19db58a971ab7 (patch) | |
tree | 05e600446452966a5a5937e80b7fe0f7ec070cf5 | |
parent | a9a6c90104a9fd4e9627a300bb301adf8a039592 (diff) | |
download | go-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.c | 2 | ||||
-rw-r--r-- | src/cmd/gc/subr.c | 2 | ||||
-rw-r--r-- | test/fixedbugs/bug334.go | 31 |
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) +*/ |