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 ClassContext, FunctionContext
from jedi.evaluate.context import iterable from jedi.evaluate.context import iterable
from jedi.evaluate.context import TreeInstance, CompiledInstance from jedi.evaluate.context import TreeInstance, CompiledInstance
from jedi.evaluate.filters import TreeNameDefinition, ParamName
from jedi.evaluate.finder import NameFinder from jedi.evaluate.finder import NameFinder
from jedi.evaluate.helpers import is_string, is_literal, is_number, is_compiled from jedi.evaluate.helpers import is_string, is_literal, is_number, is_compiled
from jedi.evaluate.compiled.access import COMPARISON_OPERATORS 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. # which means the function itself.
filters = [next(filters)] filters = [next(filters)]
return finder.find(filters, attribute_lookup=False) return finder.find(filters, attribute_lookup=False)
elif node.type == 'param':
raise NotImplementedError
elif node.type not in ('import_from', 'import_name'): 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 typ = node.type
if typ == 'for_stmt': if typ == 'for_stmt':

View File

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