summary refs log tree commit diff stats
path: root/tests/ccg/tmissingbracket.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ccg/tmissingbracket.nim')
-rw-r--r--tests/ccg/tmissingbracket.nim52
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
+