mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
60 lines
976 B
Nim
60 lines
976 B
Nim
|
|
# 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)
|
|
|