summary refs log tree commit diff stats
path: root/tests/ccgbugs/twrong_rc_for_refarray.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2016-08-24 11:48:21 +0200
committerAndreas Rumpf <rumpf_a@web.de>2016-08-24 11:48:21 +0200
commit18e37cad0829e2f8eb1d8733f91d5d3ec79a94c9 (patch)
tree846be46daaba83f2d284f58dacf94acfc71d1286 /tests/ccgbugs/twrong_rc_for_refarray.nim
parent636e74fe397a7e93dd1955be549c901b3e9c8312 (diff)
downloadNim-18e37cad0829e2f8eb1d8733f91d5d3ec79a94c9.tar.gz
fixes #4653
Diffstat (limited to 'tests/ccgbugs/twrong_rc_for_refarray.nim')
-rw-r--r--tests/ccgbugs/twrong_rc_for_refarray.nim26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/ccgbugs/twrong_rc_for_refarray.nim b/tests/ccgbugs/twrong_rc_for_refarray.nim
new file mode 100644
index 000000000..99bdac5e1
--- /dev/null
+++ b/tests/ccgbugs/twrong_rc_for_refarray.nim
@@ -0,0 +1,26 @@
+discard """
+  output: '''m[0][0] = 1.0
+m[0][0] = 2.0'''
+"""
+# bug #4653
+type
+  Vector = ref array[2, float64]
+  Matrix = ref array[2, Vector]
+
+proc newVector(): Vector =
+  new(result)
+
+proc newMatrix(): Matrix =
+  new(result)
+  for ix in 0 .. 1:
+    result[ix] = newVector()
+
+let m = newMatrix()
+
+m[0][0] = 1.0
+echo "m[0][0] = ", m[0][0]
+
+GC_fullCollect()
+
+m[0][0] = 2.0
+echo "m[0][0] = ", m[0][0]