summary refs log tree commit diff stats
path: root/tests/generics/tptrinheritance.nim
blob: 1e1115fa56611d9bbcc30d4bb2689fa1061e07ab (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)