Use a class_context instead of a class_value for MethodValue

This commit is contained in:
Dave Halter
2019-08-22 22:11:14 +02:00
parent eee6810576
commit ee6331747f
2 changed files with 7 additions and 7 deletions

View File

@@ -110,7 +110,7 @@ class FunctionValue(use_metaclass(CachedMetaClass, FunctionMixin, FunctionAndCla
if context.is_class(): if context.is_class():
return MethodValue( return MethodValue(
context.inference_state, context.inference_state,
context._value, # TODO private access! context,
parent_context=parent_context, parent_context=parent_context,
tree_node=tree_node tree_node=tree_node
) )
@@ -148,17 +148,17 @@ class FunctionValue(use_metaclass(CachedMetaClass, FunctionMixin, FunctionAndCla
class MethodValue(FunctionValue): class MethodValue(FunctionValue):
def __init__(self, inference_state, class_value, *args, **kwargs): def __init__(self, inference_state, class_context, *args, **kwargs):
super(MethodValue, self).__init__(inference_state, *args, **kwargs) super(MethodValue, self).__init__(inference_state, *args, **kwargs)
self.class_value = class_value self.class_context = class_context
def get_default_param_context(self): def get_default_param_context(self):
return self.class_value.as_context() return self.class_context
def get_qualified_names(self): def get_qualified_names(self):
# Need to implement this, because the parent value of a method # Need to implement this, because the parent value of a method
# value is not the class value but the module. # value is not the class value but the module.
names = self.class_value.get_qualified_names() names = self.class_context.get_qualified_names()
if names is None: if names is None:
return None return None
return names + (self.py__name__(),) return names + (self.py__name__(),)

View File

@@ -124,14 +124,14 @@ def execute(callback):
if isinstance(value, BoundMethod): if isinstance(value, BoundMethod):
if module_name == 'builtins': if module_name == 'builtins':
if value.py__name__() == '__get__': if value.py__name__() == '__get__':
if value.class_value.py__name__() == 'property': if value.class_context.py__name__() == 'property':
return builtins_property( return builtins_property(
value, value,
arguments=arguments, arguments=arguments,
callback=call, callback=call,
) )
elif value.py__name__() in ('deleter', 'getter', 'setter'): elif value.py__name__() in ('deleter', 'getter', 'setter'):
if value.class_value.py__name__() == 'property': if value.class_context.py__name__() == 'property':
return ValueSet([value.instance]) return ValueSet([value.instance])
return call() return call()