fixes #21144; try expression will not match the less indentation except (#21152)

fixes #21144; try expression will not match the less indent except
This commit is contained in:
ringabout
2022-12-22 04:46:14 +08:00
committed by GitHub
parent 81d8ea95af
commit d0721eadf8
2 changed files with 30 additions and 1 deletions

View File

@@ -1770,11 +1770,13 @@ proc parseTry(p: var Parser; isExpr: bool): PNode =
#| (optInd 'except' optionalExprList colcom stmt)*
#| (optInd 'finally' colcom stmt)?
result = newNodeP(nkTryStmt, p)
let parentIndent = p.currInd # isExpr
getTok(p)
colcom(p, result)
result.add(parseStmt(p))
var b: PNode = nil
while sameOrNoInd(p) or isExpr:
while sameOrNoInd(p) or (isExpr and parentIndent <= p.tok.indent):
case p.tok.tokType
of tkExcept:
b = newNodeP(nkExceptBranch, p)

27
tests/parser/ttry.nim Normal file
View File

@@ -0,0 +1,27 @@
# bug #21144
block:
try:
let c = try:
10
except ValueError as exc:
10
except ValueError as exc:
discard
if true:
block:
let c = try:
10
except ValueError as exc:
10
except OSError:
99
try:
let c = try:
10
except ValueError as exc:
10
except ValueError as exc:
discard