()
| 813 | } |
| 814 | |
| 815 | func (p *codeParser) parseForStmt() *nodeFor { |
| 816 | var stmt nodeFor |
| 817 | start := p.peek().pos |
| 818 | loop: |
| 819 | for { |
| 820 | switch p.peek().tok { |
| 821 | case token.EOF: |
| 822 | p.errorf("premature end of clause in FOR statement") |
| 823 | case token.LBRACE: |
| 824 | break loop |
| 825 | default: |
| 826 | p.advance() |
| 827 | } |
| 828 | } |
| 829 | n := (p.file.Offset(p.prev().pos) - p.file.Offset(start)) + len(p.prev().String()) |
| 830 | offset := p.baseOffset + p.file.Offset(start) |
| 831 | stmt.clause = new(nodeGoCode) |
| 832 | stmt.clause.pos.start = offset |
| 833 | stmt.clause.pos.end = offset + n |
| 834 | stmt.clause.code = p.sourceFrom(start)[:n] |
| 835 | stmt.block = p.parseStmtBlock() |
| 836 | return &stmt |
| 837 | } |
| 838 | |
| 839 | func (p *codeParser) parseStmtBlock() *nodeBlock { |
| 840 | // we are sitting on the opening '{' token here |
no test coverage detected