forked from VimPlug/jedi
Function for evaluating functions with already executed arguments.
This commit is contained in:
@@ -97,8 +97,12 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
||||
else:
|
||||
# Need to execute the __init__ function, because the dynamic param
|
||||
# searching needs it.
|
||||
with common.ignored(KeyError):
|
||||
self.execute_subscope_by_name('__init__', self.var_args)
|
||||
try:
|
||||
method = self.get_subscope_by_name('__init__')
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
evaluator.execute(method, self.var_args)
|
||||
# Generated instances are classes that are just generated by self
|
||||
# (No var_args) used.
|
||||
self.is_generated = is_generated
|
||||
@@ -180,16 +184,16 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
||||
sub = self.base.get_subscope_by_name(name)
|
||||
return get_instance_el(self._evaluator, self, sub, True)
|
||||
|
||||
def execute_subscope_by_name(self, name, args=()):
|
||||
def execute_subscope_by_name(self, name, *args):
|
||||
method = self.get_subscope_by_name(name)
|
||||
return self._evaluator.execute(method, args)
|
||||
return self._evaluator.execute_evaluated(method, *args)
|
||||
|
||||
def get_descriptor_return(self, obj):
|
||||
""" Throws a KeyError if there's no method. """
|
||||
# Arguments in __get__ descriptors are obj, class.
|
||||
# `method` is the new parent of the array, don't know if that's good.
|
||||
args = [obj, obj.base] if isinstance(obj, Instance) else [compiled.none_obj, obj]
|
||||
return self.execute_subscope_by_name('__get__', args)
|
||||
return self.execute_subscope_by_name('__get__', *args)
|
||||
|
||||
def scope_names_generator(self, position=None):
|
||||
"""
|
||||
@@ -211,7 +215,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
||||
indexes = []
|
||||
|
||||
try:
|
||||
return self.execute_subscope_by_name('__getitem__', [indexes])
|
||||
return self.execute_subscope_by_name('__getitem__', indexes)
|
||||
except KeyError:
|
||||
debug.warning('No __getitem__, cannot access the array.')
|
||||
return []
|
||||
@@ -494,8 +498,7 @@ class Function(use_metaclass(CachedMetaClass, Wrapper)):
|
||||
# Create param array.
|
||||
old_func = Function(self._evaluator, f, is_decorated=True)
|
||||
|
||||
arg = iterable.AlreadyEvaluated([old_func])
|
||||
wrappers = self._evaluator.execute(decorator, (arg,))
|
||||
wrappers = self._evaluator.execute_evaluated(decorator, old_func)
|
||||
if not len(wrappers):
|
||||
debug.warning('no wrappers found %s', self.base_func)
|
||||
return self
|
||||
|
||||
Reference in New Issue
Block a user