diff options
author | Miran <narimiran@users.noreply.github.com> | 2018-10-12 17:02:46 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-10-12 17:02:46 +0200 |
commit | 7f18d7cbc1fc8ad87c389b8d4d873e1d1169f794 (patch) | |
tree | 8c4839495fd6fc10376dc44cc8f9c7e3c625d18f /tests/bind/tbind.nim | |
parent | d2b04a8bc7a78845d25e8b789184ae54e98073ec (diff) | |
download | Nim-7f18d7cbc1fc8ad87c389b8d4d873e1d1169f794.tar.gz |
Merge tests into a larger file (part 1 of ∞) (#9318)
* merge actiontable tests * merge arithm tests * merge array tests * merge assign tests * merge bind tests * merge casestmt tests * merge closure tests * merge cnt seq tests * merge collections tests * merge concept issues tests * merge concept tests * fix failing tests * smaller outputs Use `doAssert` where possible. * fix wrong output * split `tcomputedgoto` * revert merging concepts * fix failing test
Diffstat (limited to 'tests/bind/tbind.nim')
-rw-r--r-- | tests/bind/tbind.nim | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/bind/tbind.nim b/tests/bind/tbind.nim new file mode 100644 index 000000000..6fcf95433 --- /dev/null +++ b/tests/bind/tbind.nim @@ -0,0 +1,69 @@ +discard """ + file: "tbind.nim" + output: +''' +3 +1 +1 +1 +''' +""" + + +block tbind: +# Test the new ``bind`` keyword for templates + + proc p1(x: int8, y: int): int = return x + y + + template tempBind(x, y): untyped = + bind p1 + p1(x, y) + + proc p1(x: int, y: int8): int = return x - y + + # This is tricky: the call to ``p1(1'i8, 2'i8)`` should not fail in line 6, + # because it is not ambiguous there. But it is ambiguous after line 8. + + echo tempBind(1'i8, 2'i8) #OUT 3 + + +import mbind3 +echo genId() #OUT 1 + + +import strtabs +block tbinoverload: + template t() = + block: + bind newStringTable + discard {"Content-Type": "text/html"}.newStringTable() + + discard {:}.newStringTable + #discard {"Content-Type": "text/html"}.newStringTable() + t() + + +block tmixin: + type + TFoo1 = object of RootObj + v: int + TFoo2 = object of TFoo1 + v2: int + + proc test(f: TFoo1) = + echo "1" + + proc Foo[T](f: T) = + mixin test + test(f) + + var + a: TFoo1 + b: TFoo2 + + + proc test(f: TFoo2) = + echo "2" + + Foo(a) + Foo(b) |