1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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 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
- proc main2 =
- # 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)
- main2()
- GC_fullCollect()
|