cmd/gc: increase specificity of errors in function call context

Fixes #7129

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/86470044
This commit is contained in:
Jan Ziak 2014-04-11 15:57:30 +02:00
parent f973d9460f
commit a599b4890a
2 changed files with 27 additions and 2 deletions

View file

@ -310,7 +310,7 @@ typecheck1(Node **np, int top)
int ok, ntop;
Type *t, *tp, *missing, *have, *badtype;
Val v;
char *why;
char *why, *desc, descbuf[64];
n = *np;
@ -1139,7 +1139,11 @@ reswitch:
}
break;
}
typecheckaste(OCALL, n->left, n->isddd, getinargx(t), n->list, "function argument");
if(snprint(descbuf, sizeof descbuf, "argument to %N", n->left) < sizeof descbuf)
desc = descbuf;
else
desc = "function argument";
typecheckaste(OCALL, n->left, n->isddd, getinargx(t), n->list, desc);
ok |= Etop;
if(t->outtuple == 0)
goto ret;

View file

@ -0,0 +1,21 @@
// errorcheck
// Copyright 2014 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 7129: inconsistent "wrong arg type" error for multivalued g in f(g())
package main
func f(int) {}
func g() bool { return true }
func h(int, int) {}
func main() {
f(g()) // ERROR "in argument to f"
f(true) // ERROR "in argument to f"
h(true, true) // ERROR "in argument to h"
}