1
0
mirror of https://github.com/golang/go synced 2024-11-25 06:07:58 -07:00

gc: allow complex types to be receiver types

Fixes #1716.

R=golang-dev, rsc1, rsc
CC=golang-dev
https://golang.org/cl/4439068
This commit is contained in:
Robert Hencke 2011-04-25 12:02:54 -04:00 committed by Russ Cox
parent a9a6c90104
commit 883d68f885
3 changed files with 33 additions and 2 deletions

View File

@ -468,7 +468,7 @@ typeinit(void)
okforadd[i] = 1;
okforarith[i] = 1;
okforconst[i] = 1;
// issimple[i] = 1;
issimple[i] = 1;
}
}

View 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;

31
test/fixedbugs/bug334.go Normal file
View File

@ -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)
*/