bpo-42266: Handle monkey-patching descriptors in LOAD_ATTR cache (GH-23157)
diff --git a/Lib/test/test_opcache.py b/Lib/test/test_opcache.py
new file mode 100644
index 0000000..61f337d
--- /dev/null
+++ b/Lib/test/test_opcache.py
@@ -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)