gh-135028: Increase parser MAXSTACK for nested parenthesis (#135031)

This commit is contained in:
Victor Stinner 2025-06-03 08:40:45 +02:00 committed by GitHub
parent b525e31b7f
commit 6e80f11eb5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 3 deletions

View File

@ -1,7 +1,7 @@
# Python test set -- part 1, grammar.
# This just tests whether the parser accepts them all.
from test.support import check_syntax_error
from test.support import check_syntax_error, skip_wasi_stack_overflow
from test.support import import_helper
import annotationlib
import inspect
@ -249,6 +249,18 @@ def test_eof_error(self):
compile(s, "<test>", "exec")
self.assertIn("was never closed", str(cm.exception))
@skip_wasi_stack_overflow()
def test_max_level(self):
# Macro defined in Parser/lexer/state.h
MAXLEVEL = 200
result = eval("(" * MAXLEVEL + ")" * MAXLEVEL)
self.assertEqual(result, ())
with self.assertRaises(SyntaxError) as cm:
eval("(" * (MAXLEVEL + 1) + ")" * (MAXLEVEL + 1))
self.assertStartsWith(str(cm.exception), 'too many nested parentheses')
var_annot_global: int # a global annotated is necessary for test_var_annot

2
Parser/parser.c generated
View File

@ -14,7 +14,7 @@
# define MAXSTACK 4000
# endif
#else
# define MAXSTACK 4000
# define MAXSTACK 6000
#endif
static const int n_keyword_lists = 9;
static KeywordToken *reserved_keywords[] = {

View File

@ -44,7 +44,7 @@
# define MAXSTACK 4000
# endif
#else
# define MAXSTACK 4000
# define MAXSTACK 6000
#endif
"""