1. leo2007
  2. rope

Commits

angri  committed d800736

fixed "BuiltinUnknown object has no attribute get_returned_object" crash

  • Participants
  • Parent commits 3ff4992
  • Branches trunk

Comments (0)

Files changed (2)

File rope/base/builtins.py

View file
  • Ignore whitespace
     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)

File ropetest/builtinstest.py

View file
  • Ignore whitespace
         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):