cmd/gc: fix incorrect error when using f(g()) form on ... args

Fixes #5358.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/11282044
This commit is contained in:
Daniel Morsing 2013-07-16 11:43:11 +02:00
parent 4949dcb211
commit 7e270cf6c4
2 changed files with 19 additions and 2 deletions

View File

@ -2131,9 +2131,9 @@ typecheckaste(int op, Node *call, int isddd, Type *tstruct, NodeList *nl, char *
for(; tn; tn=tn->down) {
if(assignop(tn->type, tl->type->type, &why) == 0) {
if(call != N)
yyerror("cannot use %T as type %T in argument to %N%s", tn->type, tl->type, call, why);
yyerror("cannot use %T as type %T in argument to %N%s", tn->type, tl->type->type, call, why);
else
yyerror("cannot use %T as type %T in %s%s", tn->type, tl->type, desc, why);
yyerror("cannot use %T as type %T in %s%s", tn->type, tl->type->type, desc, why);
}
}
goto out;

View File

@ -0,0 +1,17 @@
// errorcheck
// Copyright 2013 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 5358: incorrect error message when using f(g()) form on ... args.
package main
func f(x int, y ...int) {}
func g() (int, []int)
func main() {
f(g()) // ERROR "as type int in"
}