summary refs log tree commit diff stats
path: root/tests/vm/tgenericcompiletimeproc.nim
blob: cb4dbb2d8df8a96132d1c106906547c9c097a78c (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
block: # issue #10753
  proc foo(x: int): int {.compileTime.} = x
  const a = foo(123)
  doAssert foo(123) == a

  proc bar[T](x: T): T {.compileTime.} = x
  const b = bar(123)
  doAssert bar(123) == b
  const c = bar("abc")
  doAssert bar("abc") == c

block: # issue #22021
  proc foo(x: static int): int {.compileTime.} = x + 1
  doAssert foo(123) == 124

block: # issue #19365
  proc f[T](x: static T): T {.compileTime.} = x + x
  doAssert f(123) == 246
  doAssert f(1.0) == 2.0

block:
  # don't fold compile time procs in typeof
  proc fail[T](x: T): T {.compileTime.} =
    doAssert false
    x
  doAssert typeof(fail(123)) is typeof(123)
  proc p(x: int): int = x

  type Foo = typeof(p(fail(123)))