diff options
author | Araq <rumpf_a@web.de> | 2012-10-19 20:45:26 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2012-10-19 20:45:26 +0200 |
commit | 172b6aacf84a69a269073f2296db2b8a08a5c834 (patch) | |
tree | faba824b81a732ab399ff15c43634e6d2fb3ea45 /tests/ccg | |
parent | b20663ce192ff8012b2d73113a5d506b8526ec62 (diff) | |
download | Nim-172b6aacf84a69a269073f2296db2b8a08a5c834.tar.gz |
fixes #230; fixes #227
Diffstat (limited to 'tests/ccg')
-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 + |