Infer names in the correct way, fixes #1286

This commit is contained in:
Dave Halter
2019-02-25 21:48:57 +01:00
parent 2dd2d06bca
commit eac69aef2b
2 changed files with 10 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ from jedi.evaluate.pep0484 import _evaluate_for_annotation
from jedi.evaluate.context import ClassContext, FunctionContext
from jedi.evaluate.context import iterable
from jedi.evaluate.context import TreeInstance, CompiledInstance
from jedi.evaluate.filters import TreeNameDefinition, ParamName
from jedi.evaluate.finder import NameFinder
from jedi.evaluate.helpers import is_string, is_literal, is_number, is_compiled
from jedi.evaluate.compiled.access import COMPARISON_OPERATORS
@@ -526,8 +527,11 @@ def tree_name_to_contexts(evaluator, context, tree_name):
# which means the function itself.
filters = [next(filters)]
return finder.find(filters, attribute_lookup=False)
elif node.type == 'param':
raise NotImplementedError
elif node.type not in ('import_from', 'import_name'):
raise ValueError("Should not happen. type: %s", node.type)
context = evaluator.create_context(context, tree_name)
return eval_atom(context, tree_name)
typ = node.type
if typ == 'for_stmt':

View File

@@ -96,3 +96,8 @@ def test_names_twice(environment):
defs = names(source=source, environment=environment)
assert defs[0].defined_names() == []
def test_simple_name(environment):
defs = names('foo', references=True, environment=environment)
assert not defs[0]._name.infer()