Use Context.create_name instead of weird playing with params everywhere

This commit is contained in:
Dave Halter
2019-09-02 09:38:54 +02:00
parent b4dc95553f
commit a0cadd9375
4 changed files with 15 additions and 13 deletions

View File

@@ -302,8 +302,8 @@ class Script(object):
# Without a name we really just want to jump to the result e.g.
# executed by `foo()`, if we the cursor is after `)`.
return self.goto_definitions(only_stubs=only_stubs, prefer_stubs=prefer_stubs)
context = self._get_module_context().create_context(tree_name)
names = list(self._inference_state.goto(context, tree_name))
name = self._get_module_context().create_name(tree_name)
names = list(name.goto())
if follow_imports:
names = filter_follow_imports(names)

View File

@@ -305,6 +305,7 @@ class InferenceState(object):
if is_simple_name:
return [TreeNameDefinition(context, name)]
elif type_ == 'param':
assert False
funcdef = tree.search_ancestor(name, 'funcdef', 'lambdef')
func = context.get_root_context().create_value(funcdef)
return [SimpleParamName(func, name)]

View File

@@ -6,6 +6,7 @@ from parso.python.tree import Name
from jedi.inference.filters import ParserTreeFilter, MergedFilter, \
GlobalNameFilter
from jedi.inference.names import SimpleParamName, TreeNameDefinition
from jedi.inference.base_value import NO_VALUES, ValueSet
from jedi.parser_utils import get_parent_scope
from jedi import debug
@@ -271,6 +272,16 @@ class TreeContextMixin(object):
scope_node = parent_scope(scope_node)
return from_scope_node(scope_node, is_nested=True)
def create_name(self, tree_name):
definition = tree_name.get_definition()
if definition and definition.type == 'param' and definition.name == tree_name:
funcdef = search_ancestor(definition, 'funcdef', 'lambdef')
func = self.create_value(funcdef)
return SimpleParamName(func, tree_name)
else:
context = self.create_context(tree_name)
return TreeNameDefinition(context, tree_name)
class FunctionContext(TreeContextMixin, ValueContext):
def get_filters(self, until_position=None, origin_scope=None):

View File

@@ -1,7 +1,4 @@
from parso.python.tree import search_ancestor
from jedi.inference import imports
from jedi.inference.names import TreeNameDefinition, SimpleParamName
def _resolve_names(definition_names, avoid_names=()):
@@ -29,14 +26,7 @@ def _dictionarize(names):
def _find_names(module_context, tree_name):
definition = tree_name.get_definition()
if definition and definition.type == 'param' and definition.name == tree_name:
funcdef = search_ancestor(definition, 'funcdef', 'lambdef')
func = module_context.create_value(funcdef)
name = SimpleParamName(func, tree_name)
else:
context = module_context.create_context(tree_name)
name = TreeNameDefinition(context, tree_name)
name = module_context.create_name(tree_name)
found_names = set(name.goto())
found_names.add(name)
return _dictionarize(_resolve_names(found_names))