reverted rev 921 (still breaks code)
authorStefan Behnel <scoder@users.berlios.de>
Thu, 7 Aug 2008 17:00:00 +0000 (19:00 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Thu, 7 Aug 2008 17:00:00 +0000 (19:00 +0200)
Cython/Compiler/Nodes.py
tests/compile/cargdef.pyx

index 8290c739f9bf2755b9d773b10951c241b8fbb596..d06324c9115c6086a2cd8dcf14daf7b0201be973 100644 (file)
@@ -362,12 +362,8 @@ class CNameDeclaratorNode(CDeclaratorNode):
     
     def analyse(self, base_type, env, nonempty = 0):
         if nonempty and self.name == '':
-            # May have mistaken the name for the type. 
-            if base_type.is_ptr or base_type.is_array or base_type.is_buffer:
-                error(self.pos, "Missing argument name")
-            elif base_type.is_void:
-                error(self.pos, "Use spam() rather than spam(void) to declare a function with no arguments.")
-            self.name = base_type.declaration_code("", for_display=1, pyrex=1)
+            # Must have mistaken the name for the type. 
+            self.name = base_type.name
             base_type = py_object_type
         self.type = base_type
         return self, base_type
@@ -426,8 +422,6 @@ class CFuncDeclaratorNode(CDeclaratorNode):
     optional_arg_count = 0
 
     def analyse(self, return_type, env, nonempty = 0):
-        if nonempty:
-            nonempty -= 1
         func_type_args = []
         for arg_node in self.args:
             name_declarator, type = arg_node.analyse(env, nonempty = nonempty)
@@ -1056,8 +1050,7 @@ class CFuncDefNode(FuncDefNode):
         
     def analyse_declarations(self, env):
         base_type = self.base_type.analyse(env)
-        # The 2 here is because we need both function and argument names. 
-        name_declarator, type = self.declarator.analyse(base_type, env, nonempty = 2 * (self.body is not None))
+        name_declarator, type = self.declarator.analyse(base_type, env, self.body is not None)
         if not type.is_cfunction:
             error(self.pos, 
                 "Suite attached to non-function declaration")
index c5da39bbe54e1fbb0d1d97f90442cb2ce559df58..c8064d0bc64adab52250a231532a7b573dcd3a1b 100644 (file)
@@ -1,10 +1,3 @@
 def f(obj, int i, float f, char *s1, char s2[]):
     pass
-    
-cdef g(obj, int i, float f, char *s1, char s2[]):
-    pass
-    
-cdef do_g(object (*func)(object, int, float, char*, char*)):
-    return func(1, 2, 3.14159, "a", "b")
-    
-do_g(&g)
+    
\ No newline at end of file