Get rid of unused __get__/__set__ warnings for cimported classes.
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 6 Oct 2010 09:52:01 +0000 (02:52 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 6 Oct 2010 09:52:01 +0000 (02:52 -0700)
Cython/Compiler/Nodes.py
Cython/Compiler/ParseTreeTransforms.py

index 5864b472d09dfd50e6e9c914ea07d30a668a62f6..2288185c2742b30014d38943a7e7a5b17d3fb90b 100644 (file)
@@ -899,13 +899,11 @@ class CVarDefNode(StatNode):
     #  declarators   [CDeclaratorNode]
     #  in_pxd        boolean
     #  api           boolean
-    #  properties    [entry]
 
     #  decorators    [cython.locals(...)] or None 
     #  directive_locals { string : NameNode } locals defined by cython.locals(...)
 
     child_attrs = ["base_type", "declarators"]
-    properties = ()
     
     decorators = None
     directive_locals = {}
@@ -921,7 +919,6 @@ class CVarDefNode(StatNode):
         # a property; made in AnalyseDeclarationsTransform).
         if (dest_scope.is_c_class_scope
             and self.visibility in ('public', 'readonly')):
-            self.properties = []
             need_property = True
         else:
             need_property = False
@@ -955,8 +952,7 @@ class CVarDefNode(StatNode):
                         "Only 'extern' C variable declaration allowed in .pxd file")
                 entry = dest_scope.declare_var(name, type, declarator.pos,
                             cname = cname, visibility = visibility, is_cdef = 1)
-                if need_property:
-                    self.properties.append(entry)
+                entry.needs_property = need_property
     
 
 class CStructOrUnionDefNode(StatNode):
index fccba1775450fb8fe4d4fa5a9a5b70ebc95f5b40..17bfb3f66ce8fdc7be4354fe69cfcff7a191b0e6 100644 (file)
@@ -1018,6 +1018,20 @@ property NAME:
         self.visitchildren(node)
         self.env_stack.pop()
         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):
         self.seen_vars_stack.append(set())
@@ -1093,20 +1107,9 @@ property NAME:
         return node
 
     def visit_CVarDefNode(self, node):
-
         # to ensure all CNameDeclaratorNodes are visited.
         self.visitchildren(node)
-
-        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
+        return None
             
     def create_Property(self, entry):
         if entry.visibility == 'public':