This commit is contained in:
Araq
2013-01-08 17:23:52 +01:00
parent f280ed1560
commit 20a5e37169
2 changed files with 29 additions and 1 deletions

View File

@@ -1648,7 +1648,7 @@ proc downConv(p: BProc, n: PNode, d: var TLoc) =
initLocExpr(p, n.sons[0], a)
var r = rdLoc(a)
if skipTypes(n.sons[0].typ, abstractInst).kind in {tyRef, tyPtr, tyVar} and
n.sons[0].kind notin {nkHiddenAddr, nkAddr}:
n.sons[0].kind notin {nkHiddenAddr, nkAddr, nkObjDownConv}:
app(r, "->Sup")
for i in countup(2, abs(inheritanceDiff(dest, src))): app(r, ".Sup")
r = con("&", r)

View File

@@ -0,0 +1,28 @@
type
TFoo = ref object of TObject
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)