diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-08-31 19:04:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-31 19:04:32 +0800 |
commit | 5bd1afc3f9716fed833b7bd251ee45479b78a950 (patch) | |
tree | 6187573153e3590c9030b99d7707a9bbb40f49db | |
parent | dfb3a88cc3a077b452c90e63af3dec21ba822181 (diff) | |
download | Nim-5bd1afc3f9716fed833b7bd251ee45479b78a950.tar.gz |
fixes #17197; fixes #22560; fixes the dest of newSeqOfCap in refc (#22594)
-rw-r--r-- | compiler/ccgexprs.nim | 1 | ||||
-rw-r--r-- | tests/collections/tseq.nim | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim index 2492eebae..8bd0b8721 100644 --- a/compiler/ccgexprs.nim +++ b/compiler/ccgexprs.nim @@ -1468,6 +1468,7 @@ proc genNewSeqOfCap(p: BProc; e: PNode; d: var TLoc) = getSeqPayloadType(p.module, seqtype), ]) else: + if d.k == locNone: d = getTemp(p, e.typ, needsInit=false) # bug #22560 putIntoDest(p, d, e, ropecg(p.module, "($1)#nimNewSeqOfCap($2, $3)", [ getTypeDesc(p.module, seqtype), diff --git a/tests/collections/tseq.nim b/tests/collections/tseq.nim index 5fca784e7..0f8084c78 100644 --- a/tests/collections/tseq.nim +++ b/tests/collections/tseq.nim @@ -223,3 +223,20 @@ for i in 0..100: var test = newSeqOfCap[uint32](1) test.setLen(1) doAssert test[0] == 0, $(test[0], i) + + +# bug #22560 +doAssert len(newSeqOfCap[int](42)) == 0 + +block: # bug #17197 + type Matrix = seq[seq[int]] + + proc needlemanWunsch(sequence1: string, sequence2: string, gap_penal: int8, match: int8, indel_penal: int8): bool = + let seq2_len = sequence2.len + + var grid: Matrix + for i in sequence1: + grid.add(newSeqOfCap[seq[int]](seq2_len)) + result = true + + doAssert needlemanWunsch("ABC", "DEFG", 1, 2, 3) |