if isinstance(node, Nodes.CFuncDefNode):
if u'inline' in node.modifiers and self.scope_type == 'pxd':
node.inline_in_pxd = True
- if node.visibility != 'private':
+ if node.c_visibility != 'private':
err = self.ERR_NOGO_WITH_INLINE % node.visibility
elif node.api:
err = self.ERR_NOGO_WITH_INLINE % 'api'
if not lenv.lookup_here(var): # don't redeclare args
type = type_node.analyse_as_type(lenv)
if type:
- lenv.declare_var(var, type, type_node.pos)
+ lenv.declare_var(name = var, type = type, pos = type_node.pos)
else:
error(type_node.pos, "Not a type")
node.body.analyse_declarations(lenv)
def visit_CNameDeclaratorNode(self, node):
if node.name in self.seen_vars_stack[-1]:
entry = self.env_stack[-1].lookup(node.name)
- if (entry is None or entry.visibility != 'extern'
+ if (entry is None or entry.c_visibility != 'extern'
and not entry.scope.is_c_class_scope):
warning(node.pos, "cdef variable '%s' declared after it is used" % node.name, 2)
self.visitchildren(node)
template = self.basic_property
elif entry.visibility == 'readonly':
template = self.basic_property_ro
+ else:
+ error(entry.pos,
+ "python methods may not have '%s' Python visibility" %
+ entry.visibility)
property = template.substitute({
u"ATTR": ExprNodes.AttributeNode(pos=entry.pos,
obj=ExprNodes.NameNode(pos=entry.pos, name="self"),
PyrexTypes.c_void_ptr_type,
'__pyx_generator_body_t')
klass.declare_var(pos=pos, name='body', cname='body',
- type=body_type, is_cdef=True)
+ visibility='private', type=body_type, is_cdef=True)
klass.declare_var(pos=pos, name='is_running', cname='is_running', type=PyrexTypes.c_int_type,
is_cdef=True)
klass.declare_var(pos=pos, name='resume_label', cname='resume_label', type=PyrexTypes.c_int_type,
type=PyrexTypes.py_object_type, is_cdef=True)
import TypeSlots
- e = klass.declare_pyfunction('send', pos)
+ e = klass.declare_pyfunction(name='send', pos=pos)
e.func_cname = '__Pyx_Generator_Send'
e.signature = TypeSlots.binaryfunc
- e = klass.declare_pyfunction('close', pos)
+ e = klass.declare_pyfunction(name='close', pos=pos)
e.func_cname = '__Pyx_Generator_Close'
e.signature = TypeSlots.unaryfunc
- e = klass.declare_pyfunction('throw', pos)
+ e = klass.declare_pyfunction(name='throw', pos=pos)
e.func_cname = '__Pyx_Generator_Throw'
e.signature = TypeSlots.pyfunction_signature
- e = klass.declare_var('__iter__', PyrexTypes.py_object_type, pos, visibility='public')
+ e = klass.declare_var(
+ name='__iter__', type=PyrexTypes.py_object_type,
+ c_visibility='public', pos=pos)
e.func_cname = 'PyObject_SelfIter'
- e = klass.declare_var('__next__', PyrexTypes.py_object_type, pos, visibility='public')
+ e = klass.declare_var(
+ name='__next__', type=PyrexTypes.py_object_type,
+ c_visibility='public', pos=pos)
e.func_cname = '__Pyx_Generator_Next'
self.generator_class = entry.type