Author: Maciej Fijalkowski <[email protected]>
Branch:
Changeset: r62702:7491137b9517
Date: 2013-03-23 12:05 -0700
http://bitbucket.org/pypy/pypy/changeset/7491137b9517/
Log: move hairy interface on space
diff --git a/pypy/objspace/std/intobject.py b/pypy/objspace/std/intobject.py
--- a/pypy/objspace/std/intobject.py
+++ b/pypy/objspace/std/intobject.py
@@ -49,10 +49,8 @@
return float(self.intval)
def int(self, space):
- # XXX find a better way to do it
- if (type(self) != W_IntObject and
- space.lookup(self, '__int__') is not
- space.lookup_in_type_where(space.w_int, '__int__')[1]):
+ if type(self) != W_IntObject and space.is_overloaded(self, space.w_int,
+ '__int__'):
return W_Object.int(self, space)
if space.is_w(space.type(self), space.w_int):
return self
diff --git a/pypy/objspace/std/objspace.py b/pypy/objspace/std/objspace.py
--- a/pypy/objspace/std/objspace.py
+++ b/pypy/objspace/std/objspace.py
@@ -669,3 +669,8 @@
if not hasattr(self, "_interplevel_classes"):
return None # before running initialize
return self._interplevel_classes.get(w_type, None)
+
+ @specialize.arg(2, 3)
+ def is_overloaded(self, w_obj, tp, method):
+ return (self.lookup(w_obj, method) is not
+ self.lookup_in_type_where(tp, method)[1])
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit