123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- discard """
- output: '''TBar2
- TFoo
- '''
- """
- ## XXX this output needs to be adapted for VCC which produces different results.
- # It turned out that it's hard to generate correct for these two test cases at
- # the same time.
- type
- TFoo = ref object of RootObj
- Data: int
- TBar = ref object of TFoo
- nil
- TBar2 = ref object of TBar
- d2: int
- template super(self: TBar): TFoo = self
- template super(self: TBar2): TBar = self
- proc Foo(self: TFoo) =
- echo "TFoo"
- #proc Foo(self: TBar) =
- # echo "TBar"
- # Foo(super(self))
- # works when this code is uncommented
- proc Foo(self: TBar2) =
- echo "TBar2"
- Foo(super(self))
- var b: TBar2
- new(b)
- Foo(b)
- # bug #837
- type
- PView* = ref TView
- TView* {.inheritable.} = object
- data: int
- PWindow* = ref TWindow
- TWindow* = object of TView
- data3: int
- PDesktop* = ref TDesktop
- TDesktop* = object of TView
- data2: int
- proc makeDesktop(): PDesktop = new(TDesktop)
- proc makeWindow(): PWindow = new(TWindow)
- proc thisCausesError(a: PView, b: PView) =
- discard
- var dd = makeDesktop()
- var aa = makeWindow()
- thisCausesError(dd, aa)
- # bug #5892
- type
- Foo6 = distinct array[4, float32]
- AnotherFoo = distinct array[4, float32]
- AbstractAnimationSampler* = ref object of RootObj
- AnimationSampler*[T] = ref object of AbstractAnimationSampler
- sampleImpl: proc(s: AnimationSampler[T], p: float): T
- ArrayAnimationSampler*[T] = ref object of AnimationSampler[T]
- proc newArrayAnimationSampler*[T](): ArrayAnimationSampler[T] =
- result.new()
- result.sampleImpl = nil
- discard newArrayAnimationSampler[Foo6]()
- discard newArrayAnimationSampler[AnotherFoo]()
- type
- DefaultIsNone* = pointer | ptr | ref | proc {.nimcall.} | cstring | cstringArray
- OptionKind* {.pure.} = enum None, Some
- OptionA* [T] = object of RootObj
- when T is DefaultIsNone:
- value: T
- else:
- value: T
- kind: OptionKind
- SomeA* [T] = object of OptionA[T]
|