Raise IndexDefect when deleting element at out of bounds index (#17821)
Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> Co-authored-by: Heiko Nickerl <mail@hnicke.de> Co-authored-by: Heiko Nickerl <heiko.nickerl@flipapp.de>
This commit is contained in:
parent
eb0b323f45
commit
92cb765714
5 changed files with 70 additions and 36 deletions
|
|
@ -17,14 +17,10 @@ for i in 0..1024:
|
|||
s.add(obj)
|
||||
|
||||
proc limit*[t](a: var seq[t]) =
|
||||
var loop = s.len() - 512
|
||||
for i in 0..loop:
|
||||
#echo i
|
||||
#GC_fullCollect()
|
||||
while s.len > 0:
|
||||
if getOccupiedMem() > 3000_000: quit("still a leak!")
|
||||
s.delete(i)
|
||||
s.delete(0)
|
||||
|
||||
s.limit()
|
||||
|
||||
echo "no leak: ", getOccupiedMem()
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@ discard """
|
|||
targets: "c cpp js"
|
||||
"""
|
||||
|
||||
import stdtest/testutils
|
||||
|
||||
# TODO: in future work move existing `system` tests here, where they belong
|
||||
|
||||
import stdtest/testutils
|
||||
|
||||
template main =
|
||||
block: # closure
|
||||
|
|
@ -42,5 +43,34 @@ template main =
|
|||
# doAssert rawEnv(inner3) != rawEnv(inner1) # because `a` vs `b` # this doesn't hold
|
||||
outer()
|
||||
|
||||
block: # system.delete
|
||||
block:
|
||||
var s = @[1]
|
||||
s.delete(0)
|
||||
doAssert s == @[]
|
||||
|
||||
block:
|
||||
var s = @["foo", "bar"]
|
||||
s.delete(1)
|
||||
doAssert s == @["foo"]
|
||||
|
||||
block:
|
||||
var s: seq[string]
|
||||
doAssertRaises(IndexDefect):
|
||||
s.delete(0)
|
||||
|
||||
block:
|
||||
doAssert not compiles(@["foo"].delete(-1))
|
||||
|
||||
block: # bug #6710
|
||||
var s = @["foo"]
|
||||
s.delete(0)
|
||||
doAssert s == @[]
|
||||
|
||||
block: # bug #16544: deleting out of bounds index should raise
|
||||
var s = @["foo"]
|
||||
doAssertRaises(IndexDefect):
|
||||
s.delete(1)
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
|
|
|||
|
|
@ -59,11 +59,6 @@ doAssert high(float) > low(float)
|
|||
doAssert high(float32) > low(float32)
|
||||
doAssert high(float64) > low(float64)
|
||||
|
||||
# bug #6710
|
||||
var s = @[1]
|
||||
s.delete(0)
|
||||
|
||||
|
||||
proc foo(a: openArray[int]) =
|
||||
for x in a: echo x
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue