summary refs log tree commit diff stats
path: root/tests/generics
diff options
context:
space:
mode:
authorZahary Karadjov <zahary@gmail.com>2017-04-18 23:55:59 +0300
committerZahary Karadjov <zahary@gmail.com>2017-04-18 23:55:59 +0300
commit3e52bb6535a70339cf4a15123be09916ef0c31f6 (patch)
tree7ca6696bc579014182dfe982f0b2c17f646177ad /tests/generics
parent13701c09579447d3c54f6a1e27ab24b89b11b9e9 (diff)
downloadNim-3e52bb6535a70339cf4a15123be09916ef0c31f6.tar.gz
fix a regrsesion in signature matching of derived ptr types
Diffstat (limited to 'tests/generics')
-rw-r--r--tests/generics/tptrinheritance.nim20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/generics/tptrinheritance.nim b/tests/generics/tptrinheritance.nim
new file mode 100644
index 000000000..1e1115fa5
--- /dev/null
+++ b/tests/generics/tptrinheritance.nim
@@ -0,0 +1,20 @@
+type NSPasteboardItem* = ptr object
+type NSPasteboard* = ptr object
+type NSArrayAbstract = ptr object {.inheritable.}
+type NSMutableArrayAbstract = ptr object of NSArrayAbstract
+type NSArray*[T] = ptr object of NSArrayAbstract
+type NSMutableArray*[T] = ptr object of NSArray[T]
+
+proc newMutableArrayAbstract*(): NSMutableArrayAbstract = discard
+
+template newMutableArray*(T: typedesc): NSMutableArray[T] =
+  cast[NSMutableArray[T]](newMutableArrayAbstract())
+
+proc writeObjects*(p: NSPasteboard, o: ptr NSArray[NSPasteboardItem]) = discard
+
+let a = newMutableArray NSPasteboardItem
+var x: NSMutableArray[NSPasteboardItem]
+var y: NSArray[NSPasteboardItem] = x
+
+writeObjects(nil, a)
+