1
0
mirror of https://github.com/golang/go synced 2024-09-30 06:14:31 -06:00

cmd/compile: cleanup in parser.go

Inlined non_dcl_stmt in stmt since it was called only from there.

Change-Id: I616c41332cfd86bbf3493d0ce7b1256384215220
Reviewed-on: https://go-review.googlesource.com/16893
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Chris Manghane <cmang@golang.org>
This commit is contained in:
Robert Griesemer 2015-11-13 14:31:31 -08:00
parent c8bc7f1abd
commit 18160e0740

View File

@ -2550,31 +2550,6 @@ func (p *parser) stmt() *Node {
case LVAR, LCONST, LTYPE: case LVAR, LCONST, LTYPE:
return liststmt(p.common_dcl()) return liststmt(p.common_dcl())
case LNAME, '@', '?', LLITERAL, LFUNC, '(', // operands
'[', LSTRUCT, LMAP, LCHAN, LINTERFACE, // composite types
'+', '-', '*', '&', '^', '~', LCOMM, '!': // unary operators
// simple_stmt
fallthrough
case LFOR, LSWITCH, LSELECT, LIF, LFALL, LBREAK, LCONTINUE, LGO, LDEFER, LGOTO, LRETURN:
return p.non_dcl_stmt()
case ';':
return nil
default:
return missing_stmt
}
}
// TODO(gri) inline non_dcl_stmt into stmt
// go.y:non_dcl_stmt
func (p *parser) non_dcl_stmt() *Node {
if trace && Debug['x'] != 0 {
defer p.trace("non_dcl_stmt")()
}
switch p.tok {
case LNAME, '@', '?', LLITERAL, LFUNC, '(', // operands case LNAME, '@', '?', LLITERAL, LFUNC, '(', // operands
'[', LSTRUCT, LMAP, LCHAN, LINTERFACE, // composite types '[', LSTRUCT, LMAP, LCHAN, LINTERFACE, // composite types
'+', '-', '*', '&', '^', '~', LCOMM, '!': // unary operators '+', '-', '*', '&', '^', '~', LCOMM, '!': // unary operators
@ -2594,57 +2569,44 @@ func (p *parser) non_dcl_stmt() *Node {
case LFALL: case LFALL:
p.next() p.next()
// will be converted to OFALL // will be converted to OFALL
ss := Nod(OXFALL, nil, nil) stmt := Nod(OXFALL, nil, nil)
ss.Xoffset = int64(block) stmt.Xoffset = int64(block)
return ss return stmt
case LBREAK: case LBREAK:
p.next() p.next()
s2 := p.onew_name() return Nod(OBREAK, p.onew_name(), nil)
return Nod(OBREAK, s2, nil)
case LCONTINUE: case LCONTINUE:
p.next() p.next()
s2 := p.onew_name() return Nod(OCONTINUE, p.onew_name(), nil)
return Nod(OCONTINUE, s2, nil)
case LGO: case LGO:
p.next() p.next()
s2 := p.pseudocall() return Nod(OPROC, p.pseudocall(), nil)
return Nod(OPROC, s2, nil)
case LDEFER: case LDEFER:
p.next() p.next()
s2 := p.pseudocall() return Nod(ODEFER, p.pseudocall(), nil)
return Nod(ODEFER, s2, nil)
case LGOTO: case LGOTO:
p.next() p.next()
s2 := p.new_name(p.sym()) stmt := Nod(OGOTO, p.new_name(p.sym()), nil)
stmt.Sym = dclstack // context, for goto restrictions
ss := Nod(OGOTO, s2, nil) return stmt
ss.Sym = dclstack // context, for goto restrictions
return ss
case LRETURN: case LRETURN:
p.next() p.next()
var s2 *NodeList var results *NodeList
if p.tok != ';' && p.tok != '}' { if p.tok != ';' && p.tok != '}' {
s2 = p.expr_list() results = p.expr_list()
} }
ss := Nod(ORETURN, nil, nil) stmt := Nod(ORETURN, nil, nil)
ss.List = s2 stmt.List = results
if ss.List == nil && Curfn != nil { if stmt.List == nil && Curfn != nil {
var l *NodeList for l := Curfn.Func.Dcl; l != nil; l = l.Next {
for l = Curfn.Func.Dcl; l != nil; l = l.Next {
if l.N.Class == PPARAM { if l.N.Class == PPARAM {
continue continue
} }
@ -2657,10 +2619,13 @@ func (p *parser) non_dcl_stmt() *Node {
} }
} }
return ss return stmt
case ';':
return nil
default: default:
panic("unreachable") return missing_stmt
} }
} }