Avoid passing of contexts in multiple ways for self name filters

This commit is contained in:
Dave Halter
2019-08-23 15:45:26 +02:00
parent b38da47981
commit 0cbd1e6cff
2 changed files with 9 additions and 11 deletions

View File

@@ -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

View File

@@ -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,