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

