mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 00:24:16 +00:00
fixes #3055
This commit is contained in:
@@ -205,7 +205,7 @@ proc instantiateProcType(c: PContext, pt: TIdTable,
|
||||
# The solution would be to move this logic into semtypinst, but
|
||||
# at this point semtypinst have to become part of sem, because it
|
||||
# will need to use openScope, addDecl, etc.
|
||||
addDecl(c, prc)
|
||||
#addDecl(c, prc)
|
||||
|
||||
pushInfoContext(info)
|
||||
var cl = initTypeVars(c, pt, info, nil)
|
||||
|
||||
28
tests/generics/tforward_generic.nim
Normal file
28
tests/generics/tforward_generic.nim
Normal file
@@ -0,0 +1,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
|
||||
Reference in New Issue
Block a user