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 38 39
|
discard """
matrix: "--skipParentCfg --filenames:legacyRelProj"
"""
const value = "captured"
template fooOld(x: int, body: untyped): untyped =
let value {.inject.} = "injected"
body
template foo(x: int, body: untyped): untyped =
let value {.inject.} = "injected"
{.push experimental: "genericsOpenSym".}
body
{.pop.}
proc old[T](): string =
fooOld(123):
return value
doAssert old[int]() == "captured"
template oldTempl(): string =
block:
var res: string
fooOld(123):
res = value
res
doAssert oldTempl() == "captured"
proc bar[T](): string =
foo(123):
return value
doAssert bar[int]() == "injected"
template barTempl(): string =
block:
var res: string
foo(123):
res = value
res
doAssert barTempl() == "injected"
|