From: Rémy Oudompheng Date: Fri, 21 Sep 2012 19:54:05 +0000 (+1000) Subject: [release-branch.go1] cmd/gc: reject use of ... with multiple-valued expressions. X-Git-Tag: go1.0.3~156 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=aa3ca5f6d7b6b2b482be5a31556df9dc9e097e47;p=gostls13.git [release-branch.go1] cmd/gc: reject use of ... with multiple-valued expressions. ««« backport 6d5faedd95bc cmd/gc: reject use of ... with multiple-valued expressions. Fixes #3334. R=golang-dev, r CC=golang-dev, remy https://golang.org/cl/6350103 »»» --- diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index cc4faf5a7a..0335fe0c32 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -929,7 +929,7 @@ reswitch: goto doconv; } - if(count(n->list) == 1) + if(count(n->list) == 1 && !n->isddd) typecheck(&n->list->n, Erv | Efnstruct); else typechecklist(n->list, Erv); diff --git a/test/ddd1.go b/test/ddd1.go index 1e070093c3..09d70c3de3 100644 --- a/test/ddd1.go +++ b/test/ddd1.go @@ -22,6 +22,16 @@ var ( _ = sum([]int{1}) // ERROR "\[\]int literal.*as type int|incompatible" ) +func sum3(int, int, int) int { return 0 } +func tuple() (int, int, int) { return 1, 2, 3 } + +var ( + _ = sum(tuple()) + _ = sum(tuple()...) // ERROR "multiple-value" + _ = sum3(tuple()) + _ = sum3(tuple()...) // ERROR "multiple-value" "not enough" +) + type T []T func funny(args ...T) int { return 0 }