summary refs log tree commit diff stats
path: root/tests/generics/tgenerictmpl2.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/generics/tgenerictmpl2.nim')
-rw-r--r--tests/generics/tgenerictmpl2.nim31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/generics/tgenerictmpl2.nim b/tests/generics/tgenerictmpl2.nim
new file mode 100644
index 000000000..2efb000b3
--- /dev/null
+++ b/tests/generics/tgenerictmpl2.nim
@@ -0,0 +1,31 @@
+discard """
+  output: '''1
+1
+1
+1
+999
+999
+999
+2'''
+"""
+
+# test if we can pass explicit generic arguments to generic templates
+# based on bug report #3496
+
+proc     tproc[T](t: T = 999) = echo t
+template ttmpl[T](t: T = 999) = echo t
+
+tproc(1)
+tproc[int](1)
+ttmpl(1)
+ttmpl[int](1) #<- crash case #1
+
+tproc[int]()
+let _ = tproc[int]
+ttmpl[int]()  #<- crash case #2
+ttmpl[int]    #<- crash case #3
+
+# but still allow normal use of [] on non-generic templates
+
+template tarr: untyped = [1, 2, 3, 4]
+echo tarr[1]