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
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)
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")
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