1
0
forked from VimPlug/jedi

Use SimpleParamName everywhere it's needed

This commit is contained in:
Dave Halter
2019-09-02 09:29:43 +02:00
parent edb17b8e7c
commit b4dc95553f
4 changed files with 16 additions and 11 deletions

View File

@@ -305,8 +305,8 @@ class InferenceState(object):
if is_simple_name: if is_simple_name:
return [TreeNameDefinition(context, name)] return [TreeNameDefinition(context, name)]
elif type_ == 'param': elif type_ == 'param':
func = tree.search_ancestor(name, 'funcdef', 'lambdef') funcdef = tree.search_ancestor(name, 'funcdef', 'lambdef')
func = context.get_root_context().create_value(func) func = context.get_root_context().create_value(funcdef)
return [SimpleParamName(func, name)] return [SimpleParamName(func, name)]
elif type_ in ('import_from', 'import_name'): elif type_ in ('import_from', 'import_name'):
module_names = imports.goto_import(context, name) module_names = imports.goto_import(context, name)

View File

@@ -143,8 +143,6 @@ class ParserTreeFilter(AbstractUsedNamesFilter):
class FunctionExecutionFilter(ParserTreeFilter): class FunctionExecutionFilter(ParserTreeFilter):
param_name = ParamName
def __init__(self, parent_context, function_value, node_context=None, def __init__(self, parent_context, function_value, node_context=None,
until_position=None, origin_scope=None): until_position=None, origin_scope=None):
super(FunctionExecutionFilter, self).__init__( super(FunctionExecutionFilter, self).__init__(
@@ -160,7 +158,7 @@ class FunctionExecutionFilter(ParserTreeFilter):
for name in names: for name in names:
param = search_ancestor(name, 'param') param = search_ancestor(name, 'param')
if param: if param:
yield self.param_name(self._function_value, name, self.parent_context.var_args) yield ParamName(self._function_value, name, self.parent_context.var_args)
else: else:
yield TreeNameDefinition(self.parent_context, name) yield TreeNameDefinition(self.parent_context, name)

View File

@@ -1,5 +1,7 @@
from parso.python.tree import search_ancestor
from jedi.inference import imports from jedi.inference import imports
from jedi.inference.names import TreeNameDefinition from jedi.inference.names import TreeNameDefinition, SimpleParamName
def _resolve_names(definition_names, avoid_names=()): def _resolve_names(definition_names, avoid_names=()):
@@ -27,6 +29,12 @@ def _dictionarize(names):
def _find_names(module_context, tree_name): 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) context = module_context.create_context(tree_name)
name = TreeNameDefinition(context, tree_name) name = TreeNameDefinition(context, tree_name)
found_names = set(name.goto()) found_names = set(name.goto())

View File

@@ -10,7 +10,7 @@ from jedi.inference import flow_analysis
from jedi.inference.signature import TreeSignature from jedi.inference.signature import TreeSignature
from jedi.inference.arguments import AnonymousArguments from jedi.inference.arguments import AnonymousArguments
from jedi.inference.filters import ParserTreeFilter, FunctionExecutionFilter from jedi.inference.filters import ParserTreeFilter, FunctionExecutionFilter
from jedi.inference.names import ValueName, AbstractNameDefinition, ParamName from jedi.inference.names import ValueName, AbstractNameDefinition, SimpleParamName
from jedi.inference.base_value import ContextualizedNode, NO_VALUES, \ from jedi.inference.base_value import ContextualizedNode, NO_VALUES, \
ValueSet, TreeValue, ValueWrapper ValueSet, TreeValue, ValueWrapper
from jedi.inference.lazy_value import LazyKnownValues, LazyKnownValue, \ from jedi.inference.lazy_value import LazyKnownValues, LazyKnownValue, \
@@ -69,8 +69,7 @@ class FunctionMixin(object):
return ValueSet([BoundMethod(instance, self)]) return ValueSet([BoundMethod(instance, self)])
def get_param_names(self): def get_param_names(self):
arguments = AnonymousArguments() return [SimpleParamName(self, param.name)
return [ParamName(self, param.name, arguments)
for param in self.tree_node.get_params()] for param in self.tree_node.get_params()]
@property @property