From f87f8c028b4d214a9f61da08fbd8d505bc5fa5cf Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 22 Aug 2019 17:11:54 +0200 Subject: [PATCH] Fix context issues when working with instances --- jedi/inference/value/function.py | 5 ++--- jedi/inference/value/instance.py | 7 ++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/jedi/inference/value/function.py b/jedi/inference/value/function.py index b54dc504..b6ee3e67 100644 --- a/jedi/inference/value/function.py +++ b/jedi/inference/value/function.py @@ -381,7 +381,7 @@ class OverloadedFunctionValue(FunctionMixin, ValueWrapper): return self._overloaded_functions -def _find_overload_functions(value, tree_node): +def _find_overload_functions(context, tree_node): def _is_overload_decorated(funcdef): if funcdef.parent.type == 'decorated': decorators = funcdef.parent.children[0] @@ -404,8 +404,7 @@ def _find_overload_functions(value, tree_node): while True: filter = ParserTreeFilter( - value.inference_state, - value, + context, until_position=tree_node.start_pos ) names = filter.get(tree_node.name.value) diff --git a/jedi/inference/value/instance.py b/jedi/inference/value/instance.py index 5851eb03..98469d1c 100644 --- a/jedi/inference/value/instance.py +++ b/jedi/inference/value/instance.py @@ -483,14 +483,15 @@ class SelfAttributeFilter(ClassFilter): """ name_class = SelfName - def __init__(self, value, class_value, origin_scope): + def __init__(self, instance, class_value, origin_scope): super(SelfAttributeFilter, self).__init__( - parent_context=value, + parent_context=instance.parent_context, node_context=class_value.as_context(), origin_scope=origin_scope, is_instance=True, ) self._class_value = class_value + self._instance = instance def _filter(self, names): names = self._filter_self_names(names) @@ -508,7 +509,7 @@ class SelfAttributeFilter(ClassFilter): yield name def _convert_names(self, names): - return [self.name_class(self.parent_context, self._class_value, name) for name in names] + return [self.name_class(self._instance, self._class_value, name) for name in names] def _check_flows(self, names): return names