summary refs log tree commit diff stats
path: root/tests/destructor
diff options
context:
space:
mode:
authorLemonBoy <LemonBoy@users.noreply.github.com>2019-02-09 19:55:26 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-02-13 23:30:14 +0100
commitd83520ec8f2e9b61c59930d7353ff621ef2ad3ec (patch)
treecd2f307ea24af8010114ebc11b9517ecd9e41d31 /tests/destructor
parenteb30c786949c25f99e90f7b73e0f1714ffb6e3c0 (diff)
downloadNim-d83520ec8f2e9b61c59930d7353ff621ef2ad3ec.tar.gz
Do not walk into type sub-nodes for cast/conv expr (#10616)
Diffstat (limited to 'tests/destructor')
-rw-r--r--tests/destructor/tcast.nim18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/destructor/tcast.nim b/tests/destructor/tcast.nim
new file mode 100644
index 000000000..7d5a1954c
--- /dev/null
+++ b/tests/destructor/tcast.nim
@@ -0,0 +1,18 @@
+discard """
+  cmd: '''nim c --newruntime $file'''
+"""
+
+# Make sure we don't walk cast[T] type section while injecting sinks/destructors
+block:
+  type
+    XY[T] = object
+      discard
+
+  proc `=`[T](x: var XY[T]; v: XY[T]) {.error.}
+  proc `=sink`[T](x: var XY[T]; v: XY[T]) {.error.}
+
+  proc main[T]() =
+    var m = cast[ptr XY[T]](alloc0(sizeof(XY[T])))
+    doAssert(m != nil)
+
+  main[int]()