summary refs log tree commit diff stats
path: root/tests/distinct/tnil.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/distinct/tnil.nim')
-rw-r--r--tests/distinct/tnil.nim22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/distinct/tnil.nim b/tests/distinct/tnil.nim
new file mode 100644
index 000000000..b54c07432
--- /dev/null
+++ b/tests/distinct/tnil.nim
@@ -0,0 +1,22 @@
+{.experimental: "notnil".}
+type
+  MyPointer = distinct pointer
+  MyString = distinct string
+  MyInt = distinct int
+
+proc foo(a: MyPointer): int =
+  # workaround a Windows 'repr' difference:
+  cast[int](a)
+
+doAssert foo(cast[MyPointer](1)) == 1
+doAssert foo(cast[MyPointer](nil)) == 0
+doAssert foo(MyPointer(nil)) == 0
+
+var p: MyPointer
+p = cast[MyPointer](1)
+p = cast[MyPointer](nil)
+p = nil.MyPointer
+
+var i: MyInt
+i = 1.MyInt
+doAssert(compiles(i = nil) == false)