summary refs log tree commit diff stats
path: root/tests/array/tarraycons_ptr_generic.nim
blob: eb89a196fcb056e8fb4b6bcf5f2f15c4636894e2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
discard """
  output: '''apple
banana
Fruit
2
4
3
none
skin
paper
'''
"""
type
  Fruit = object of RootObj
    name: string
  Apple = object of Fruit
  Banana = object of Fruit

var
  ir = Fruit(name: "Fruit")
  ia = Apple(name: "apple")
  ib = Banana(name: "banana")

let x = [ia.addr, ib.addr, ir.addr]
for c in x: echo c.name

type
  Vehicle[T] = object of RootObj
    tire: T
  Car[T] = object of Vehicle[T]
  Bike[T] = object of Vehicle[T]

var v = Vehicle[int](tire: 3)
var c = Car[int](tire: 4)
var b = Bike[int](tire: 2)

let y = [b.addr, c.addr, v.addr]
for c in y: echo c.tire

type
  Book[T] = ref object of RootObj
    cover: T
  Hard[T] = ref object of Book[T]
  Soft[T] = ref object of Book[T]

var bn = Book[string](cover: "none")
var hs = Hard[string](cover: "skin")
var bp = Soft[string](cover: "paper")

let z = [bn, hs, bp]
for c in z: echo c.cover