diff options
Diffstat (limited to 'src/cmd/compile/internal/syntax/parser.go')
-rw-r--r-- | src/cmd/compile/internal/syntax/parser.go | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index 3666a49082..f267d4b2c9 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -1530,6 +1530,20 @@ func (p *parser) blockStmt() *BlockStmt { return s } +func (p *parser) declStmt(f func(*Group) Decl) *DeclStmt { + if trace { + defer p.trace("declStmt")() + } + + s := new(DeclStmt) + s.init(p) + + p.next() // _Const, _Type, or _Var + s.DeclList = p.appendGroup(nil, f) + + return s +} + func (p *parser) forStmt() Stmt { if trace { defer p.trace("forStmt")() @@ -1787,25 +1801,13 @@ func (p *parser) stmt() Stmt { return p.blockStmt() case _Var: - p.next() - s := new(DeclStmt) - s.init(p) - s.DeclList = p.appendGroup(nil, p.varDecl) - return s + return p.declStmt(p.varDecl) case _Const: - p.next() - s := new(DeclStmt) - s.init(p) - s.DeclList = p.appendGroup(nil, p.constDecl) - return s + return p.declStmt(p.constDecl) case _Type: - p.next() - s := new(DeclStmt) - s.init(p) - s.DeclList = p.appendGroup(nil, p.typeDecl) - return s + return p.declStmt(p.typeDecl) case _Operator, _Star: switch p.op { |