* Go patch committed: method names must be non-blank
@ 2014-10-16 20:04 Ian Lance Taylor
0 siblings, 0 replies; only message in thread
From: Ian Lance Taylor @ 2014-10-16 20:04 UTC (permalink / raw)
To: gcc-patches, gofrontend-dev
[-- Attachment #1: Type: text/plain, Size: 400 bytes --]
The Go language spec was clarified to say that method names must be
non-blank. This patch by Chris Manghane implements this restriction in
the Go frontend. This requires a couple of testsuite changes, already
in the master testsuite and included in this patch. This fixes
http://golang.org/issue/8078 . Bootstrapped and ran Go testsuite on
x86_64-unknown-linux-gnu. Committed to mainline.
Ian
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: patch --]
[-- Type: text/x-diff, Size: 1736 bytes --]
Index: gcc/go/gofrontend/parse.cc
===================================================================
--- gcc/go/gofrontend/parse.cc (revision 216343)
+++ gcc/go/gofrontend/parse.cc (working copy)
@@ -1253,6 +1253,8 @@ Parse::method_spec(Typed_identifier_list
if (this->advance_token()->is_op(OPERATOR_LPAREN))
{
// This is a MethodName.
+ if (name == "_")
+ error_at(this->location(), "methods must have a unique non-blank name");
name = this->gogo_->pack_hidden_name(name, is_exported);
Type* type = this->signature(NULL, location);
if (type == NULL)
Index: gcc/testsuite/go.test/test/interface/explicit.go
===================================================================
--- gcc/testsuite/go.test/test/interface/explicit.go (revision 216257)
+++ gcc/testsuite/go.test/test/interface/explicit.go (working copy)
@@ -83,12 +83,12 @@ var m4 = M(jj) // ERROR "invalid|wrong t
type B1 interface {
- _()
+ _() // ERROR "methods must have a unique non-blank name"
}
type B2 interface {
M()
- _()
+ _() // ERROR "methods must have a unique non-blank name"
}
type T2 struct{}
Index: gcc/testsuite/go.test/test/interface/fail.go
===================================================================
--- gcc/testsuite/go.test/test/interface/fail.go (revision 216257)
+++ gcc/testsuite/go.test/test/interface/fail.go (working copy)
@@ -14,7 +14,6 @@ type I interface {
func main() {
shouldPanic(p1)
- shouldPanic(p2)
}
func p1() {
@@ -30,19 +29,6 @@ type S struct{}
func (s *S) _() {}
-type B interface {
- _()
-}
-
-func p2() {
- var s *S
- var b B
- var e interface{}
- e = s
- b = e.(B)
- _ = b
-}
-
func shouldPanic(f func()) {
defer func() {
if recover() == nil {
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-10-16 19:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-16 20:04 Go patch committed: method names must be non-blank Ian Lance Taylor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).