Anonymous avatar Anonymous committed 225b70f

project: updating cache for non-existent folders

Comments (0)

Files changed (3)

rope/base/project.py

         return self._observer
 
     def _updated_resources(self, folder):
+        if not folder.exists():
+            return set(), set()
         files = set()
         folders = set([folder])
         files.update(folder.get_files())

rope/base/pyobjectsdef.py

                 self.scope_visitor.names[node.attr] = pynames.AssignedName(
                     lineno=node.lineno, module=self.scope_visitor.get_module())
             if self.assigned_ast is not None:
-                self.scope_visitor.names[node.attr].assignments.append(
-                    pynames._Assigned(self.assigned_ast))
+                pyname = self.scope_visitor.names[node.attr]
+                if isinstance(pyname, pynames.AssignedName):
+                    pyname.assignments.append(
+                        pynames._Assigned(self.assigned_ast))
 
     def _Tuple(self, node):
         if not isinstance(node.ctx, ast.Store):

ropetest/pycoretest.py

 
 from rope.base import exceptions
 from rope.base.pycore import _TextChangeDetector
-from rope.base.pyobjects import get_base_type
+from rope.base.pyobjects import get_base_type, AbstractFunction
 from ropetest import testutils
 
 
 
     def test_class_attributes_set_in_init(self):
         mod = testutils.create_module(self.project, 'mod')
-        mod.write('class SampleClass(object):\n    def __init__(self):\n        self.var = 20\n')
+        mod.write('class C(object):\n'
+                  '    def __init__(self):\n        self.var = 20\n')
         mod_element = self.pycore.get_module('mod')
-        sample_class = mod_element['SampleClass'].get_object()
+        sample_class = mod_element['C'].get_object()
         var = sample_class['var']
 
+    def test_class_attributes_set_in_init_overwriting_a_defined(self):
+        mod = testutils.create_module(self.project, 'mod')
+        mod.write('class C(object):\n'
+                  '    def __init__(self):\n        self.f = 20\n'
+                  '    @property\n    def f():\n        pass')
+        mod_element = self.pycore.get_module('mod')
+        sample_class = mod_element['C'].get_object()
+        f = sample_class['f'].get_object()
+        self.assertTrue(isinstance(f, AbstractFunction))
+
     def test_classes_inside_other_classes(self):
         mod = testutils.create_module(self.project, 'mod')
         mod.write('class SampleClass(object):\n    class InnerClass(object):\n        pass\n\n')
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.