This commit is contained in:
Clyybber
2021-06-28 17:41:37 +02:00
committed by GitHub
parent cb9496693a
commit 72d6a9c885
2 changed files with 23 additions and 5 deletions

View File

@@ -537,13 +537,16 @@ proc parseGStrLit(p: var Parser, a: PNode): PNode =
proc complexOrSimpleStmt(p: var Parser): PNode
proc simpleExpr(p: var Parser, mode = pmNormal): PNode
proc parseIfExpr(p: var Parser, kind: TNodeKind): PNode
proc parseIfOrWhenExpr(p: var Parser, kind: TNodeKind): PNode
proc semiStmtList(p: var Parser, result: PNode) =
inc p.inSemiStmtList
withInd(p):
# Be lenient with the first stmt/expr
let a = if p.tok.tokType == tkIf: parseIfExpr(p, nkIfStmt) else: complexOrSimpleStmt(p)
let a = case p.tok.tokType
of tkIf: parseIfOrWhenExpr(p, nkIfStmt)
of tkWhen: parseIfOrWhenExpr(p, nkWhenStmt)
else: complexOrSimpleStmt(p)
result.add a
while p.tok.tokType != tkEof:
@@ -1203,13 +1206,13 @@ proc parseExpr(p: var Parser): PNode =
result = parseBlock(p)
of tkIf:
nimprettyDontTouch:
result = parseIfExpr(p, nkIfExpr)
result = parseIfOrWhenExpr(p, nkIfExpr)
of tkFor:
nimprettyDontTouch:
result = parseFor(p)
of tkWhen:
nimprettyDontTouch:
result = parseIfExpr(p, nkWhenExpr)
result = parseIfOrWhenExpr(p, nkWhenExpr)
of tkCase:
# Currently we think nimpretty is good enough with case expressions,
# so it is allowed to touch them:
@@ -1559,7 +1562,7 @@ proc parseIfOrWhen(p: var Parser, kind: TNodeKind): PNode =
branch.add(parseStmt(p))
result.add(branch)
proc parseIfExpr(p: var Parser, kind: TNodeKind): PNode =
proc parseIfOrWhenExpr(p: var Parser, kind: TNodeKind): PNode =
#| condExpr = expr colcom expr optInd
#| ('elif' expr colcom expr optInd)*
#| 'else' colcom expr

View File

@@ -50,6 +50,8 @@ hello
9
hello
10
lucky
lucky
'''
"""
@@ -163,3 +165,16 @@ template dim: int =
else:
int.high)
# lenient indentation:
echo (if 0 == 1:
"0 == 1"
else:
"lucky")
# bug #16426
echo (when 0 == 1:
"0 == 1"
else:
"lucky")