]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: increase specificity of errors in function call context
authorJan Ziak <0xe2.0x9a.0x9b@gmail.com>
Fri, 11 Apr 2014 13:57:30 +0000 (15:57 +0200)
committerJan Ziak <0xe2.0x9a.0x9b@gmail.com>
Fri, 11 Apr 2014 13:57:30 +0000 (15:57 +0200)
Fixes #7129

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/86470044

src/cmd/gc/typecheck.c
test/fixedbugs/issue7129.go [new file with mode: 0644]

index 2b44cd8202da8975301c240487c7c382a726cbad..7eda63bad101b6a7891150892575cb1d604223bc 100644 (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;
diff --git a/test/fixedbugs/issue7129.go b/test/fixedbugs/issue7129.go
new file mode 100644 (file)
index 0000000..2425cbd
--- /dev/null
@@ -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"
+}