mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 13:33:22 +00:00
(cherry picked from commit 6391f6e861)
This commit is contained in:
@@ -995,7 +995,8 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
||||
let nc = regs[rc].node
|
||||
if nb.kind != nc.kind: discard
|
||||
elif (nb == nc) or (nb.kind == nkNilLit): ret = true # intentional
|
||||
elif sameConstant(nb, nc): ret = true
|
||||
elif (nb.kind in {nkSym, nkTupleConstr, nkClosure} and nb.typ.kind == tyProc) and sameConstant(nb, nc):
|
||||
ret = true
|
||||
# this also takes care of procvar's, represented as nkTupleConstr, e.g. (nil, nil)
|
||||
elif nb.kind == nkIntLit and nc.kind == nkIntLit and nb.intVal == nc.intVal: # TODO: nkPtrLit
|
||||
let tb = nb.getTyp
|
||||
|
||||
@@ -1,67 +1,88 @@
|
||||
discard """
|
||||
output: '''true'''
|
||||
targets: "c js"
|
||||
"""
|
||||
|
||||
import lists
|
||||
import std/[lists, sequtils]
|
||||
|
||||
const
|
||||
data = [1, 2, 3, 4, 5, 6]
|
||||
|
||||
block SinglyLinkedListTest1:
|
||||
var L: SinglyLinkedList[int]
|
||||
for d in items(data): L.prepend(d)
|
||||
for d in items(data): L.append(d)
|
||||
assert($L == "[6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6]")
|
||||
|
||||
assert(4 in L)
|
||||
template main =
|
||||
block SinglyLinkedListTest1:
|
||||
var L: SinglyLinkedList[int]
|
||||
for d in items(data): L.prepend(d)
|
||||
for d in items(data): L.append(d)
|
||||
doAssert($L == "[6, 5, 4, 3, 2, 1, 1, 2, 3, 4, 5, 6]")
|
||||
|
||||
block SinglyLinkedListTest2:
|
||||
var L: SinglyLinkedList[string]
|
||||
for d in items(data): L.prepend($d)
|
||||
assert($L == """["6", "5", "4", "3", "2", "1"]""")
|
||||
doAssert(4 in L)
|
||||
|
||||
assert("4" in L)
|
||||
block SinglyLinkedListTest2:
|
||||
var L: SinglyLinkedList[string]
|
||||
for d in items(data): L.prepend($d)
|
||||
doAssert($L == """["6", "5", "4", "3", "2", "1"]""")
|
||||
|
||||
doAssert("4" in L)
|
||||
|
||||
|
||||
block DoublyLinkedListTest1:
|
||||
var L: DoublyLinkedList[int]
|
||||
for d in items(data): L.prepend(d)
|
||||
for d in items(data): L.append(d)
|
||||
L.remove(L.find(1))
|
||||
assert($L == "[6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6]")
|
||||
block DoublyLinkedListTest1:
|
||||
var L: DoublyLinkedList[int]
|
||||
for d in items(data): L.prepend(d)
|
||||
for d in items(data): L.append(d)
|
||||
L.remove(L.find(1))
|
||||
doAssert($L == "[6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6]")
|
||||
|
||||
assert(4 in L)
|
||||
doAssert(4 in L)
|
||||
|
||||
block SinglyLinkedRingTest1:
|
||||
var L: SinglyLinkedRing[int]
|
||||
L.prepend(4)
|
||||
assert($L == "[4]")
|
||||
L.prepend(4)
|
||||
block SinglyLinkedRingTest1:
|
||||
var L: SinglyLinkedRing[int]
|
||||
L.prepend(4)
|
||||
doAssert($L == "[4]")
|
||||
L.prepend(4)
|
||||
|
||||
assert($L == "[4, 4]")
|
||||
assert(4 in L)
|
||||
doAssert($L == "[4, 4]")
|
||||
doAssert(4 in L)
|
||||
|
||||
|
||||
block DoublyLinkedRingTest1:
|
||||
var L: DoublyLinkedRing[int]
|
||||
L.prepend(4)
|
||||
assert($L == "[4]")
|
||||
L.prepend(4)
|
||||
block DoublyLinkedRingTest1:
|
||||
var L: DoublyLinkedRing[int]
|
||||
L.prepend(4)
|
||||
doAssert($L == "[4]")
|
||||
L.prepend(4)
|
||||
|
||||
assert($L == "[4, 4]")
|
||||
assert(4 in L)
|
||||
doAssert($L == "[4, 4]")
|
||||
doAssert(4 in L)
|
||||
|
||||
L.append(3)
|
||||
L.append(5)
|
||||
assert($L == "[4, 4, 3, 5]")
|
||||
L.append(3)
|
||||
L.append(5)
|
||||
doAssert($L == "[4, 4, 3, 5]")
|
||||
|
||||
L.remove(L.find(3))
|
||||
L.remove(L.find(5))
|
||||
L.remove(L.find(4))
|
||||
L.remove(L.find(4))
|
||||
assert($L == "[]")
|
||||
assert(4 notin L)
|
||||
L.remove(L.find(3))
|
||||
L.remove(L.find(5))
|
||||
L.remove(L.find(4))
|
||||
L.remove(L.find(4))
|
||||
doAssert($L == "[]")
|
||||
doAssert(4 notin L)
|
||||
|
||||
block tlistsToString:
|
||||
block:
|
||||
var l = initDoublyLinkedList[int]()
|
||||
l.append(1)
|
||||
l.append(2)
|
||||
l.append(3)
|
||||
doAssert $l == "[1, 2, 3]"
|
||||
block:
|
||||
var l = initDoublyLinkedList[string]()
|
||||
l.append("1")
|
||||
l.append("2")
|
||||
l.append("3")
|
||||
doAssert $l == """["1", "2", "3"]"""
|
||||
block:
|
||||
var l = initDoublyLinkedList[char]()
|
||||
l.append('1')
|
||||
l.append('2')
|
||||
l.append('3')
|
||||
doAssert $l == """['1', '2', '3']"""
|
||||
|
||||
echo "true"
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user