12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- 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: ())
- (y: 0, x: 123)
- (y: 678, x: 123)
- (z: 89, y: 0, x: 128)
- (y: 678, x: 123)
- (y: 678, x: 123)
- (y: 0, x: 123)
- (y: 678, x: 123)
- (y: 123, x: 678)'''
- """
- 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 =
- 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: B
- 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)
- b=B(y: b.x, x: b.y)
- echo b # (y: 123, x: 678)
- GC_fullCollect()
|