Files
Nim/tests/misc/tcast.nim
Danil Yarantsev 80952cadaa Reject casts to builtin typeclasses (#14788)
* Closes #14231, closes #14452

* Merge test to tcast.nim
2020-06-24 22:32:01 +02:00

32 lines
640 B
Nim

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)