summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-03 04:33:32 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-03 04:33:32 +0000
commit45cdc508f7224ba9bc713ab8ecee621106f7ab3a (patch)
tree8a1955554b8d05c49f22967b8cf87ce57a206688
parentebb41978ba85c11984dcc68bc1a6e0c7fbf3f5e8 (diff)
downloadgcc-45cdc508f7224ba9bc713ab8ecee621106f7ab3a.tar.gz
compiler: Report invalid receiver types in function definitions.
Fixes golang/go#12324. Reviewed-on: https://go-review.googlesource.com/13988 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227427 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--gcc/go/gofrontend/gogo.cc6
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index f74d2ca565b..9dea1f84115 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-3f8feb4f905535448833a14e4f5c83f682087749
+672ac2abc52d8bd70cb9fb03dd4a32fdde9c438f
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc
index 233ee274cf0..5ecc55d0dbb 100644
--- a/gcc/go/gofrontend/gogo.cc
+++ b/gcc/go/gofrontend/gogo.cc
@@ -1818,7 +1818,11 @@ Gogo::start_function(const std::string& name, Function_type* type,
function);
}
else
- go_unreachable();
+ {
+ error_at(type->receiver()->location(),
+ "invalid receiver type (receiver must be a named type)");
+ ret = Named_object::make_function(name, NULL, function);
+ }
}
this->package_->bindings()->add_method(ret);
}