diff options
author | Jason Beetham <beefers331@gmail.com> | 2021-09-30 08:55:43 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-30 16:55:43 +0200 |
commit | f915b3aa86929d87e162b6ddd7589e6337a30397 (patch) | |
tree | 145681372e5c59cf5ffd468507b96bee76d85a5b /tests | |
parent | c38ab3e257fbb08622f9ec6f0068a0fd3a5d82d7 (diff) | |
download | Nim-f915b3aa86929d87e162b6ddd7589e6337a30397.tar.gz |
Alternative to #18928 (#18931)
* fixed #18841 * Added test
Diffstat (limited to 'tests')
-rw-r--r-- | tests/generics/trecursivegenerics.nim | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/tests/generics/trecursivegenerics.nim b/tests/generics/trecursivegenerics.nim index e4c0e720f..1b152b063 100644 --- a/tests/generics/trecursivegenerics.nim +++ b/tests/generics/trecursivegenerics.nim @@ -43,4 +43,54 @@ block: ItemSimple = ref object link:DoublyLinkedNode[ ItemSimple ] - let link = newDoublyLinkedNode( Item[Box]() ) \ No newline at end of file + let link = newDoublyLinkedNode( Item[Box]() ) + +block: #18897 + type + SkipListObj[T] = object + over: SkipList[T] + down: SkipList[T] + value: T + + SkipList[T] = ref SkipListObj[T] + + GraphObj[N, E; F: static[int]] = object + nodes: SkipList[Node[N, E]] + + Graph[N, E; F: static[int]] = ref GraphObj[N, E, F] + + Node[N, E] = ref NodeObj[N, E] + + NodeObj[N, E] = object + value: N + incoming: SkipList[Edge[N, E]] + outgoing: SkipList[Edge[N, E]] + + Edge[N, E] = ref EdgeObj[N, E] + + EdgeObj[N, E] = object + value: E + id: int + source: Node[N, E] + target: Node[N, E] + + EdgeResult[N, E] = tuple + source: Node[N, E] + edge: Edge[N, E] + target: Node[N, E] + + proc newSkipList[T](value: T): SkipList[T] = + static: echo T, " ", typeof(result.value) + result = SkipList[T](value: value) + + proc toSkipList[T](values: openArray[T] = @[]): SkipList[T] = + for item in items(values): + if result.isNil: + result = newSkipList(item) + + proc newContainer[N, E, F](graph: Graph[N, E, F]; form: typedesc): auto = + result = toSkipList[form]([]) + + var + result = Graph[int, string, 0]() + result.nodes = result.newContainer(Node[int, string]) \ No newline at end of file |