diff options
author | Russ Cox <rsc@golang.org> | 2010-04-19 09:21:51 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-04-19 09:21:51 -0700 |
commit | 4b2f8e1960bd57afcb687d849cac9701338bc9a0 (patch) | |
tree | ce7116dcadaa80a1f46b305f8a1279a2fc6b6bf5 | |
parent | 18d46ce29fc87efeb62a4de8748fb6de842eab1f (diff) | |
download | go-4b2f8e1960bd57afcb687d849cac9701338bc9a0.tar.gz |
gc: cmplx typecheck bug fix
Fixes issue 729.
R=ken2
CC=golang-dev
http://codereview.appspot.com/875048
-rw-r--r-- | src/cmd/gc/typecheck.c | 2 | ||||
-rw-r--r-- | test/cmplx.go | 31 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 8c8646e41..d6df9ddb4 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -790,7 +790,7 @@ reswitch: defaultlit2(&l, &r, 0); n->left = l; n->right = r; - if(l->type->etype != l->type->etype) { + if(l->type->etype != r->type->etype) { badcmplx: yyerror("invalid operation: %#N (cmplx of types %T, %T)", n, l->type, r->type); goto error; diff --git a/test/cmplx.go b/test/cmplx.go new file mode 100644 index 000000000..6262c682d --- /dev/null +++ b/test/cmplx.go @@ -0,0 +1,31 @@ +// errchk $G -e $D/$F.go + +// Copyright 2010 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. + +package main + +var ( + f float + f32 float32 + f64 float64 + + c complex + c64 complex64 + c128 complex128 +) + +func main() { + // ok + c = cmplx(f, f) + c64 = cmplx(f32, f32) + c128 = cmplx(f64, f64) + + _ = cmplx(f, f32) // ERROR "cmplx" + _ = cmplx(f, f64) // ERROR "cmplx" + _ = cmplx(f32, f) // ERROR "cmplx" + _ = cmplx(f32, f64) // ERROR "cmplx" + _ = cmplx(f64, f) // ERROR "cmplx" + _ = cmplx(f64, f32) // ERROR "cmplx" +} |