diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2021-07-18 15:16:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-18 15:16:26 +0200 |
commit | 99c4b69097638aca8377ea3746e52cc19c24ced8 (patch) | |
tree | acc4a336f7a94305f3e92d462de5732d10746e9d /lib/system.nim | |
parent | adba5eb45e0ae0d370aea4d653a4f00a4c075695 (diff) | |
download | Nim-99c4b69097638aca8377ea3746e52cc19c24ced8.tar.gz |
fixed system.delete (#18507)
Diffstat (limited to 'lib/system.nim')
-rw-r--r-- | lib/system.nim | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/system.nim b/lib/system.nim index 57d620e57..2790187f4 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2134,7 +2134,12 @@ const import system/dollars export dollars -proc delete*[T](x: var seq[T], i: Natural) {.noSideEffect.} = +when defined(nimAuditDelete): + {.pragma: auditDelete, deprecated: "review this call for out of bounds behavior".} +else: + {.pragma: auditDelete.} + +proc delete*[T](x: var seq[T], i: Natural) {.noSideEffect, auditDelete.} = ## Deletes the item at index `i` by moving all `x[i+1..^1]` items by one position. ## ## This is an `O(n)` operation. @@ -2147,12 +2152,10 @@ proc delete*[T](x: var seq[T], i: Natural) {.noSideEffect.} = s.delete(2) doAssert s == @[1, 2, 4, 5] - doAssertRaises(IndexDefect): - s.delete(4) - - if i > high(x): - # xxx this should call `raiseIndexError2(i, high(x))` after some refactoring - raise (ref IndexDefect)(msg: "index out of bounds: '" & $i & "' < '" & $x.len & "' failed") + when defined(nimStrictDelete): + if i > high(x): + # xxx this should call `raiseIndexError2(i, high(x))` after some refactoring + raise (ref IndexDefect)(msg: "index out of bounds: '" & $i & "' < '" & $x.len & "' failed") template defaultImpl = let xl = x.len |