Error for return with no values when result parameters are not named.
authorIan Lance Taylor <ian@gcc.gnu.org>
Sun, 27 Mar 2011 17:52:34 +0000 (17:52 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Sun, 27 Mar 2011 17:52:34 +0000 (17:52 +0000)
From-SVN: r171576

gcc/go/gofrontend/statements.cc

index 6843d6d8958653d65f1064cc1ad3440833f39bae..f57ada8278cb8affaae9317a87b9989ff34fe16e 100644 (file)
@@ -2581,10 +2581,20 @@ Return_statement::do_determine_types()
 void
 Return_statement::do_check_types(Gogo*)
 {
+  const Typed_identifier_list* results = this->results_;
   if (this->vals_ == NULL)
-    return;
+    {
+      if (results != NULL
+         && !results->empty()
+         && results->front().name().empty())
+       {
+         // The result parameters are not named, which means that we
+         // need to supply values for them.
+         this->report_error(_("not enough arguments to return"));
+       }
+      return;
+    }
 
-  const Typed_identifier_list* results = this->results_;
   if (results == NULL)
     {
       this->report_error(_("return with value in function "
@@ -2621,7 +2631,7 @@ Return_statement::do_check_types(Gogo*)
     }
 
   if (pt != results->end())
-    this->report_error(_("not enough values in return statement"));
+    this->report_error(_("not enough arguments to return"));
 }
 
 // Build a RETURN_EXPR tree.