combine PR#16009 and PR#16012 (#16024)
* fix #15623 * add testcase for #15623 * add testcase * combine #16009 * support casting nil to NilableTypes in VM
This commit is contained in:
parent
0869d2a477
commit
e6e1e9574d
3 changed files with 50 additions and 1 deletions
|
|
@ -29,3 +29,47 @@ reject: discard cast[enum](0)
|
|||
proc a = echo "hi"
|
||||
|
||||
reject: discard cast[ptr](a)
|
||||
|
||||
# bug #15623
|
||||
block:
|
||||
if false:
|
||||
echo cast[ptr int](nil)[]
|
||||
|
||||
block:
|
||||
if false:
|
||||
var x: ref int = nil
|
||||
echo cast[ptr int](x)[]
|
||||
|
||||
block:
|
||||
doAssert cast[int](cast[ptr int](nil)) == 0
|
||||
|
||||
block:
|
||||
var x: ref int = nil
|
||||
doAssert cast[int](cast[ptr int](x)) == 0
|
||||
|
||||
block:
|
||||
block:
|
||||
static:
|
||||
let a = cast[pointer](nil)
|
||||
doAssert a.repr == "nil"
|
||||
|
||||
block:
|
||||
static:
|
||||
doAssert cast[ptr int](nil).repr == "nil"
|
||||
|
||||
block:
|
||||
const str = cast[ptr int](nil)
|
||||
static:
|
||||
doAssert str.repr == "nil"
|
||||
|
||||
block:
|
||||
static:
|
||||
doAssert cast[ptr int](nil).repr == "nil"
|
||||
|
||||
block:
|
||||
static:
|
||||
doAssert cast[RootRef](nil).repr == "nil"
|
||||
|
||||
block:
|
||||
static:
|
||||
doAssert cast[cstring](nil).repr == "nil"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue