summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/generics/t8694.nim31
-rw-r--r--tests/generics/t9130.nim33
2 files changed, 64 insertions, 0 deletions
diff --git a/tests/generics/t8694.nim b/tests/generics/t8694.nim
new file mode 100644
index 000000000..da6c6dbed
--- /dev/null
+++ b/tests/generics/t8694.nim
@@ -0,0 +1,31 @@
+discard """
+  output: '''
+true
+true
+true
+'''
+"""
+
+when true:
+  # Error: undeclared identifier: '|'
+  proc bar[T](t:T): bool =
+    runnableExamples:
+      type Foo = int | float
+    true
+  echo bar(0)
+
+when true:
+  # ok
+  proc bar(t:int): bool =
+    runnableExamples:
+      type Foo = int | float
+    true
+  echo bar(0)
+
+when true:
+  # Error: undeclared identifier: '|'
+  proc bar(t:typedesc): bool =
+    runnableExamples:
+      type Foo = int | float
+    true
+  echo bar(int)
diff --git a/tests/generics/t9130.nim b/tests/generics/t9130.nim
new file mode 100644
index 000000000..a993bc6b2
--- /dev/null
+++ b/tests/generics/t9130.nim
@@ -0,0 +1,33 @@
+when true:
+  # stack overflow
+  template baz1*(iter: untyped): untyped =
+    runnableExamples:
+      import sugar
+      proc fun(a: proc(x:int): int) = discard
+      baz1(fun(x:int => x))
+    discard
+
+  proc foo1[A](ts: A) =
+    baz1(ts)
+
+when true:
+  # ok
+  template baz2*(iter: untyped): untyped =
+    runnableExamples:
+      import sugar
+      proc fun(a: proc(x:int): int) = discard
+      baz2(fun(x:int => x))
+    discard
+
+  proc foo2(ts: int) =
+    baz2(ts)
+
+when true:
+  # stack overflow
+  template baz3*(iter: untyped): untyped =
+    runnableExamples:
+      baz3(fun(x:int => x))
+    discard
+
+  proc foo3[A](ts: A) =
+    baz3(ts)