summary refs log tree commit diff stats
path: root/tests/generics/tforward_generic.nim
blob: f43e7455fcb7bedcceff916ed2100722c7016d47 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
discard """
  output: '''b()
720 120.0
720 120.0'''
"""

# bug #3055
proc b(t: int | string)
proc a(t: int) = b(t)
proc b(t: int | string) = echo "b()"
a(1)

# test recursive generics still work:
proc fac[T](x: T): T =
  if x == 0: return 1
  else: return fac(x-1)*x

echo fac(6), " ", fac(5.0)

# test recursive generic with forwarding:
proc fac2[T](x: T): T

echo fac2(6), " ", fac2(5.0)

proc fac2[T](x: T): T =
  if x == 0: return 1
  else: return fac2(x-1)*x