summary refs log tree commit diff stats
path: root/tests/assign/tassign.nim
blob: 4c173d04f02565dc42f5ca7ce0e7b29812a03246 (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
# Test the assignment operator for complex types which need RTTI

type
  TRec = object
    x, y: int
    s: string
    seq: seq[string]
    arr: seq[seq[array[0..3, string]]]
  TRecSeq = seq[TRec]

proc test() =
  var
    a, b: TRec
  a.x = 1
  a.y = 2
  a.s = "Hallo!"
  a.seq = @["abc", "def", "ghi", "jkl"]
  a.arr = @[]
  setLen(a.arr, 4)
  a.arr[0] = @[]
  a.arr[1] = @[]

  b = a # perform a deep copy here!
  b.seq = @["xyz", "huch", "was", "soll"]
  writeLine(stdout, len(a.seq))
  writeLine(stdout, a.seq[3])
  writeLine(stdout, len(b.seq))
  writeLine(stdout, b.seq[3])
  writeLine(stdout, b.y)

test()