diff options
author | Mark Shannon <mark@hotpy.org> | 2023-07-07 10:09:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-07 10:09:26 (GMT) |
commit | 24fb627ea7a4d57cf479b7516bafdb6c253a1645 (patch) | |
tree | 370012371f9b7cd2998691324f3b141cf49d0446 /Lib | |
parent | e1d45b8ed43e1590862319fec33539f8adbc0849 (diff) | |
download | cpython-24fb627ea7a4d57cf479b7516bafdb6c253a1645.zip cpython-24fb627ea7a4d57cf479b7516bafdb6c253a1645.tar.gz cpython-24fb627ea7a4d57cf479b7516bafdb6c253a1645.tar.bz2 |
GH-106057: Handle recursion errors in inline class calls properly. (GH-106108)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_class.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py index d7a48e5..894e0ca 100644 --- a/Lib/test/test_class.py +++ b/Lib/test/test_class.py @@ -740,6 +740,21 @@ class ClassTests(unittest.TestCase): class A(0, *range(1, 8), **d, foo='bar'): pass self.assertEqual(A, (tuple(range(8)), {'foo': 'bar'})) + def testClassCallRecursionLimit(self): + class C: + def __init__(self): + self.c = C() + + with self.assertRaises(RecursionError): + C() + + def add_one_level(): + #Each call to C() consumes 2 levels, so offset by 1. + C() + + with self.assertRaises(RecursionError): + add_one_level() + if __name__ == '__main__': unittest.main() |