summary refs log tree commit diff stats
path: root/tests/ccgbugs/t20141.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ccgbugs/t20141.nim')
-rw-r--r--tests/ccgbugs/t20141.nim27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/ccgbugs/t20141.nim b/tests/ccgbugs/t20141.nim
new file mode 100644
index 000000000..499cd21aa
--- /dev/null
+++ b/tests/ccgbugs/t20141.nim
@@ -0,0 +1,27 @@
+discard """
+  joinable: false
+"""
+
+# bug #20141
+type
+  A = object
+  B = object
+  U = proc()
+
+proc m(h: var B) = discard
+
+template n[T, U](x: U): T =
+  static: doAssert true
+  cast[ptr T](addr x)[]
+
+proc k() =
+  var res: A
+  m(n[B](res))
+
+proc w(mounter: U) = discard
+
+proc mount(proto: U) = discard
+proc v() = mount k
+
+# This is required for failure
+w(v)
\ No newline at end of file