diff options
Diffstat (limited to 'tests/distinct/tnil.nim')
-rw-r--r-- | tests/distinct/tnil.nim | 22 |
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) |