full_name was buggy when used on import error names

Fixes #873.
This commit is contained in:
Dave Halter
2017-09-14 20:41:25 +02:00
parent 2210b11778
commit ab84030ad2
2 changed files with 17 additions and 3 deletions

View File

@@ -161,9 +161,17 @@ class BaseDefinition(object):
pass
if name.api_type == 'module':
module_context, = name.infer()
for n in reversed(module_context.py__name__().split('.')):
yield n
module_contexts = name.infer()
if module_contexts:
module_context, = module_contexts
for n in reversed(module_context.py__name__().split('.')):
yield n
else:
# We don't really know anything about the path here. This
# module is just an import that would lead in an
# ImportError. So simply return the name.
yield name.string_name
return
else:
yield name.string_name

View File

@@ -96,3 +96,9 @@ def test_os_path():
assert d.full_name == 'os.path.join'
d, = jedi.Script('import os.p').completions()
assert d.full_name == 'os.path'
def test_os_issues():
"""Issue #873"""
c, = jedi.Script('import os\nos.nt''').completions()
assert c.full_name == 'nt'