mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-17 22:41:14 +00:00
lift generic parameters from concrete composite type classes
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user