Remove evaluator param from py__bases__.

This commit is contained in:
Dave Halter
2015-12-10 16:16:30 +01:00
parent 98b1845784
commit 506d5a4f31
3 changed files with 7 additions and 7 deletions

View File

@@ -68,8 +68,8 @@ class CompiledObject(Base):
return tuple(create(self._evaluator, cls, self.parent) for cls in self.obj.__mro__)
@CheckAttribute
def py__bases__(self, evaluator):
return tuple(create(evaluator, cls) for cls in self.obj.__bases__)
def py__bases__(self):
return tuple(create(self._evaluator, cls) for cls in self.obj.__bases__)
def py__bool__(self):
return bool(self.obj)

View File

@@ -20,7 +20,7 @@ and others. Here's a list:
py__call__(evaluator, params: Array) On callable objects, returns types.
py__bool__() Returns True/False/None; None means that
there's no certainty.
py__bases__(evaluator) Returns a list of base classes.
py__bases__() Returns a list of base classes.
py__mro__() Returns a list of classes (the mro).
py__iter__() Returns a generator of a set of types.
py__getitem__(index: int/str) Returns a a set of types of the index.
@@ -422,7 +422,7 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
mro = [self]
# TODO Do a proper mro resolution. Currently we are just listing
# classes. However, it's a complicated algorithm.
for cls in self.py__bases__(self._evaluator):
for cls in self.py__bases__():
# TODO detect for TypeError: duplicate base class str,
# e.g. `class X(str, str): pass`
try:
@@ -447,13 +447,13 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
return tuple(mro)
@memoize_default(default=())
def py__bases__(self, evaluator):
def py__bases__(self):
arglist = self.base.get_super_arglist()
if arglist:
args = param.Arguments(self._evaluator, arglist)
return list(chain.from_iterable(args.eval_args()))
else:
return [compiled.create(evaluator, object)]
return [compiled.create(self._evaluator, object)]
def py__call__(self, evaluator, params):
return set([Instance(evaluator, self, params)])

View File

@@ -148,7 +148,7 @@ def builtins_super(evaluator, types, objects, scope):
cls = er.Class(evaluator, cls)
elif isinstance(cls, er.Instance):
cls = cls.base
su = cls.py__bases__(evaluator)
su = cls.py__bases__()
if su:
return evaluator.execute(su[0])
return set()