Fix #1424 some more

This commit is contained in:
Clay Sweetser 2014-08-08 17:22:50 -04:00
commit 7a09b3b57b

View file

@ -185,19 +185,23 @@ proc isCastable(dst, src: PType): bool =
# castableTypeKinds = {tyInt, tyPtr, tyRef, tyCstring, tyString, # castableTypeKinds = {tyInt, tyPtr, tyRef, tyCstring, tyString,
# tySequence, tyPointer, tyNil, tyOpenArray, # tySequence, tyPointer, tyNil, tyOpenArray,
# tyProc, tySet, tyEnum, tyBool, tyChar} # tyProc, tySet, tyEnum, tyBool, tyChar}
if dst.kind == tyOpenArray: if skipTypes(dst, abstractInst-{tyOpenArray}).kind == tyOpenArray:
return false return false
var dstSize, srcSize: BiggestInt var dstSize, srcSize: BiggestInt
dstSize = computeSize(dst) dstSize = computeSize(dst)
srcSize = computeSize(src) srcSize = computeSize(src)
if dstSize < 0: if dstSize < 0:
echo 'a'
result = false result = false
elif srcSize < 0: elif srcSize < 0:
echo 'b'
result = false result = false
elif not typeAllowed(dst, skParam): elif not typeAllowed(dst, skParam):
echo 'c'
result = false result = false
else: else:
echo 'd'
result = (dstSize >= srcSize) or result = (dstSize >= srcSize) or
(skipTypes(dst, abstractInst).kind in IntegralTypes) or (skipTypes(dst, abstractInst).kind in IntegralTypes) or
(skipTypes(src, abstractInst-{tyTypeDesc}).kind in IntegralTypes) (skipTypes(src, abstractInst-{tyTypeDesc}).kind in IntegralTypes)