summary refs log tree commit diff stats
path: root/tests/template/tgenerictemplates.nim
blob: 142505b1adaf44195c53d0b3186b3c90baef067d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
type
  SomeObj = object of RootObj

  Foo[T, U] = object
    x: T
    y: U

template someTemplate[T](): tuple[id: int32, obj: T] =
  var result: tuple[id: int32, obj: T] = (0'i32, T())
  result

let ret = someTemplate[SomeObj]()

# https://github.com/nim-lang/Nim/issues/7829
proc inner*[T](): int =
  discard

template outer*[A](): untyped =
  inner[A]()

template outer*[B](x: int): untyped =
  inner[B]()

var i1 = outer[int]()
var i2 = outer[int](i1)

# https://github.com/nim-lang/Nim/issues/7883
template t1[T: int|int64](s: string): T =
   var t: T
   t

template t1[T: int|int64](x: int, s: string): T =
   var t: T
   t

var i3: int = t1[int]("xx")