summary refs log tree commit diff stats
path: root/tests/generics/tforward_generic.nim
blob: 169279cb3d56a9da761b646c04f4fb5389bc1085 (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'''
"""

# 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)

when false:
  # This still doesn't work...
  # 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