fixes #14444; add genLineDir before assignment (#21201)

* fixes #14444; add `genLineDir` before raises

* add a test case

* fixes differently
This commit is contained in:
ringabout 2022-12-30 00:06:57 +08:00 • committed by GitHub
commit 705da9d452
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 0 deletions

View file

@ -1620,6 +1620,7 @@ proc genAsgn(p: BProc, e: PNode, fastAsgn: bool) =
initLoc(a, locNone, le, OnUnknown)
a.flags.incl(lfEnforceDeref)
a.flags.incl(lfPrepareForMutation)
genLineDir(p, le) # it can be a nkBracketExpr, which may raise
expr(p, le, a)
a.flags.excl(lfPrepareForMutation)
if fastAsgn: incl(a.flags, lfNoDeepCopy)

14
tests/errmsgs/t14444.nim Normal file
View file

@ -0,0 +1,14 @@
discard """
matrix: "--hints:off"
exitcode: "1"
output: '''
t14444.nim(13) t14444
fatal.nim(51) sysFatal
Error: unhandled exception: index out of bounds, the container is empty [IndexDefect]
'''
"""
when true: # bug #14444
var i: string
i[10] = 'j'
echo i