diff options
author | Araq <rumpf_a@web.de> | 2019-07-18 12:13:22 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2019-07-18 12:13:22 +0200 |
commit | 6d8913ee1422143baebd438f7526208193c0bd5e (patch) | |
tree | ac97c5bd9b41e1fa8220be7914ae3709475578fe /compiler | |
parent | 7deb49e992b734d5ae513460fdc9cf68d4000588 (diff) | |
download | Nim-6d8913ee1422143baebd438f7526208193c0bd5e.tar.gz |
nimpretty: fixes #11616
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/parser.nim | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim index 74d633814..101e66ba4 100644 --- a/compiler/parser.nim +++ b/compiler/parser.nim @@ -1203,6 +1203,13 @@ proc parseFor(p: var TParser): PNode = colcom(p, result) addSon(result, parseStmt(p)) +template nimprettyDontTouch(body) = + when defined(nimpretty): + inc p.em.keepIndents + body + when defined(nimpretty): + dec p.em.keepIndents + proc parseExpr(p: var TParser): PNode = #| expr = (blockExpr #| | ifExpr @@ -1212,12 +1219,26 @@ proc parseExpr(p: var TParser): PNode = #| | tryExpr) #| / simpleExpr case p.tok.tokType: - of tkBlock: result = parseBlock(p) - of tkIf: result = parseIfExpr(p, nkIfExpr) - of tkFor: result = parseFor(p) - of tkWhen: result = parseIfExpr(p, nkWhenExpr) - of tkCase: result = parseCase(p) - of tkTry: result = parseTry(p, isExpr=true) + of tkBlock: + nimprettyDontTouch: + result = parseBlock(p) + of tkIf: + nimprettyDontTouch: + result = parseIfExpr(p, nkIfExpr) + of tkFor: + nimprettyDontTouch: + result = parseFor(p) + of tkWhen: + nimprettyDontTouch: + result = parseIfExpr(p, nkWhenExpr) + of tkCase: + # Currently we think nimpretty is good enough with case expressions, + # so it is allowed to touch them: + #nimprettyDontTouch: + result = parseCase(p) + of tkTry: + nimprettyDontTouch: + result = parseTry(p, isExpr=true) else: result = simpleExpr(p) proc parseEnum(p: var TParser): PNode |