diff options
author | Clay Sweetser <clay.sweetser@gmail.com> | 2014-08-08 17:22:50 -0400 |
---|---|---|
committer | Clay Sweetser <clay.sweetser@gmail.com> | 2014-08-08 17:22:50 -0400 |
commit | 7a09b3b57b6e715e4bca492904d26341d2f91ce9 (patch) | |
tree | 18b942058ddc4716f99292b4f8fbecb08c2d6ae6 | |
parent | 7c3a28ae8b258415918fa9c852cbcb7d9fbde2b7 (diff) | |
download | Nim-7a09b3b57b6e715e4bca492904d26341d2f91ce9.tar.gz |
Fix #1424 some more
-rw-r--r-- | compiler/semexprs.nim | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index c8d95886d..14129332c 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -185,19 +185,23 @@ proc isCastable(dst, src: PType): bool = # castableTypeKinds = {tyInt, tyPtr, tyRef, tyCstring, tyString, # tySequence, tyPointer, tyNil, tyOpenArray, # tyProc, tySet, tyEnum, tyBool, tyChar} - if dst.kind == tyOpenArray: + if skipTypes(dst, abstractInst-{tyOpenArray}).kind == tyOpenArray: return false var dstSize, srcSize: BiggestInt dstSize = computeSize(dst) srcSize = computeSize(src) if dstSize < 0: + echo 'a' result = false elif srcSize < 0: + echo 'b' result = false elif not typeAllowed(dst, skParam): + echo 'c' result = false else: + echo 'd' result = (dstSize >= srcSize) or (skipTypes(dst, abstractInst).kind in IntegralTypes) or (skipTypes(src, abstractInst-{tyTypeDesc}).kind in IntegralTypes) |