1
0
forked from VimPlug/jedi

Also return the issues when retruning the executed params

This commit is contained in:
Dave Halter
2018-09-21 00:20:24 +02:00
parent 5fda4a2f8b
commit 43ffcb0802
8 changed files with 74 additions and 47 deletions

View File

@@ -106,7 +106,7 @@ class FunctionContext(use_metaclass(CachedMetaClass, AbstractFunction)):
if overloaded_funcs:
return OverloadedFunctionContext(
function,
ContextSet.from_iterable(create(f) for f in overloaded_funcs)
[create(f) for f in overloaded_funcs]
)
return function
@@ -273,12 +273,16 @@ class FunctionExecutionContext(TreeContext):
origin_scope=origin_scope)
@evaluator_method_cache()
def get_executed_params(self):
return self.var_args.get_executed_params(self)
def get_executed_params_and_issues(self):
return self.var_args.get_executed_params_and_issues(self)
def matches_signature(self):
executed_params, issues = self.get_executed_params_and_issues()
if issues:
return False
matches = all(executed_param.matches_signature()
for executed_param in self.get_executed_params())
for executed_param in executed_params)
if debug.enable_notice:
signature = parser_utils.get_call_signature(self.tree_node)
if matches:

View File

@@ -32,11 +32,11 @@ class AnonymousInstanceArguments(AnonymousArguments):
def __init__(self, instance):
self._instance = instance
def get_executed_params(self, execution_context):
def get_executed_params_and_issues(self, execution_context):
from jedi.evaluate.dynamic import search_params
tree_params = execution_context.tree_node.get_params()
if not tree_params:
return []
return [], []
self_param = InstanceExecutedParam(self._instance, tree_params[0])
if len(tree_params) == 1:
@@ -49,7 +49,7 @@ class AnonymousInstanceArguments(AnonymousArguments):
execution_context.tree_node
))
executed_params[0] = self_param
return executed_params
return [], executed_params
class AbstractInstanceContext(Context):
@@ -273,7 +273,6 @@ class TreeInstance(AbstractInstanceContext):
if not execution.matches_signature():
# First check if the signature even matches, if not we don't
# need to infer anything.
print('no m', bound)
continue
print(bound)
context_set = define_type_vars_for_execution(
@@ -541,11 +540,11 @@ class InstanceArguments(AbstractArguments):
def get_calling_nodes(self):
return self._arguments.get_calling_nodes()
def get_executed_params(self, execution_context):
def get_executed_params_and_issues(self, execution_context):
if isinstance(self._arguments, AnonymousInstanceArguments):
return self._arguments.get_executed_params(execution_context)
return self._arguments.get_executed_params_and_issues(execution_context)
return super(InstanceArguments, self).get_executed_params(execution_context)
return super(InstanceArguments, self).get_executed_params_and_issues(execution_context)
def __repr__(self):
return '<%s: %s>' % (self.__class__.__name__, self._arguments)