summaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/statements.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/go/gofrontend/statements.cc')
-rw-r--r--gcc/go/gofrontend/statements.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/go/gofrontend/statements.cc b/gcc/go/gofrontend/statements.cc
index 6843d6d8958..f57ada8278c 100644
--- a/gcc/go/gofrontend/statements.cc
+++ b/gcc/go/gofrontend/statements.cc
@@ -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.