forked from VimPlug/jedi
Use the InstanceArguments for super as well
This commit is contained in:
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user