mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 14:04:26 +08:00
Avoid passing of contexts in multiple ways for self name filters
This commit is contained in:
@@ -131,7 +131,7 @@ class AbstractInstanceValue(Value):
|
|||||||
# In this case we're excluding compiled objects that are
|
# In this case we're excluding compiled objects that are
|
||||||
# not fake objects. It doesn't make sense for normal
|
# not fake objects. It doesn't make sense for normal
|
||||||
# compiled objects to search for self variables.
|
# compiled objects to search for self variables.
|
||||||
yield SelfAttributeFilter(self, class_value, cls, origin_scope)
|
yield SelfAttributeFilter(self, class_value, cls.as_context(), origin_scope)
|
||||||
|
|
||||||
class_filters = class_value.get_filters(
|
class_filters = class_value.get_filters(
|
||||||
origin_scope=origin_scope,
|
origin_scope=origin_scope,
|
||||||
@@ -416,15 +416,15 @@ class SelfName(TreeNameDefinition):
|
|||||||
"""
|
"""
|
||||||
This name calculates the parent_context lazily.
|
This name calculates the parent_context lazily.
|
||||||
"""
|
"""
|
||||||
def __init__(self, instance, class_value, tree_name):
|
def __init__(self, instance, class_context, tree_name):
|
||||||
self._instance = instance
|
self._instance = instance
|
||||||
self.class_value = class_value
|
self.class_context = class_context
|
||||||
self.tree_name = tree_name
|
self.tree_name = tree_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parent_context(self):
|
def parent_context(self):
|
||||||
return self._instance.create_instance_context(
|
return self._instance.create_instance_context(
|
||||||
self.class_value.as_context(),
|
self.class_context,
|
||||||
self.tree_name
|
self.tree_name
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -477,14 +477,13 @@ class SelfAttributeFilter(ClassFilter):
|
|||||||
"""
|
"""
|
||||||
This class basically filters all the use cases where `self.*` was assigned.
|
This class basically filters all the use cases where `self.*` was assigned.
|
||||||
"""
|
"""
|
||||||
def __init__(self, instance, instance_class, class_value, origin_scope):
|
def __init__(self, instance, instance_class, node_context, origin_scope):
|
||||||
super(SelfAttributeFilter, self).__init__(
|
super(SelfAttributeFilter, self).__init__(
|
||||||
class_value=instance_class,
|
class_value=instance_class,
|
||||||
node_context=class_value.as_context(),
|
node_context=node_context,
|
||||||
origin_scope=origin_scope,
|
origin_scope=origin_scope,
|
||||||
is_instance=True,
|
is_instance=True,
|
||||||
)
|
)
|
||||||
self._specific_class_value = class_value
|
|
||||||
self._instance = instance
|
self._instance = instance
|
||||||
|
|
||||||
def _filter(self, names):
|
def _filter(self, names):
|
||||||
@@ -503,7 +502,7 @@ class SelfAttributeFilter(ClassFilter):
|
|||||||
yield name
|
yield name
|
||||||
|
|
||||||
def _convert_names(self, names):
|
def _convert_names(self, names):
|
||||||
return [SelfName(self._instance, self._specific_class_value, name) for name in names]
|
return [SelfName(self._instance, self._node_context, name) for name in names]
|
||||||
|
|
||||||
def _check_flows(self, names):
|
def _check_flows(self, names):
|
||||||
return names
|
return names
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ def apply_py__get__(value, instance, class_value):
|
|||||||
|
|
||||||
|
|
||||||
class ClassName(TreeNameDefinition):
|
class ClassName(TreeNameDefinition):
|
||||||
def __init__(self, parent_context, class_value, tree_name, name_context, apply_decorators):
|
def __init__(self, class_value, tree_name, name_context, apply_decorators):
|
||||||
super(ClassName, self).__init__(parent_context, tree_name)
|
super(ClassName, self).__init__(class_value.as_context(), tree_name)
|
||||||
self._name_context = name_context
|
self._name_context = name_context
|
||||||
self._apply_decorators = apply_decorators
|
self._apply_decorators = apply_decorators
|
||||||
self._class_value = class_value
|
self._class_value = class_value
|
||||||
@@ -101,7 +101,6 @@ class ClassFilter(ParserTreeFilter):
|
|||||||
def _convert_names(self, names):
|
def _convert_names(self, names):
|
||||||
return [
|
return [
|
||||||
ClassName(
|
ClassName(
|
||||||
parent_context=self.parent_context,
|
|
||||||
class_value=self._class_value,
|
class_value=self._class_value,
|
||||||
tree_name=name,
|
tree_name=name,
|
||||||
name_context=self._node_context,
|
name_context=self._node_context,
|
||||||
|
|||||||
Reference in New Issue
Block a user