[pypy-svn] r10575 - in pypy/dist/pypy: tool translator translator/test
pedronis at codespeak.net
pedronis at codespeak.net
Wed Apr 13 14:34:52 CEST 2005
Author: pedronis
Date: Wed Apr 13 14:34:52 2005
New Revision: 10575
Modified:
pypy/dist/pypy/tool/unionfind.py
pypy/dist/pypy/translator/annrpython.py
pypy/dist/pypy/translator/test/test_annrpython.py
Log:
let's access the pbc maximal access sets through annotator.getpbcaccesssets
expore for them a mapping [] interface for querying
Modified: pypy/dist/pypy/tool/unionfind.py
==============================================================================
--- pypy/dist/pypy/tool/unionfind.py (original)
+++ pypy/dist/pypy/tool/unionfind.py Wed Apr 13 14:34:52 2005
@@ -9,6 +9,15 @@
self.info_factory = info_factory
self.root_info = {}
+ # mapping-like [] access
+ def __getitem__(self, obj):
+ if obj not in self.link_to_parent:
+ raise KeyError, obj
+
+ ignore, rep, access = self.find(obj)
+
+ return access
+
def find(self, obj): # -> new_root, obj, info
if obj not in self.link_to_parent:
info = self.root_info[obj] = self.info_factory(obj)
Modified: pypy/dist/pypy/translator/annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/annrpython.py (original)
+++ pypy/dist/pypy/translator/annrpython.py Wed Apr 13 14:34:52 2005
@@ -117,6 +117,10 @@
self.bindings[v] = s_value
yield v
+ def getpbcaccesssets(self):
+ """Return mapping const obj -> PBCAccessSet"""
+ return self.bookkeeper.pbc_maximal_access_sets
+
#___ medium-level interface ____________________________
def addpendingblock(self, fn, block, cells, called_from=None):
Modified: pypy/dist/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/test/test_annrpython.py (original)
+++ pypy/dist/pypy/translator/test/test_annrpython.py Wed Apr 13 14:34:52 2005
@@ -757,15 +757,20 @@
assert l1.s_item.knowntype == int
assert l2.s_item.knowntype == str
- ign, rep1,acc1 = a.bookkeeper.pbc_maximal_access_sets.find(c1)
- ign, rep2,acc2 = a.bookkeeper.pbc_maximal_access_sets.find(c2)
- ing, rep3,acc3 = a.bookkeeper.pbc_maximal_access_sets.find(c3)
+ access_sets = a.getpbcaccesssets()
+
+ ign, rep1,acc1 = access_sets.find(c1)
+ ign, rep2,acc2 = access_sets.find(c2)
+ ing, rep3,acc3 = access_sets.find(c3)
assert rep1 is rep2 is rep3
assert acc1 is acc2 is acc3
assert len(acc1.objects) == 3
assert acc1.attrs == {'v1': True, 'v2': True}
+
+ assert access_sets[c1] is acc1
+ raises(KeyError, "access_sets[object()]")
def test_isinstance_usigned(self):
from pypy.tool.rarithmetic import r_uint
More information about the Pypy-commit
mailing list