summary refs log tree commit diff stats
path: root/tests/generics
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-09-13 23:26:44 +0200
committerAraq <rumpf_a@web.de>2015-09-13 23:26:44 +0200
commit14354b436f2cef462e50723b7624275212412cd1 (patch)
treed6c5dca49757e0ffa91921443dae58d6ae2c6b47 /tests/generics
parente01e0a4b4056ac4a42797bab9f10822ae8996607 (diff)
downloadNim-14354b436f2cef462e50723b7624275212412cd1.tar.gz
fixes #2599
Diffstat (limited to 'tests/generics')
-rw-r--r--tests/generics/mbind_bracket.nim17
-rw-r--r--tests/generics/tbind_bracket.nim20
-rw-r--r--tests/generics/tthread_generic.nim2
3 files changed, 38 insertions, 1 deletions
diff --git a/tests/generics/mbind_bracket.nim b/tests/generics/mbind_bracket.nim
new file mode 100644
index 000000000..4bf18b471
--- /dev/null
+++ b/tests/generics/mbind_bracket.nim
@@ -0,0 +1,17 @@
+
+import tables
+
+type
+  UUIDObject* = ref object
+    uuid: string
+
+  Registry*[T] = ref object
+    objects: Table[string, T]
+
+proc newRegistry*[T](): Registry[T] =
+  result = Registry[T]()
+  result.objects = initTable[string, T](128)
+
+proc register*[T](self: Registry[T], obj: T) =
+  self.objects[obj.uuid] = obj
+
diff --git a/tests/generics/tbind_bracket.nim b/tests/generics/tbind_bracket.nim
new file mode 100644
index 000000000..d0c5e2c6b
--- /dev/null
+++ b/tests/generics/tbind_bracket.nim
@@ -0,0 +1,20 @@
+discard """
+  output: "317"
+"""
+
+# bug #2599
+
+import mbind_bracket
+
+# also test that `[]` can be passed now as a first class construct:
+
+template takeBracket(x, a, i: untyped) =
+  echo x(a, i)
+
+var a: array[10, int]
+a[8] = 317
+
+takeBracket(`[]`, a, 8)
+
+let reg = newRegistry[UUIDObject]()
+reg.register(UUIDObject())
diff --git a/tests/generics/tthread_generic.nim b/tests/generics/tthread_generic.nim
index d34b24628..e8946caf6 100644
--- a/tests/generics/tthread_generic.nim
+++ b/tests/generics/tthread_generic.nim
@@ -3,7 +3,7 @@ discard """
 """
 
 type
-  TThreadFuncArgs[T] = object of TObject
+  TThreadFuncArgs[T] = object of RootObj
     a: proc(): T {.thread.}
     b: proc(val: T) {.thread.}