mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
Empty check in shallow [backport] (#9676)
This commit is contained in:
@@ -4017,6 +4017,7 @@ proc shallow*[T](s: var seq[T]) {.noSideEffect, inline.} =
|
||||
## marks a sequence `s` as `shallow`:idx:. Subsequent assignments will not
|
||||
## perform deep copies of `s`. This is only useful for optimization
|
||||
## purposes.
|
||||
if s.len == 0: return
|
||||
when not defined(JS) and not defined(nimscript):
|
||||
var s = cast[PGenericSeq](s)
|
||||
s.reserved = s.reserved or seqShallowFlag
|
||||
|
||||
@@ -170,6 +170,30 @@ block tshallowseq:
|
||||
xxx()
|
||||
|
||||
|
||||
block tshallowemptyseq:
|
||||
proc test() =
|
||||
var nilSeq: seq[int] = @[]
|
||||
var emptySeq: seq[int] = newSeq[int]()
|
||||
block:
|
||||
var t = @[1,2,3]
|
||||
shallow(nilSeq)
|
||||
t = nilSeq
|
||||
doAssert t == @[]
|
||||
block:
|
||||
var t = @[1,2,3]
|
||||
shallow(emptySeq)
|
||||
t = emptySeq
|
||||
doAssert t == @[]
|
||||
block:
|
||||
var t = @[1,2,3]
|
||||
shallowCopy(t, nilSeq)
|
||||
doAssert t == @[]
|
||||
block:
|
||||
var t = @[1,2,3]
|
||||
shallowCopy(t, emptySeq)
|
||||
doAssert t == @[]
|
||||
test()
|
||||
|
||||
|
||||
import strutils
|
||||
block ttoseq:
|
||||
|
||||
Reference in New Issue
Block a user