From 8de19a7f4c5387042994e061aa28545b090b3997 Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Fri, 14 Apr 2017 15:01:27 +0300 Subject: [PATCH] fix a parsing regression (do is still mandatory in some situations) --- compiler/parser.nim | 5 ++++- tests/parser/tpostexprblocks.nim | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/compiler/parser.nim b/compiler/parser.nim index 2607d2e3da..e4c04c0f78 100644 --- a/compiler/parser.nim +++ b/compiler/parser.nim @@ -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) diff --git a/tests/parser/tpostexprblocks.nim b/tests/parser/tpostexprblocks.nim index b7f97785bd..85f2628bfe 100644 --- a/tests/parser/tpostexprblocks.nim +++ b/tests/parser/tpostexprblocks.nim @@ -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]) +