Anonymous avatar Anonymous committed d800736

fixed "BuiltinUnknown object has no attribute get_returned_object" crash

Comments (0)

Files changed (2)

rope/base/builtins.py

     seq = pyname.get_object()
     args = arguments.ObjectArguments([pyname])
     if '__iter__' in seq:
-        iter = seq['__iter__'].get_object().\
-               get_returned_object(args)
+        obj = seq['__iter__'].get_object()
+        if not isinstance(obj, pyobjects.AbstractFunction):
+            return None
+        iter = obj.get_returned_object(args)
         if iter is not None and 'next' in iter:
             holding = iter['next'].get_object().\
                       get_returned_object(args)

ropetest/builtinstest.py

         self.assertEquals(builtins.builtins['int'].get_object(),
                           pymod['l'].get_object().get_type())
 
+    def test_unknown_return_object(self):
+        src = 'import sys\n' \
+              'def foo():\n' \
+              '  res = set(sys.builtin_module_names)\n' \
+              '  if foo: res.add(bar)\n'
+        self.project.prefs['import_dynload_stdmods'] = True
+        self.mod.write(src)
+        self.project.pycore.analyze_module(self.mod)
+
 
 class BuiltinModulesTest(unittest.TestCase):
 
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.