Skip to content

Commit

Permalink
cmd/compile/internal/syntax: remove code dealing with multiple method…
Browse files Browse the repository at this point in the history
… 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 <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
  • Loading branch information
griesemer committed Mar 30, 2022
1 parent bf408e7 commit a7e76b8
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 15 deletions.
14 changes: 0 additions & 14 deletions src/cmd/compile/internal/syntax/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion test/fixedbugs/bug121.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit a7e76b8

Please sign in to comment.