mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-13 14:53:46 +00:00
fixes #21144; try expression will not match the less indent except
This commit is contained in:
@@ -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
27
tests/parser/ttry.nim
Normal 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
|
||||
Reference in New Issue
Block a user