123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- discard """
- output: '''
- 34
- b
- wohoo
- baz
- '''
- """
- block tobject2:
- # Tests the object implementation
- type
- TPoint2d {.inheritable.} = object
- x, y: int
- TPoint3d = object of TPoint2d
- z: int # added a field
- proc getPoint( p: var TPoint2d) =
- writeLine(stdout, p.x)
- var p: TPoint3d
- TPoint2d(p).x = 34
- p.y = 98
- p.z = 343
- getPoint(p)
- block tofopr:
- type
- TMyType {.inheritable.} = object
- len: int
- data: string
- TOtherType = object of TMyType
- proc p(x: TMyType): bool =
- return x of TOtherType
- var
- m: TMyType
- n: TOtherType
- doAssert p(m) == false
- doAssert p(n)
- block toop:
- type
- TA = object of RootObj
- x, y: int
- TB = object of TA
- z: int
- TC = object of TB
- whatever: string
- proc p(a: var TA) = echo "a"
- proc p(b: var TB) = echo "b"
- var c: TC
- p(c)
- block tfefobjsyntax:
- type
- Foo = object
- a, b: int
- s: string
- FooBar = object of RootObj
- n, m: string
- Baz = object of FooBar
- proc invoke(a: ref Baz) =
- echo "baz"
- # check object construction:
- let x = (ref Foo)(a: 0, b: 45, s: "wohoo")
- echo x.s
- var y: ref FooBar = (ref Baz)(n: "n", m: "m")
- invoke((ref Baz)(y))
- block t3012:
- type
- A {.inheritable.} = object
- C {.inheritable.} = ref object
- type
- AA = ref object of A
- CC = ref object of C
- block t7244:
- type
- Foo = ref object of RootRef
- Bar = ref object of Foo
- proc test(foo: var Foo) = discard
- proc test(bar: var Bar) = test(Foo(bar))
- import std/macros
- #bug #20856
- macro ensureImplWorksOnConstr(t: typed): untyped =
- expectKind(t, nnkObjConstr)
- doAssert t[0].getTypeInst.getImpl.repr == "A = object"
- doAssert t[0].getImpl.repr == "A = object"
- type A = object
- ensureImplWorksOnConstr(A())
|