diff options
Diffstat (limited to 'tests/accept/run/tvariantstack.nim')
-rw-r--r-- | tests/accept/run/tvariantstack.nim | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/accept/run/tvariantstack.nim b/tests/accept/run/tvariantstack.nim new file mode 100644 index 000000000..3df8197f2 --- /dev/null +++ b/tests/accept/run/tvariantstack.nim @@ -0,0 +1,46 @@ +#BUG +type + TAnyKind = enum + nkInt, + nkFloat, + nkString + PAny = ref TAny + TAny = object + case kind: TAnyKind + of nkInt: intVal: int + of nkFloat: floatVal: float + of nkString: strVal: string + + TStack* = object + list*: seq[TAny] + +proc newStack(): TStack = + result.list = @[] + +proc push(Stack: var TStack, item: TAny) = + var nSeq: seq[TAny] = @[item] + for i in items(Stack.list): + nSeq.add(i) + Stack.list = nSeq + +proc pop(Stack: var TStack): TAny = + result = Stack.list[0] + Stack.list.delete(0) + +var stack = newStack() + +var s: TAny +s.kind = nkString +s.strVal = "test" + +stack.push(s) + +var nr: TAny +nr.kind = nkint +nr.intVal = 78 + +stack.push(nr) + +var t = stack.pop() + + |