diff options
author | Arne Döring <arne.doering@gmx.net> | 2019-03-18 11:37:09 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-03-18 11:37:09 +0100 |
commit | 97c3b113a52dc96f08a898d3e5ae886bce529bc3 (patch) | |
tree | db04a2419b19deea272e28ee59dd44beb365dbc2 /tests/destructor/trecursive.nim | |
parent | 5661a8303ca90822b22ebb59a45e31b309c59c19 (diff) | |
download | Nim-97c3b113a52dc96f08a898d3e5ae886bce529bc3.tar.gz |
Size ptr tuple (#10846)
* fixes #10117 * Add support for recursive tuples * detect in generics
Diffstat (limited to 'tests/destructor/trecursive.nim')
-rw-r--r-- | tests/destructor/trecursive.nim | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/destructor/trecursive.nim b/tests/destructor/trecursive.nim new file mode 100644 index 000000000..55e67f52a --- /dev/null +++ b/tests/destructor/trecursive.nim @@ -0,0 +1,34 @@ + +discard """ + output: ''' +test1 OK +''' +""" + +import smart_ptr + +type + Node[T] = object + value: T + next: SharedPtr[Node[T]] + + ForwardList[T] = object + first: SharedPtr[Node[T]] + len: Natural + +proc pushFront*[T] (list: var ForwardList[T], val: sink T) = + var newNode = newSharedPtr(Node[T](value: val)) + var result = false + while not result: + var head = list.first + newNode.get.next = head + result = list.first.cas(head, newNode) + list.len.atomicInc() + +proc test1() = + var list: ForwardList[int] + list.pushFront(1) + doAssert list.len == 1 + echo "test1 OK" + +test1() |