diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 83c5ff72b9..10cab14a17 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -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 index 0000000000..c2845f0421 --- /dev/null +++ b/test/fixedbugs/bug308.go @@ -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) +}