summary refs log blame commit diff stats
path: root/tests/generics/tptrinheritance.nim
blob: 221b8777ba15c8595280c130e6baa6619abe2157 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                                 
                                                                           






                                        
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: NSArray[NSPasteboardItem]) = discard

let a = newMutableArray NSPasteboardItem
var x: NSMutableArray[NSPasteboardItem]
var y: NSArray[NSPasteboardItem] = x

writeObjects(nil, a)