cmd/gc: correctly typecheck expression lists in returns.
Invalid return statements were accidentally compiling or
triggering internal errors.
Fixes #3044.
R=golang-dev, rsc
CC=golang-dev, remy
https://golang.org/cl/5673074
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c
index b791c9e..5bb386d 100644
--- a/src/cmd/gc/typecheck.c
+++ b/src/cmd/gc/typecheck.c
@@ -1410,7 +1410,10 @@
case ORETURN:
ok |= Etop;
- typechecklist(n->list, Erv | Efnstruct);
+ if(count(n->list) == 1)
+ typechecklist(n->list, Erv | Efnstruct);
+ else
+ typechecklist(n->list, Erv);
if(curfn == N) {
yyerror("return outside function");
goto error;