summary refs log tree commit diff stats
path: root/tests/ccgbugs/tobjconstr_bad_aliasing.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2017-12-15 11:21:49 +0100
committerAraq <rumpf_a@web.de>2017-12-15 11:21:49 +0100
commita5e4d2f7a3afdf4e068ae5e6c48392a29c0e8ced (patch)
tree432ed41b3f691259bcc5064e492f90830a66b173 /tests/ccgbugs/tobjconstr_bad_aliasing.nim
parent196977f623c3e3384e943c08cb85e6e0ded31109 (diff)
downloadNim-a5e4d2f7a3afdf4e068ae5e6c48392a29c0e8ced.tar.gz
fixes #668
Diffstat (limited to 'tests/ccgbugs/tobjconstr_bad_aliasing.nim')
-rw-r--r--tests/ccgbugs/tobjconstr_bad_aliasing.nim26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/ccgbugs/tobjconstr_bad_aliasing.nim b/tests/ccgbugs/tobjconstr_bad_aliasing.nim
new file mode 100644
index 000000000..ea51ecacb
--- /dev/null
+++ b/tests/ccgbugs/tobjconstr_bad_aliasing.nim
@@ -0,0 +1,26 @@
+discard """
+  output: '''(10, (20, ))'''
+"""
+
+import strutils, sequtils
+
+# bug #668
+
+type
+  TThing = ref object
+    data: int
+    children: seq[TThing]
+
+proc `$`(t: TThing): string =
+  result = "($1, $2)" % @[$t.data, join(map(t.children, proc(th: TThing): string = $th), ", ")]
+
+proc somethingelse(): seq[TThing] =
+  result = @[TThing(data: 20, children: @[])]
+
+proc dosomething(): seq[TThing] =
+  result = somethingelse()
+
+  result = @[TThing(data: 10, children: result)]
+
+when isMainModule:
+  echo($dosomething()[0])