forked from VimPlug/jedi
Fix an issue with type vars that might have been a problem for other things as well
This commit is contained in:
@@ -266,7 +266,11 @@ def _create(evaluator, access_handle, parent_context, *args):
|
|||||||
if name is not None:
|
if name is not None:
|
||||||
evaluator.module_cache.add(string_names, ContextSet([module_context]))
|
evaluator.module_cache.add(string_names, ContextSet([module_context]))
|
||||||
else:
|
else:
|
||||||
assert parent_context.tree_node.get_root_node() == module_node
|
if parent_context.tree_node.get_root_node() != module_node:
|
||||||
|
# This happens e.g. when __module__ is wrong, or when using
|
||||||
|
# TypeVar('foo'), where Jedi uses 'foo' as the name and
|
||||||
|
# Python's TypeVar('foo').__module__ will be typing.
|
||||||
|
return ContextSet({compiled_object})
|
||||||
module_context = parent_context.get_root_context()
|
module_context = parent_context.get_root_context()
|
||||||
|
|
||||||
tree_contexts = ContextSet({
|
tree_contexts = ContextSet({
|
||||||
|
|||||||
@@ -473,3 +473,12 @@ def test_partial_signatures(code, expected, index):
|
|||||||
assert sig.name == 'partial'
|
assert sig.name == 'partial'
|
||||||
assert [p.name for p in sig.params] == expected
|
assert [p.name for p in sig.params] == expected
|
||||||
assert index == sig.index
|
assert index == sig.index
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(sys.version_info[0] == 2, reason="Ignore Python 2, because EOL")
|
||||||
|
def test_type_var():
|
||||||
|
"""This was an issue before, see Github #1369"""
|
||||||
|
import typing
|
||||||
|
x = typing.TypeVar('myvar')
|
||||||
|
def_, = jedi.Interpreter('x', [locals()]).goto_definitions()
|
||||||
|
assert def_.name == 'TypeVar'
|
||||||
|
|||||||
Reference in New Issue
Block a user