1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # bug #1915
- import macros
- # Test that parameters are properly gensym'ed finally:
- template genNodeKind(kind, name: untyped) =
- proc name*(children: varargs[NimNode]): NimNode {.compiletime.}=
- result = newNimNode(kind)
- for c in children:
- result.add(c)
- genNodeKind(nnkNone, None)
- # Test that generics in templates still work (regression to fix #1915)
- # bug #2004
- type Something = object
- proc testA(x: Something) = discard
- template def(name: untyped) =
- proc testB[T](reallyUniqueName: T) =
- `test name`(reallyUniqueName)
- def A
- var x: Something
- testB(x)
- # bug #2215
- # Test that templates in generics still work (regression to fix the
- # regression...)
- template forStatic(index, slice, predicate: untyped) =
- const a = slice.a
- const b = slice.b
- when a <= b:
- template iteration(i: int) =
- block:
- const index = i
- predicate
- template iterateStartingFrom(i: int) =
- when i <= b:
- iteration i
- iterateStartingFrom i + 1
- iterateStartingFrom a
- proc concreteProc(x: int) =
- forStatic i, 0..3:
- echo i
- proc genericProc(x: any) =
- forStatic i, 0..3:
- echo i
- concreteProc(7) # This works
- genericProc(7) # This doesn't compile
|