fixes #1181
This commit is contained in:
parent
06a4ab54aa
commit
37cc9b2226
5 changed files with 46 additions and 33 deletions
|
|
@ -1,52 +0,0 @@
|
|||
discard """
|
||||
output: '''Subobject test called
|
||||
5'''
|
||||
"""
|
||||
|
||||
type
|
||||
TClassOfTCustomObject {.pure, inheritable.} = object
|
||||
base* : ptr TClassOfTCustomObject
|
||||
className* : string
|
||||
TClassOfTobj = object of TClassOfTCustomObject
|
||||
nil
|
||||
TCustomObject = ref object {.inheritable.}
|
||||
class* : ptr TClassOfTCustomObject
|
||||
TObj = ref object of TCustomObject
|
||||
data: int
|
||||
|
||||
var ClassOfTObj: TClassOfTObj
|
||||
|
||||
proc initClassOfTObj() =
|
||||
ClassOfTObj.base = nil
|
||||
ClassOfTObj.className = "TObj"
|
||||
|
||||
initClassOfTObj()
|
||||
|
||||
proc initialize*(self: TObj) =
|
||||
self.class = addr ClassOfTObj
|
||||
# this generates wrong C code: && instead of &
|
||||
|
||||
proc newInstance(T: typedesc): T =
|
||||
mixin initialize
|
||||
new(result)
|
||||
initialize(result)
|
||||
|
||||
var o = TObj.newInstance()
|
||||
|
||||
type
|
||||
TestObj* = object of TObject
|
||||
t:int
|
||||
SubObject* = object of TestObj
|
||||
|
||||
method test*(t:var TestObj) =
|
||||
echo "test called"
|
||||
|
||||
method test*(t:var SubObject) =
|
||||
echo "Subobject test called"
|
||||
t.t= 5
|
||||
|
||||
var a: SubObject
|
||||
|
||||
a.test()
|
||||
echo a.t
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue