mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
25 lines
495 B
Nim
25 lines
495 B
Nim
block: # `.noSideEffect`
|
|
func foo(bar: proc(): int): int = bar()
|
|
var count = 0
|
|
proc fn1(): int = 1
|
|
proc fn2(): int = (count.inc; count)
|
|
|
|
template accept(body) =
|
|
doAssert compiles(block:
|
|
body)
|
|
|
|
template reject(body) =
|
|
doAssert not compiles(block:
|
|
body)
|
|
|
|
accept:
|
|
func fun1() = discard foo(fn1)
|
|
reject:
|
|
func fun1() = discard foo(fn2)
|
|
|
|
var foo2: type(foo) = foo
|
|
accept:
|
|
func main() = discard foo(fn1)
|
|
reject:
|
|
func main() = discard foo2(fn1)
|