From 03f6d0edf8da9193fba331fa3c7b8c2a061a18d2 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 3 Sep 2019 17:50:03 +0200 Subject: [PATCH] Get rid of create_init_executions --- jedi/inference/dynamic_params.py | 16 +++++++++------- jedi/inference/value/instance.py | 12 ------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/jedi/inference/dynamic_params.py b/jedi/inference/dynamic_params.py index 3677b34c..57321d67 100644 --- a/jedi/inference/dynamic_params.py +++ b/jedi/inference/dynamic_params.py @@ -185,6 +185,7 @@ def _check_name_for_execution(inference_state, context, compare_node, name, trai if arglist == ')': arglist = None args = TreeArguments(inference_state, context, arglist, trailer) + from jedi.inference.value.instance import BoundMethod, InstanceArguments if value.tree_node.type == 'classdef': created_instance = instance.TreeInstance( inference_state, @@ -192,17 +193,18 @@ def _check_name_for_execution(inference_state, context, compare_node, name, trai value, args ) - for execution in created_instance.create_init_executions(): - yield execution + args = InstanceArguments(created_instance, args) + yield args else: - yield value.as_context(args) + if isinstance(value, BoundMethod): + args = InstanceArguments(value.instance, args) + yield args for value in inference_state.goto_definitions(context, name): value_node = value.tree_node if compare_node == value_node: - for func_execution in create_func_excs(value): - # TODO private access - yield func_execution._arguments + for arguments in create_func_excs(value): + yield arguments elif isinstance(value.parent_context, BaseFunctionExecutionContext) \ and compare_node.type == 'funcdef': # Here we're trying to find decorators by checking the first @@ -216,7 +218,7 @@ def _check_name_for_execution(inference_state, context, compare_node, name, trai if nodes == [compare_node]: # Found a decorator. module_context = context.get_root_context() - execution_context = next(create_func_excs(value)) + execution_context = value.as_context(next(create_func_excs(value))) potential_nodes = _get_potential_nodes(module_context, param_names[0].string_name) for name, trailer in potential_nodes: if value_node.start_pos < name.start_pos < value_node.end_pos: diff --git a/jedi/inference/value/instance.py b/jedi/inference/value/instance.py index b44875fa..7b7908bf 100644 --- a/jedi/inference/value/instance.py +++ b/jedi/inference/value/instance.py @@ -228,18 +228,6 @@ class AbstractInstanceValue(Value): def name(self): pass - def create_init_executions(self): - for name in self.get_function_slot_names(u'__init__'): - # TODO is this correct? I think we need to check for functions. - if isinstance(name, LazyInstanceClassName): - function = FunctionValue.from_context( - self.parent_context, - name.tree_name.parent - ) - bound_method = BoundMethod(self, function) - - yield bound_method.as_context(self.arguments) - @inference_state_method_cache() def create_instance_context(self, class_context, node): if node.parent.type in ('funcdef', 'classdef'):