lift generic parameters from concrete composite type classes

This commit is contained in:
Zahary Karadjov
2013-12-28 12:50:45 +02:00
parent a27eb51535
commit a59f13b00d
5 changed files with 40 additions and 25 deletions

View File

@@ -13,18 +13,23 @@ type
TUserClass = int|string
# TBaz = TBar[TUserClass]
TBaz = TBar[TUserClass]
var
vfoo: TFoo[int, string]
vbar: TFoo[string, string]
vbaz: TFoo[int, int]
vnotbaz: TFoo[TObject, TObject]
proc foo(x: TFoo) = echo "foo"
proc bar(x: TBar) = echo "bar"
# proc baz(x: TBaz) = echo "baz"
proc baz(x: TBaz) = echo "baz"
accept(foo(vfoo))
accept(bar(vbar))
# baz vbar
reject(bar(vfoo))
accept foo(vfoo)
accept bar(vbar)
accept baz(vbar)
accept baz(vbaz)
reject baz(vnotbaz)
reject bar(vfoo)