diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index 770c8e62..1440323b 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -106,12 +106,16 @@ class CompiledObject(Base): else: try: new = self.obj[typ.obj] - except (KeyError, IndexError): - pass + except (KeyError, IndexError, TypeError, AttributeError): + pass # just try, we don't care if it fails. else: result.append(CompiledObject(new)) if not result: - pass + try: + for obj in self.obj: + result.append(CompiledObject(obj)) + except TypeError: + pass # self.obj maynot have an __iter__ method. return result @property diff --git a/test/test_api/test_interpreter.py b/test/test_api/test_interpreter.py index d7b7a0fd..291e3d01 100644 --- a/test/test_api/test_interpreter.py +++ b/test/test_api/test_interpreter.py @@ -51,3 +51,15 @@ class TestInterpreterAPI(TestCase): self.check_interpreter_complete('array[0].real', locals(), []) + + # something different, no index given, still just return the right + self.check_interpreter_complete('array[int].real', + locals(), + ['real']) + self.check_interpreter_complete('array[int()].real', + locals(), + ['real']) + # inexistent index + self.check_interpreter_complete('array[2].upper', + locals(), + ['upper'])