From: Stefan Behnel Date: Thu, 7 Aug 2008 17:00:00 +0000 (+0200) Subject: reverted rev 921 (still breaks code) X-Git-Tag: 0.9.8.1~85 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=a012b54192b2f6e8bed42d42715d11e587ee6526;p=cython.git reverted rev 921 (still breaks code) --- diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py index 8290c739..d06324c9 100644 --- a/Cython/Compiler/Nodes.py +++ b/Cython/Compiler/Nodes.py @@ -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") diff --git a/tests/compile/cargdef.pyx b/tests/compile/cargdef.pyx index c5da39bb..c8064d0b 100644 --- a/tests/compile/cargdef.pyx +++ b/tests/compile/cargdef.pyx @@ -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