Author: Armin Rigo <[email protected]>
Branch: intern-not-immortal
Changeset: r74611:95fdb025f04d
Date: 2014-11-20 13:21 +0100
http://bitbucket.org/pypy/pypy/changeset/95fdb025f04d/
Log: Test and fix
diff --git a/rpython/rlib/rweakref.py b/rpython/rlib/rweakref.py
--- a/rpython/rlib/rweakref.py
+++ b/rpython/rlib/rweakref.py
@@ -105,7 +105,7 @@
rtyper.getrepr(self.s_key))
def rtyper_makekey(self):
- return self.__class__,
+ return self.__class__, self.s_key.rtyper_makekey(), self.valueclassdef
def method_get(self, s_key):
return annmodel.SomeInstance(self.valueclassdef, can_be_None=True)
@@ -165,7 +165,7 @@
return _rweakkeydict.WeakKeyDictRepr(rtyper)
def rtyper_makekey(self):
- return self.__class__,
+ return self.__class__, self.keyclassdef, self.valueclassdef
def method_get(self, s_key):
assert isinstance(s_key, annmodel.SomeInstance)
diff --git a/rpython/rlib/test/test_rweakvaldict.py
b/rpython/rlib/test/test_rweakvaldict.py
--- a/rpython/rlib/test/test_rweakvaldict.py
+++ b/rpython/rlib/test/test_rweakvaldict.py
@@ -144,3 +144,13 @@
d = RWeakValueDictionary(str, Y)
d.set("x", X())
py.test.raises(Exception, interpret, g, [1])
+
+
+def test_bogus_makekey():
+ class X: pass
+ class Y: pass
+ def g():
+ X(); Y()
+ RWeakValueDictionary(str, X).get("foobar")
+ RWeakValueDictionary(int, Y).get(42)
+ interpret(g, [])
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit