Commit 17111fa7 authored by Robert Bradshaw's avatar Robert Bradshaw

Get rid of unused __get__/__set__ warnings for cimported classes.

parent e0814f76
...@@ -899,13 +899,11 @@ class CVarDefNode(StatNode): ...@@ -899,13 +899,11 @@ class CVarDefNode(StatNode):
# declarators [CDeclaratorNode] # declarators [CDeclaratorNode]
# in_pxd boolean # in_pxd boolean
# api boolean # api boolean
# properties [entry]
# decorators [cython.locals(...)] or None # decorators [cython.locals(...)] or None
# directive_locals { string : NameNode } locals defined by cython.locals(...) # directive_locals { string : NameNode } locals defined by cython.locals(...)
child_attrs = ["base_type", "declarators"] child_attrs = ["base_type", "declarators"]
properties = ()
decorators = None decorators = None
directive_locals = {} directive_locals = {}
...@@ -921,7 +919,6 @@ class CVarDefNode(StatNode): ...@@ -921,7 +919,6 @@ class CVarDefNode(StatNode):
# a property; made in AnalyseDeclarationsTransform). # a property; made in AnalyseDeclarationsTransform).
if (dest_scope.is_c_class_scope if (dest_scope.is_c_class_scope
and self.visibility in ('public', 'readonly')): and self.visibility in ('public', 'readonly')):
self.properties = []
need_property = True need_property = True
else: else:
need_property = False need_property = False
...@@ -955,8 +952,7 @@ class CVarDefNode(StatNode): ...@@ -955,8 +952,7 @@ class CVarDefNode(StatNode):
"Only 'extern' C variable declaration allowed in .pxd file") "Only 'extern' C variable declaration allowed in .pxd file")
entry = dest_scope.declare_var(name, type, declarator.pos, entry = dest_scope.declare_var(name, type, declarator.pos,
cname = cname, visibility = visibility, is_cdef = 1) cname = cname, visibility = visibility, is_cdef = 1)
if need_property: entry.needs_property = need_property
self.properties.append(entry)
class CStructOrUnionDefNode(StatNode): class CStructOrUnionDefNode(StatNode):
......
...@@ -1018,6 +1018,20 @@ property NAME: ...@@ -1018,6 +1018,20 @@ property NAME:
self.visitchildren(node) self.visitchildren(node)
self.env_stack.pop() self.env_stack.pop()
return node return node
def visit_CClassDefNode(self, node):
node = self.visit_ClassDefNode(node)
if node.scope and node.scope.implemented:
stats = []
for entry in node.scope.var_entries:
if entry.needs_property:
property = self.create_Property(entry)
property.analyse_declarations(node.scope)
self.visit(property)
stats.append(property)
if stats:
node.body.stats += stats
return node
def visit_FuncDefNode(self, node): def visit_FuncDefNode(self, node):
self.seen_vars_stack.append(set()) self.seen_vars_stack.append(set())
...@@ -1093,20 +1107,9 @@ property NAME: ...@@ -1093,20 +1107,9 @@ property NAME:
return node return node
def visit_CVarDefNode(self, node): def visit_CVarDefNode(self, node):
# to ensure all CNameDeclaratorNodes are visited. # to ensure all CNameDeclaratorNodes are visited.
self.visitchildren(node) self.visitchildren(node)
return None
if node.properties:
stats = []
for entry in node.properties:
property = self.create_Property(entry)
property.analyse_declarations(node.dest_scope)
self.visit(property)
stats.append(property)
return StatListNode(pos=node.pos, stats=stats)
else:
return None
def create_Property(self, entry): def create_Property(self, entry):
if entry.visibility == 'public': if entry.visibility == 'public':
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment