Fix ticket #98, better error reporting on bad types.
authorRobert Bradshaw <robertwb@math.washington.edu>
Tue, 28 Oct 2008 19:49:48 +0000 (12:49 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Tue, 28 Oct 2008 19:49:48 +0000 (12:49 -0700)
Cython/Compiler/PyrexTypes.py
tests/errors/e_badtypeuse.pyx

index 1e6096a14a27c11b3069b84738b5c778ff8ff30e..70330959b791d365cb3d93b59f44cce11705bed3 100644 (file)
@@ -1313,6 +1313,8 @@ def c_array_type(base_type, size):
     # Construct a C array type.
     if base_type is c_char_type:
         return CCharArrayType(size)
+    elif base_type is error_type:
+        return error_type
     else:
         return CArrayType(base_type, size)
 
@@ -1320,6 +1322,8 @@ def c_ptr_type(base_type):
     # Construct a C pointer type.
     if base_type is c_char_type:
         return c_char_ptr_type
+    elif base_type is error_type:
+        return error_type
     else:
         return CPtrType(base_type)
         
index 3814a1acafa594b0fd742f677a1bcd6b5c8b6b13..ce29c0550935b53483da0d291a2d307addf7a9a7 100644 (file)
@@ -19,6 +19,9 @@ cdef f(Grail g,   # incomplete argument type
        void v,         # incomplete argument type
        int a[]):
                pass
+        
+cdef NoSuchType* ptr
+ptr = None             # This should not produce another error
 
 _ERRORS = u"""
 3:19: Python object cannot be declared extern
@@ -35,4 +38,5 @@ _ERRORS = u"""
 19:1: Use spam() rather than spam(void) to declare a function with no arguments.
 18:7: Argument type 'Grail' is incomplete
 19:1: Invalid use of 'void'
+23:5: 'NoSuchType' is not a type identifier
 """