From: Mateusz Poliwczak Date: Mon, 15 Sep 2025 17:37:04 +0000 (+0200) Subject: go/parser: simplify expectSemi X-Git-Tag: go1.26rc1~846 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9df1a289ac;p=gostls13.git go/parser: simplify expectSemi Move the outer if statement, directly into the switch. Change-Id: I6a6a6964ff15dbcda4f4c9ae1c15423adbfb0ae5 Reviewed-on: https://go-review.googlesource.com/c/go/+/703835 Reviewed-by: Michael Knyszek Reviewed-by: Alan Donovan LUCI-TryBot-Result: Go LUCI --- diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go index 9ee1576a99..e725371e76 100644 --- a/src/go/parser/parser.go +++ b/src/go/parser/parser.go @@ -345,30 +345,29 @@ func (p *parser) expectClosing(tok token.Token, context string) token.Pos { // expectSemi consumes a semicolon and returns the applicable line comment. func (p *parser) expectSemi() (comment *ast.CommentGroup) { - // semicolon is optional before a closing ')' or '}' - if p.tok != token.RPAREN && p.tok != token.RBRACE { - switch p.tok { - case token.COMMA: - // permit a ',' instead of a ';' but complain - p.errorExpected(p.pos, "';'") - fallthrough - case token.SEMICOLON: - if p.lit == ";" { - // explicit semicolon - p.next() - comment = p.lineComment // use following comments - } else { - // artificial semicolon - comment = p.lineComment // use preceding comments - p.next() - } - return comment - default: - p.errorExpected(p.pos, "';'") - p.advance(stmtStart) + switch p.tok { + case token.RPAREN, token.RBRACE: + return nil // semicolon is optional before a closing ')' or '}' + case token.COMMA: + // permit a ',' instead of a ';' but complain + p.errorExpected(p.pos, "';'") + fallthrough + case token.SEMICOLON: + if p.lit == ";" { + // explicit semicolon + p.next() + comment = p.lineComment // use following comments + } else { + // artificial semicolon + comment = p.lineComment // use preceding comments + p.next() } + return comment + default: + p.errorExpected(p.pos, "';'") + p.advance(stmtStart) + return nil } - return nil } func (p *parser) atComma(context string, follow token.Token) bool {