1
0
mirror of https://github.com/golang/go synced 2024-11-22 00:04:41 -07:00

gc: cmplx typecheck bug fix

Fixes #729.

R=ken2
CC=golang-dev
https://golang.org/cl/875048
This commit is contained in:
Russ Cox 2010-04-19 09:21:51 -07:00
parent 3ffbd57b94
commit d97bbabbaa
2 changed files with 32 additions and 1 deletions

View File

@ -790,7 +790,7 @@ reswitch:
defaultlit2(&l, &r, 0); defaultlit2(&l, &r, 0);
n->left = l; n->left = l;
n->right = r; n->right = r;
if(l->type->etype != l->type->etype) { if(l->type->etype != r->type->etype) {
badcmplx: badcmplx:
yyerror("invalid operation: %#N (cmplx of types %T, %T)", n, l->type, r->type); yyerror("invalid operation: %#N (cmplx of types %T, %T)", n, l->type, r->type);
goto error; goto error;

31
test/cmplx.go Normal file
View File

@ -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"
}