1
0
forked from VimPlug/jedi

using super() in actual executed classes wasn't possible. fixes #421

This commit is contained in:
Dave Halter
2014-07-30 11:27:27 +02:00
parent 53671bca84
commit 3c92d175da
3 changed files with 16 additions and 5 deletions

View File

@@ -91,13 +91,15 @@ class SuperInstance(er.Instance):
def builtins_super(evaluator, obj, params):
# TODO make this able to detect multiple inheritance super
accept = (pr.Function,)
accept = (pr.Function, er.FunctionExecution)
func = params.get_parent_until(accept)
if func.isinstance(*accept):
cls = func.get_parent_until(accept + (pr.Class,),
wanted = (pr.Class, er.Instance)
cls = func.get_parent_until(accept + wanted,
include_current=False)
if isinstance(cls, pr.Class):
cls = er.Class(evaluator, cls)
if isinstance(cls, wanted):
if isinstance(cls, pr.Class):
cls = er.Class(evaluator, cls)
su = cls.py_bases()
if su:
return evaluator.execute(su[0])