Author: Philip Jenvey <[email protected]>
Branch: py3.3
Changeset: r72687:b8010ea183a7
Date: 2014-08-03 16:01 -0700
http://bitbucket.org/pypy/pypy/changeset/b8010ea183a7/

Log:    issue1835: (numerodix) fix dir(None)

diff --git a/pypy/module/__builtin__/app_inspect.py 
b/pypy/module/__builtin__/app_inspect.py
--- a/pypy/module/__builtin__/app_inspect.py
+++ b/pypy/module/__builtin__/app_inspect.py
@@ -44,7 +44,9 @@
     obj = args[0]
     dir_meth = lookup_special(obj, '__dir__')
     if dir_meth is not None:
+        # obscure: lookup_special won't bind None.__dir__!
+        result = dir_meth(obj) if obj is None else dir_meth()
         # Will throw TypeError if not iterable
-        return sorted(dir_meth())
+        return sorted(result)
     # we should never reach here since object.__dir__ exists
     return []
diff --git a/pypy/module/__builtin__/test/test_dir.py 
b/pypy/module/__builtin__/test/test_dir.py
--- a/pypy/module/__builtin__/test/test_dir.py
+++ b/pypy/module/__builtin__/test/test_dir.py
@@ -100,3 +100,6 @@
         for t in [int, list, tuple, set, str]:
             raises(TypeError, t.__dir__)
             assert dir(t) == sorted(t().__dir__())
+
+    def test_dir_none(self):
+        assert dir(None) == sorted(None.__dir__())
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to