summary refs log tree commit diff stats
path: root/compiler/parser.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/parser.nim')
-rw-r--r--compiler/parser.nim27
1 files changed, 14 insertions, 13 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim
index d549e1358..8b335efd5 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -1168,19 +1168,20 @@ proc postExprBlocks(p: var TParser, x: PNode): PNode =
     result = makeCall(result)
     getTok(p)
     skipComment(p, result)
-    var stmtList = newNodeP(nkStmtList, p)
-    let body = parseStmt(p)
-    stmtList.add body
-
-    if stmtList.len == 1 and stmtList[0].kind == nkStmtList:
-      # to keep backwards compatibility (see tests/vm/tstringnil)
-      stmtList = stmtList[0]
-
-    if openingParams.kind != nkEmpty:
-      result.add newProcNode(nkDo, stmtList.info, stmtList,
-                             params = openingParams, pragmas = openingPragmas)
-    else:
-      result.add stmtList
+    if p.tok.tokType notin {tkOf, tkElif, tkElse, tkExcept}:
+      var stmtList = newNodeP(nkStmtList, p)
+      let body = parseStmt(p)
+      stmtList.add body
+
+      if stmtList.len == 1 and stmtList[0].kind == nkStmtList:
+        # to keep backwards compatibility (see tests/vm/tstringnil)
+        stmtList = stmtList[0]
+
+      if openingParams.kind != nkEmpty:
+        result.add newProcNode(nkDo, stmtList.info, stmtList,
+                               params = openingParams, pragmas = openingPragmas)
+      else:
+        result.add stmtList
 
     while sameInd(p):
       var nextBlock: PNode