diff options
Diffstat (limited to 'tests/ccg/tmissingbracket.nim')
-rw-r--r-- | tests/ccg/tmissingbracket.nim | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/ccg/tmissingbracket.nim b/tests/ccg/tmissingbracket.nim new file mode 100644 index 000000000..ba681ebda --- /dev/null +++ b/tests/ccg/tmissingbracket.nim @@ -0,0 +1,52 @@ +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 + |