public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* 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).