summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorcooldome <cdome@bk.ru>2019-04-17 10:55:41 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-04-17 11:55:41 +0200
commit7d8af25d5828e67f10c0f5a75abf9ee8fc02a9bb (patch)
treedd25210549bc8c64b17db2776fa75bde463ab58b /compiler
parent43832f8e575b472907579b74dca0797f8130baa8 (diff)
downloadNim-7d8af25d5828e67f10c0f5a75abf9ee8fc02a9bb.tar.gz
revert parser stmtListExpr (#11007)
* Revert "Support for stmtListExpr in parser after major keywords. Scaled down version. (#10852)"

This reverts commit 862897dc0f122e374c0e4d44770ffcd8825e51e3.

* redo fix for #4035

* render stmtlistExpr using semicolon

* Revert "render stmtlistExpr using semicolon"

This reverts commit cafb78b8d5b125b5f6ba94248377a1433b3138cb.

* revert test

Diffstat (limited to 'compiler')
-rw-r--r--compiler/parser.nim28
1 files changed, 9 insertions, 19 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim
index ec62dbf54..c154e5eb0 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -238,7 +238,6 @@ proc newIdentNodeP(ident: PIdent, p: TParser): PNode =
 
 proc parseExpr(p: var TParser): PNode
 proc parseStmt(p: var TParser): PNode
-proc parseStmtListExpr(p: var TParser): PNode
 proc parseTypeDesc(p: var TParser): PNode
 proc parseParamList(p: var TParser, retColon = true): PNode
 
@@ -1482,12 +1481,12 @@ proc parseFromStmt(p: var TParser): PNode =
   #expectNl(p)
 
 proc parseReturnOrRaise(p: var TParser, kind: TNodeKind): PNode =
-  #| returnStmt = 'return' stmtListExpr?
-  #| raiseStmt = 'raise' stmtListExpr?
-  #| yieldStmt = 'yield' stmtListExpr?
-  #| discardStmt = 'discard' stmtListExpr?
-  #| breakStmt = 'break' stmtListExpr?
-  #| continueStmt = 'break' stmtListExpr?
+  #| returnStmt = 'return' optInd expr?
+  #| raiseStmt = 'raise' optInd expr?
+  #| yieldStmt = 'yield' optInd expr?
+  #| discardStmt = 'discard' optInd expr?
+  #| breakStmt = 'break' optInd expr?
+  #| continueStmt = 'break' optInd expr?
   result = newNodeP(kind, p)
   getTok(p)
   if p.tok.tokType == tkComment:
@@ -1497,7 +1496,9 @@ proc parseReturnOrRaise(p: var TParser, kind: TNodeKind): PNode =
     # NL terminates:
     addSon(result, p.emptyNode)
   else:
-    addSon(result, parseStmtListExpr(p))
+    var e = parseExpr(p)
+    e = postExprBlocks(p, e)
+    addSon(result, e)
 
 proc parseIfOrWhen(p: var TParser, kind: TNodeKind): PNode =
   #| condStmt = expr colcom stmt COMMENT?
@@ -2252,17 +2253,6 @@ proc parseStmt(p: var TParser): PNode =
           getTok(p)
           if err and p.tok.tokType == tkEof: break
 
-proc parseStmtListExpr(p: var TParser): PNode =
-  #| stmtListExpr = (IND{>} stmt) / expr
-  if p.tok.indent > p.currInd:
-    result = parseStmt(p)
-    result.kind = nkStmtListExpr
-    if result.len == 1:
-      result = result[0]
-  else:
-    result = parseExpr(p)
-    result = postExprBlocks(p, result)
-
 proc parseAll(p: var TParser): PNode =
   ## Parses the rest of the input stream held by the parser into a PNode.
   result = newNodeP(nkStmtList, p)