From 4e596060b99a4abde89bc58a3bba813d2dff504e Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 16 May 2014 13:00:13 +0200 Subject: [PATCH] test for is_nested failure --- jedi/evaluate/analysis.py | 2 +- jedi/evaluate/compiled/__init__.py | 6 +++++- jedi/parser/representation.py | 2 +- test/test_parser/test_representation.py | 7 +++++++ 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 test/test_parser/test_representation.py diff --git a/jedi/evaluate/analysis.py b/jedi/evaluate/analysis.py index de1e93a1..b43a92b3 100644 --- a/jedi/evaluate/analysis.py +++ b/jedi/evaluate/analysis.py @@ -137,5 +137,5 @@ def get_module_statements(module): for scope in module.walk(): imports |= set(scope.imports) stmts |= add_stmts(scope.statements) - stmts |= add_stmts(scope.returns) + stmts |= add_stmts(r for r in scope.returns if r is not None) return stmts, imports diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index ae7c050e..4b9c158a 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -188,7 +188,11 @@ class CompiledName(FakeName): self.start_pos = 0, 0 # an illegal start_pos, to make sorting easy. def __repr__(self): - return '<%s: (%s).%s>' % (type(self).__name__, self._obj.name, self.name) + try: + name = self._obj.name # __name__ is not defined all the time + except AttributeError: + name = None + return '<%s: (%s).%s>' % (type(self).__name__, name, self.name) @property @underscore_memoization diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index 64e8f959..0d551ab5 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -795,7 +795,7 @@ class Import(Simple): import foo.bar """ - return not self.alias and not self.from_ns \ + return not self.alias and not self.from_ns and self.namespace is not None \ and len(self.namespace.names) > 1 diff --git a/test/test_parser/test_representation.py b/test/test_parser/test_representation.py new file mode 100644 index 00000000..e2151a34 --- /dev/null +++ b/test/test_parser/test_representation.py @@ -0,0 +1,7 @@ +from jedi.parser import Parser + + +def test_import_is_nested(): + imp = Parser('import ').module.imports[0] + # should not raise an error, even if it's not a complete import + assert not imp.is_nested()