summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2023-07-07 10:09:26 (GMT)
committerGitHub <noreply@github.com>2023-07-07 10:09:26 (GMT)
commit24fb627ea7a4d57cf479b7516bafdb6c253a1645 (patch)
tree370012371f9b7cd2998691324f3b141cf49d0446 /Lib
parente1d45b8ed43e1590862319fec33539f8adbc0849 (diff)
downloadcpython-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.py15
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()