From a7e76b8e809ccbd1ceef207a83f8303edb707867 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 29 Mar 2022 19:38:00 -0700 Subject: [PATCH] cmd/compile/internal/syntax: remove code dealing with multiple method names When parsing method declarations in an interface, the parser has for historic reasons gracefully handled a list of method names with a single (common) signature, and then reported an error. For example interface { m1, m2, m3 (x int) } This code originally came from the very first parser for Go which initially permitted such declarations (or at least assumed that people would write such declarations). Nobody is doing this at this point, so there's no need for being extra careful here. Remove the respective code and adjust the corresponding test. Change-Id: If6f9b398bbc9e425dcd4328a80d8bf77c37fe8b6 Reviewed-on: https://go-review.googlesource.com/c/go/+/396654 Trust: Robert Griesemer Reviewed-by: Ian Lance Taylor --- src/cmd/compile/internal/syntax/parser.go | 14 -------------- test/fixedbugs/bug121.go | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index 2c53a40b2f..805bf13aff 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -1725,20 +1725,6 @@ func (p *parser) methodDecl() *Field { f.pos = p.pos() name := p.name() - // accept potential name list but complain - // TODO(gri) We probably don't need this special check anymore. - // Nobody writes this kind of code. It's from ancient - // Go beginnings. - hasNameList := false - for p.got(_Comma) { - p.name() - hasNameList = true - } - if hasNameList { - p.syntaxError("name list not allowed in interface type") - // already progressed, no need to advance - } - const context = "interface method" switch p.tok { diff --git a/test/fixedbugs/bug121.go b/test/fixedbugs/bug121.go index 22c7181752..471c27eb82 100644 --- a/test/fixedbugs/bug121.go +++ b/test/fixedbugs/bug121.go @@ -9,7 +9,7 @@ package main type T func() type I interface { - f, g (); // ERROR "name list not allowed" + f, g (); // ERROR "unexpected comma" } type J interface { -- 2.50.0