summary refs log tree commit diff stats
path: root/tests/misc/tcast.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/misc/tcast.nim')
-rw-r--r--tests/misc/tcast.nim44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/misc/tcast.nim b/tests/misc/tcast.nim
index 745b9e221..12179cb1c 100644
--- a/tests/misc/tcast.nim
+++ b/tests/misc/tcast.nim
@@ -29,3 +29,47 @@ reject: discard cast[enum](0)
 proc a = echo "hi"
 
 reject: discard cast[ptr](a)
+
+# bug #15623
+block:
+  if false:
+    echo cast[ptr int](nil)[]
+
+block:
+  if false:
+    var x: ref int = nil
+    echo cast[ptr int](x)[]
+
+block:
+  doAssert cast[int](cast[ptr int](nil)) == 0
+
+block:
+  var x: ref int = nil
+  doAssert cast[int](cast[ptr int](x)) == 0
+
+block:
+  block:
+    static:
+      let a = cast[pointer](nil)
+      doAssert a.repr == "nil"
+
+  block:
+    static:
+      doAssert cast[ptr int](nil).repr == "nil"
+
+  block:
+    const str = cast[ptr int](nil)
+    static:
+      doAssert str.repr == "nil"
+
+  block:
+    static:
+      doAssert cast[ptr int](nil).repr == "nil"
+
+  block:
+    static:
+      doAssert cast[RootRef](nil).repr == "nil"
+
+  block:
+    static:
+      doAssert cast[cstring](nil).repr == "nil"