Fix e_cstruct errors
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 11 Jun 2008 21:41:11 +0000 (14:41 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 11 Jun 2008 21:41:11 +0000 (14:41 -0700)
Cython/Compiler/ExprNodes.py
tests/errors/e_cstruct.pyx

index 779474aff4b368462f972e54fc8a39c8e3001743..d4f0ff249ebd228739191399d425746f2f7004e6 100644 (file)
@@ -2017,7 +2017,8 @@ class AttributeNode(ExprNode):
                 error(self.pos, 
                     "Cannot select attribute of incomplete type '%s'" 
                     % obj_type)
-                obj_type = PyrexTypes.error_type
+                self.type = PyrexTypes.error_type
+                return
             self.entry = entry
             if entry:
                 if obj_type.is_extension_type and entry.name == "__weakref__":
index 05895cb44e99a9873172585cb09b54dd7576a534..238dd216d6d6c3645e5a31d96b59e11038c04e15 100644 (file)
@@ -4,8 +4,8 @@ cdef struct Spam:
        float *p[42]
        obj             # error - py object
 
-cdef struct Spam: # error - redefined
-       int j
+#cdef struct Spam: # error - redefined (not an error in Cython, should it be?)
+#      int j
 
 cdef struct Grail
 
@@ -19,9 +19,8 @@ cdef void eggs(Spam s):
        j.i = j # error - no attributes
        j = gp.x # error - incomplete type
        gp.x = j # error - incomplete type
-       _ERRORS = u"""
+_ERRORS = u"""
 /Local/Projects/D/Pyrex/Source/Tests/Errors2/e_cstruct.pyx:5:36: C struct/union member cannot be a Python object
-/Local/Projects/D/Pyrex/Source/Tests/Errors2/e_cstruct.pyx:7:5: 'Spam' already defined
 /Local/Projects/D/Pyrex/Source/Tests/Errors2/e_cstruct.pyx:15:6: Object of type 'Spam' has no attribute 'k'
 /Local/Projects/D/Pyrex/Source/Tests/Errors2/e_cstruct.pyx:16:6: Cannot assign type 'float *[42]' to 'int'
 /Local/Projects/D/Pyrex/Source/Tests/Errors2/e_cstruct.pyx:17:21: Cannot assign type 'int' to 'float *[42]'