Nim/tests/metatype/tsemistatic.nim

31 lines
375 B
Nim

discard """
nimout: "static 10\ndynamic\nstatic 20\n"
output: "s\nd\nd\ns"
"""
type
semistatic[T] =
static[T] or T
template isStatic*(x): bool =
compiles(static(x))
proc foo(x: semistatic[int]) =
when isStatic(x):
static: echo "static ", x
echo "s"
else:
static: echo "dynamic"
echo "d"
foo 10
var
x = 10
y: int
foo x
foo y
foo 20