1234567891011121314151617181920212223242526272829303132 |
- discard """
- output: '''
- Hello World
- Hello World'''
- joinable: false
- """
- type MyProc = proc() {.cdecl.}
- type MyProc2 = proc() {.nimcall.}
- type MyProc3 = proc() #{.closure.} is implicit
- proc testProc() = echo "Hello World"
- template reject(x) = doAssert(not compiles(x))
- proc callPointer(p: pointer) =
- # can cast to proc(){.cdecl.}
- let ffunc0 = cast[MyProc](p)
- # can cast to proc(){.nimcall.}
- let ffunc1 = cast[MyProc2](p)
- # cannot cast to proc(){.closure.}
- reject: cast[MyProc3](p)
- ffunc0()
- ffunc1()
- callPointer(cast[pointer](testProc))
- reject: discard cast[enum](0)
- proc a = echo "hi"
- reject: discard cast[ptr](a)
|