summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-03-08 01:19:47 +0100
committerAraq <rumpf_a@web.de>2013-03-08 01:19:47 +0100
commit2b4922aea0350c3a225619e7e10b74de95bfc2b7 (patch)
treeeda6ddc92fae0dbfdba507f21d7b594c6e71f15a /tests
parent296e7c9f40a69958579fd8169ddc38cf0a72730c (diff)
downloadNim-2b4922aea0350c3a225619e7e10b74de95bfc2b7.tar.gz
object constructors work now
Diffstat (limited to 'tests')
-rw-r--r--tests/run/tobjconstr.nim41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/run/tobjconstr.nim b/tests/run/tobjconstr.nim
new file mode 100644
index 000000000..3bd785728
--- /dev/null
+++ b/tests/run/tobjconstr.nim
@@ -0,0 +1,41 @@
+discard """
+  output: '''(k: kindA, a: (x: abc, z: [1, 1, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 2, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 3, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 4, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 5, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 6, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 7, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 8, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 9, 3]), empty: ())
+(k: kindA, a: (x: abc, z: [1, 10, 3]), empty: ())'''
+"""
+
+type
+  TArg = object
+    x: string
+    z: seq[int]
+  TKind = enum kindXY, kindA
+  TEmpty = object
+  TDummy = ref object
+    case k: TKind
+    of kindXY: x, y: int
+    of kindA: 
+      a: TArg
+      empty: TEmpty
+
+proc `$`[T](s: seq[T]): string =
+  # XXX why is that not in the stdlib?
+  result = "["
+  for i, x in s:
+    if i > 0: result.add(", ")
+    result.add($x)
+  result.add("]")
+
+proc main() =
+  for i in 1..10:
+    let d = TDummy(k: kindA, a: TArg(x: "abc", z: @[1,i,3]), empty: TEmpty())
+    echo d[]
+
+main()
+