discard """ output: '''(k: kindA, a: (x: abc, z: [1, 1, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 2, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 3, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 4, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 5, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 6, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 7, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 8, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 9, 3]), method: ()) (k: kindA, a: (x: abc, z: [1, 10, 3]), method: ()) (x: 123) (x: 123) (z: 89, y: 0, x: 128) (y: 678, x: 123) (y: 678, x: 123) (y: 0, x: 123) (y: 678, x: 123)''' """ type TArg = object x: string z: seq[int] TKind = enum kindXY, kindA TEmpty = object TDummy = ref object case k: TKind of kindXY: x, y: int of kindA: a: TArg `method`: TEmpty # bug #1791 proc `$`[T](s: seq[T]): string = # XXX why is that not in the stdlib? result = "[" for i, x in s: if i > 0: result.add(", ") result.add($x) result.add("]") proc main() = for i in 1..10: let d = TDummy(k: kindA, a: TArg(x: "abc", z: @[1,i,3]), `method`: TEmpty()) echo d[] main() # bug #6294 type A = object of RootObj x*: int B = object of A y*: int BS = object of B C = object of BS z*: int # inherited fields are ignored, so no fields are set when true: var o: A o = B(x: 123) echo o o = B(y: 678, x: 123) echo o # inherited fields are ignored echo C(x: 128, z: 89) # (y: 0, x: 0) echo B(y: 678, x: 123) # (y: 678, x: 0) echo B(x: 123, y: 678) # (y: 678, x: 0) when true: # correct, both with `var` and `let`; var b=B(x: 123) echo b # (y: 0, x: 123) b=B(y: 678, x: 123) echo b # (y: 678, x: 123)