1
0
forked from VimPlug/jedi

Cleanup some instance stuff

This commit is contained in:
Dave Halter
2018-03-14 21:04:55 +01:00
parent e5546a8ae6
commit e6469f46c7
3 changed files with 27 additions and 9 deletions

View File

@@ -15,23 +15,27 @@ from jedi.evaluate.context import iterable
from jedi.parser_utils import get_parent_scope
class InstanceFunctionExecution(FunctionExecutionContext):
def __init__(self, instance, parent_context, function_context, var_args):
class BaseInstanceFunctionExecution(FunctionExecutionContext):
def __init__(self, instance, *args, **kwargs):
self.instance = instance
super(BaseInstanceFunctionExecution, self).__init__(
instance.evaluator, *args, **kwargs)
class InstanceFunctionExecution(BaseInstanceFunctionExecution):
def __init__(self, instance, parent_context, function_context, var_args):
var_args = InstanceVarArgs(self, var_args)
super(InstanceFunctionExecution, self).__init__(
instance.evaluator, parent_context, function_context, var_args)
instance, parent_context, function_context, var_args)
class AnonymousInstanceFunctionExecution(FunctionExecutionContext):
class AnonymousInstanceFunctionExecution(BaseInstanceFunctionExecution):
function_execution_filter = filters.AnonymousInstanceFunctionExecutionFilter
def __init__(self, instance, parent_context, function_context, var_args):
self.instance = instance
super(AnonymousInstanceFunctionExecution, self).__init__(
instance.evaluator, parent_context, function_context, var_args)
instance, parent_context, function_context, var_args)
class AbstractInstanceContext(Context):

View File

@@ -140,11 +140,19 @@ def infer_param(execution_context, param):
# If the number of parameters doesn't match length of type comment,
# ignore first parameter (assume it's self).
if len(params_comments) != len(all_params):
debug.warning(
"Comments length != Params length %s %s",
params_comments, all_params
)
from jedi.evaluate.context.instance import BaseInstanceFunctionExecution
if isinstance(execution_context, BaseInstanceFunctionExecution):
if index == 0:
# Assume it's self, which is already handled
return NO_CONTEXTS
else:
index -= 1
index -= 1
if index >= len(params_comments):
return NO_CONTEXTS
param_comment = params_comments[index]
# Construct annotation from type comment
annotation = tree.String(repr(param_comment), node.start_pos)

View File

@@ -178,3 +178,9 @@ def x(a, b):
# type: (1) -> a
#?
a
def x(a, b, c):
# type: (str) -> a
#?
b
#?
c