Files
Nim/tests/ccgbugs/tmissingbracket.nim
2018-12-11 21:23:22 +01:00

54 lines
1001 B
Nim

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 RootObj
t:int
SubObject* = object of TestObj
method test*(t:var TestObj) {.base.} =
echo "test called"
method test*(t:var SubObject) =
echo "Subobject test called"
t.t= 5
var a: SubObject
a.test()
echo a.t