123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- discard """
- output: '''
- do nothing
- HELLO WORLD!
- '''
- """
- # tmethods1
- method somethin(obj: RootObj) {.base.} =
- echo "do nothing"
- type
- TNode* = object {.inheritable.}
- PNode* = ref TNode
- PNodeFoo* = ref object of TNode
- TSomethingElse = object
- PSomethingElse = ref TSomethingElse
- method foo(a: PNode, b: PSomethingElse) {.base.} = discard
- method foo(a: PNodeFoo, b: PSomethingElse) = discard
- var o: RootObj
- o.somethin()
- # tmproto
- type
- Obj1 = ref object {.inheritable.}
- Obj2 = ref object of Obj1
- method beta(x: Obj1): int {.base.}
- proc delta(x: Obj2): int =
- beta(x)
- method beta(x: Obj2): int
- proc alpha(x: Obj1): int =
- beta(x)
- method beta(x: Obj1): int = 1
- method beta(x: Obj2): int = 2
- proc gamma(x: Obj1): int =
- beta(x)
- doAssert alpha(Obj1()) == 1
- doAssert gamma(Obj1()) == 1
- doAssert alpha(Obj2()) == 2
- doAssert gamma(Obj2()) == 2
- doAssert delta(Obj2()) == 2
- # tsimmeth
- import strutils
- var x = "hello world!".toLowerAscii.toUpperAscii
- x.echo()
- # trecmeth
- # Note: We only compile this to verify that code generation
- # for recursive methods works, no code is being executed
- type Obj = ref object of RootObj
- # Mutual recursion
- method alpha(x: Obj) {.base.}
- method beta(x: Obj) {.base.}
- method alpha(x: Obj) =
- beta(x)
- method beta(x: Obj) =
- alpha(x)
- # Simple recursion
- method gamma(x: Obj) {.base.} =
- gamma(x)
|