fix a parsing regression (do is still mandatory in some situations)

This commit is contained in:
Zahary Karadjov
2017-04-14 15:01:27 +03:00
parent 03770daba4
commit 8de19a7f4c
2 changed files with 20 additions and 1 deletions

View File

@@ -68,6 +68,7 @@ proc parseCase(p: var TParser): PNode
proc parseStmtPragma(p: var TParser): PNode
proc parsePragma(p: var TParser): PNode
proc postExprBlocks(p: var TParser, x: PNode): PNode
proc parseExprStmt(p: var TParser): PNode
# implementation
proc getTok(p: var TParser) =
@@ -523,7 +524,9 @@ proc parsePar(p: var TParser): PNode =
result.add(parseStmtPragma(p))
elif p.tok.tokType != tkParRi:
var a = simpleExpr(p)
if p.tok.tokType == tkEquals:
if p.tok.tokType == tkDo:
result = postExprBlocks(p, a)
elif p.tok.tokType == tkEquals:
# special case: allow assignments
let asgn = newNodeP(nkAsgn, p)
getTok(p)

View File

@@ -371,6 +371,17 @@ StmtList
StmtList
DiscardStmt
Empty
Call
DotExpr
Ident !"result"
Ident !"add"
BracketExpr
Call
Ident !"quote"
StmtList
DiscardStmt
Empty
IntLit 0
'''
"""
@@ -495,3 +506,8 @@ dumpTree:
else:
discard
# some edge cases
result.add((quote do:
discard
)[0])