mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
bpo-42266: Handle monkey-patching descriptors in LOAD_ATTR cache (GH-23157)
This commit is contained in:
parent
178695b7ae
commit
80449f243b
4 changed files with 28 additions and 7 deletions
23
Lib/test/test_opcache.py
Normal file
23
Lib/test/test_opcache.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
import unittest
|
||||
|
||||
class TestLoadAttrCache(unittest.TestCase):
|
||||
def test_descriptor_added_after_optimization(self):
|
||||
class Descriptor:
|
||||
pass
|
||||
|
||||
class C:
|
||||
def __init__(self):
|
||||
self.x = 1
|
||||
x = Descriptor()
|
||||
|
||||
def f(o):
|
||||
return o.x
|
||||
|
||||
o = C()
|
||||
for i in range(1025):
|
||||
assert f(o) == 1
|
||||
|
||||
Descriptor.__get__ = lambda self, instance, value: 2
|
||||
Descriptor.__set__ = lambda *args: None
|
||||
|
||||
self.assertEqual(f(o), 2)
|
Loading…
Add table
Add a link
Reference in a new issue