Pablo Galindo | 80449f2 | 2020-11-05 09:23:15 +0000 | [diff] [blame] | 1 | import unittest |
2 | |||||
3 | class TestLoadAttrCache(unittest.TestCase): | ||||
4 | def test_descriptor_added_after_optimization(self): | ||||
5 | class Descriptor: | ||||
6 | pass | ||||
7 | |||||
8 | class C: | ||||
9 | def __init__(self): | ||||
10 | self.x = 1 | ||||
11 | x = Descriptor() | ||||
12 | |||||
13 | def f(o): | ||||
14 | return o.x | ||||
15 | |||||
16 | o = C() | ||||
17 | for i in range(1025): | ||||
18 | assert f(o) == 1 | ||||
19 | |||||
20 | Descriptor.__get__ = lambda self, instance, value: 2 | ||||
21 | Descriptor.__set__ = lambda *args: None | ||||
22 | |||||
23 | self.assertEqual(f(o), 2) |