summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorClay Sweetser <clay.sweetser@gmail.com>2014-08-08 17:22:50 -0400
committerClay Sweetser <clay.sweetser@gmail.com>2014-08-08 17:22:50 -0400
commit7a09b3b57b6e715e4bca492904d26341d2f91ce9 (patch)
tree18b942058ddc4716f99292b4f8fbecb08c2d6ae6
parent7c3a28ae8b258415918fa9c852cbcb7d9fbde2b7 (diff)
downloadNim-7a09b3b57b6e715e4bca492904d26341d2f91ce9.tar.gz
Fix #1424 some more
-rw-r--r--compiler/semexprs.nim6
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)