Author: Carl Friedrich Bolz <cfb...@gmx.de>
Branch: 
Changeset: r73760:d6577a460c28
Date: 2014-10-02 16:49 +0200
http://bitbucket.org/pypy/pypy/changeset/d6577a460c28/

Log:    implement list(dct) by just calling the .keys() method

diff --git a/rpython/rtyper/lltypesystem/rdict.py 
b/rpython/rtyper/lltypesystem/rdict.py
--- a/rpython/rtyper/lltypesystem/rdict.py
+++ b/rpython/rtyper/lltypesystem/rdict.py
@@ -308,6 +308,9 @@
     def rtype_method_items(self, hop):
         return self._rtype_method_kvi(hop, ll_dict_items)
 
+    def rtype_bltn_list(self, hop):
+        return self._rtype_method_kvi(hop, ll_dict_keys)
+
     def rtype_method_iterkeys(self, hop):
         hop.exception_cannot_occur()
         return DictIteratorRepr(self, "keys").newiter(hop)
diff --git a/rpython/rtyper/test/test_rdict.py 
b/rpython/rtyper/test/test_rdict.py
--- a/rpython/rtyper/test/test_rdict.py
+++ b/rpython/rtyper/test/test_rdict.py
@@ -242,6 +242,16 @@
         res = self.interpret(func, ())#, view=True)
         assert res == 14
 
+    def test_list_dict(self):
+        def func():
+            dic = self.newdict()
+            dic[' 4'] = 1000
+            dic[' 8'] = 200
+            keys = list(dic)
+            return ord(keys[0][1]) + ord(keys[1][1]) - 2*ord('0') + len(keys)
+        res = self.interpret(func, ())#, view=True)
+        assert res == 14
+
     def test_dict_inst_keys(self):
         class Empty:
             pass
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to