aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2016-06-27 14:51:54 -0700
committerMatthew Dempsky <mdempsky@google.com>2016-08-16 14:32:09 -0700
commit4bc85b2eb8664470c131517d9fab1090827857b6 (patch)
tree62c69912c3e9bfa79f37c6d60983c7f221bf2992
parent83153e7f372a5822a771e132885633cd24d3df12 (diff)
downloadgo-4bc85b2eb8664470c131517d9fab1090827857b6.tar.gz
go-4bc85b2eb8664470c131517d9fab1090827857b6.zip
cmd/compile/internal/syntax: refactor DeclStmt parsing
No behavior change. Change-Id: I93c7cb7ab76b5afa74e6a1f092b7045fb96467b1
-rw-r--r--src/cmd/compile/internal/syntax/parser.go32
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 {