1
0
forked from VimPlug/jedi

Use the InstanceArguments for super as well

This commit is contained in:
Dave Halter
2018-08-05 14:57:00 +02:00
parent 8cae517821
commit 357c86ad9c
2 changed files with 12 additions and 7 deletions
+2 -2
View File
@@ -454,7 +454,7 @@ class SelfAttributeFilter(ClassFilter):
class InstanceArguments(AbstractArguments): class InstanceArguments(AbstractArguments):
def __init__(self, instance, var_args): def __init__(self, instance, var_args):
self._instance = instance self.instance = instance
self._var_args = var_args self._var_args = var_args
@property @property
@@ -466,7 +466,7 @@ class InstanceArguments(AbstractArguments):
return self._var_args.trailer return self._var_args.trailer
def unpack(self, func=None): def unpack(self, func=None):
yield None, LazyKnownContext(self._instance) yield None, LazyKnownContext(self.instance)
for values in self._var_args.unpack(func): for values in self._var_args.unpack(func):
yield values yield values
+10 -5
View File
@@ -18,12 +18,12 @@ from jedi import debug
from jedi.evaluate.arguments import ValuesArguments from jedi.evaluate.arguments import ValuesArguments
from jedi.evaluate import analysis from jedi.evaluate import analysis
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate.context.instance import InstanceFunctionExecution, \ from jedi.evaluate.context.instance import \
AbstractInstanceContext, CompiledInstance, BoundMethod, \ AbstractInstanceContext, CompiledInstance, BoundMethod, \
AnonymousInstanceFunctionExecution AnonymousInstanceFunctionExecution, InstanceArguments
from jedi.evaluate.base_context import ContextualizedNode, \ from jedi.evaluate.base_context import ContextualizedNode, \
NO_CONTEXTS, ContextSet NO_CONTEXTS, ContextSet
from jedi.evaluate.context import ClassContext, ModuleContext from jedi.evaluate.context import ClassContext, ModuleContext, FunctionExecutionContext
from jedi.evaluate.context import iterable from jedi.evaluate.context import iterable
from jedi.evaluate.lazy_context import LazyTreeContext from jedi.evaluate.lazy_context import LazyTreeContext
from jedi.evaluate.syntax_tree import is_string from jedi.evaluate.syntax_tree import is_string
@@ -187,10 +187,15 @@ class SuperInstance(AbstractInstanceContext):
@argument_clinic('[type[, obj]], /', want_context=True) @argument_clinic('[type[, obj]], /', want_context=True)
def builtins_super(evaluator, types, objects, context): def builtins_super(evaluator, types, objects, context):
# TODO make this able to detect multiple inheritance super # TODO make this able to detect multiple inheritance super
if isinstance(context, (InstanceFunctionExecution, if isinstance(context, FunctionExecutionContext):
AnonymousInstanceFunctionExecution)): if isinstance(context.var_args, InstanceArguments):
su = context.var_args.instance.py__class__().py__bases__()
return su[0].infer().execute_evaluated()
if isinstance(context, AnonymousInstanceFunctionExecution):
su = context.instance.py__class__().py__bases__() su = context.instance.py__class__().py__bases__()
return su[0].infer().execute_evaluated() return su[0].infer().execute_evaluated()
return NO_CONTEXTS return NO_CONTEXTS