Get rid of this sort of error: "Cannot assign type 'gsl_complex' to 'gsl_complex'"
authorWilliam Stein <wstein@gmail.com>
Thu, 11 Jan 2007 06:25:21 +0000 (22:25 -0800)
committerWilliam Stein <wstein@gmail.com>
Thu, 11 Jan 2007 06:25:21 +0000 (22:25 -0800)
The solution in this patch is somewhat hackish, but should be OK.

Cython/Compiler/ExprNodes.py
Cython/Compiler/PyrexTypes.py

index 1569f5e0356a6f9eac10d21b22fd716296d21793..1ef2642fa6b59a86b64359e41721f00de6986941 100644 (file)
@@ -467,7 +467,10 @@ class ExprNode(Node):
         elif src.type.is_pyobject:
             src = CoerceFromPyTypeNode(dst_type, src, env)
         else: # neither src nor dst are py types
-            if not dst_type.assignable_from(src_type):
+            # Added the string comparison, since for c types that
+            # is enough, but SageX gets confused when the types are
+            # in different files. 
+            if not (str(src.type) == str(dst_type) or dst_type.assignable_from(src_type)):
                 error(self.pos, "Cannot assign type '%s' to '%s'" %
                     (src.type, dst_type))
         return src
index 34a63ce36a71a0208f18342b38ffaad40ca59dfe..c343e5f24d7ad2f666ecf3ecb44a309a869d26d3 100644 (file)
@@ -90,7 +90,7 @@ class PyrexType:
         return self.same_as_resolved_type(other_type.resolve(), **kwds)
     
     def same_as_resolved_type(self, other_type):
-        return self is other_type or other_type is error_type
+        return self == other_type or other_type is error_type
     
     def subtype_of(self, other_type):
         return self.subtype_of_resolved_type(other_type.resolve())