]> Cypherpunks repositories - gostls13.git/commitdiff
gc: bug308
authorRuss Cox <rsc@golang.org>
Thu, 30 Sep 2010 19:05:01 +0000 (15:05 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 30 Sep 2010 19:05:01 +0000 (15:05 -0400)
confused by using isddd for both ONAME and OCALL

Fixes #1136.

R=ken2
CC=golang-dev
https://golang.org/cl/2314043

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

index 83c5ff72b9f1bc38ad6257377a271a67ddb1fb3d..10cab14a171e148ed5cea9c9f524da4a434aa2a0 100644 (file)
@@ -1550,7 +1550,7 @@ typecheckaste(int op, int isddd, Type *tstruct, NodeList *nl, char *desc)
        for(tl=tstruct->type; tl; tl=tl->down) {
                t = tl->type;
                if(tl->isddd) {
-                       if(nl != nil && nl->n->isddd && !isddd) {
+                       if(nl != nil && nl->n->op == ONAME && nl->n->isddd && !isddd) {
                                // TODO(rsc): This is not actually illegal, but it will help catch bugs.
                                yyerror("to pass '%#N' as ...%T, use '%#N...'", nl->n, t->type, nl->n);
                                isddd = 1;
diff --git a/test/fixedbugs/bug308.go b/test/fixedbugs/bug308.go
new file mode 100644 (file)
index 0000000..c2845f0
--- /dev/null
@@ -0,0 +1,19 @@
+// $G $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.
+
+// issue 1136
+
+package main
+
+import "fmt"
+
+func log1(f string, argv ...interface{}) {
+       fmt.Printf("log: %s\n", fmt.Sprintf(f, argv...))
+}
+
+func main() {
+       log1("%d", 42)
+}