diff options
-rw-r--r-- | tests/concepts/tconceptinclosure.nim | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/tests/concepts/tconceptinclosure.nim b/tests/concepts/tconceptinclosure.nim index ccd19d201..23c1bf293 100644 --- a/tests/concepts/tconceptinclosure.nim +++ b/tests/concepts/tconceptinclosure.nim @@ -1,11 +1,23 @@ discard """ - output: "10\n20" + output: ''' +10 +20 +int +20 +3 +''' """ +import typetraits + type FonConcept = concept x x.x is int + GenericConcept[T] = concept x + x.x is T + const L = T.name.len + Implementation = object x: int @@ -16,9 +28,15 @@ proc f1(x: FonConcept): Closure = result.f = proc () = echo x.x -proc f2(x: FonConcept): Closure = +proc f2(x: GenericConcept): Closure = + result.f = proc () = + echo x.x + echo GenericConcept.T.name + +proc f3[T](x: GenericConcept[T]): Closure = result.f = proc () = echo x.x + echo x.L let x = Implementation(x: 10) let y = Implementation(x: 20) @@ -27,7 +45,9 @@ let a = x.f1 let b = x.f2 let c = x.f1 let d = y.f2 +let e = y.f3 a.f() d.f() +e.f() |