diff --git a/core/parser.cpp b/core/parser.cpp index 7b895f21..831b2987 100644 --- a/core/parser.cpp +++ b/core/parser.cpp @@ -60,7 +60,7 @@ static const Fodder EMPTY_FODDER; * This is especially important when parsing deeply nested structures that could lead to * excessive recursion in the parser functions. */ -static const unsigned MAX_PARSER_DEPTH = 1000; +static const unsigned MAX_PARSER_DEPTH = 500; static bool op_is_unary(const std::string &op, UnaryOp &uop) { diff --git a/test_suite/error.parse.deep_array_nesting.jsonnet.golden b/test_suite/error.parse.deep_array_nesting.jsonnet.golden index 94cc9a3d..0b77c08b 100644 --- a/test_suite/error.parse.deep_array_nesting.jsonnet.golden +++ b/test_suite/error.parse.deep_array_nesting.jsonnet.golden @@ -1 +1 @@ -STATIC ERROR: error.parse.deep_array_nesting.jsonnet:1:501: Exceeded maximum parse depth limit. +STATIC ERROR: error.parse.deep_array_nesting.jsonnet:1:251: Exceeded maximum parse depth limit. diff --git a/test_suite/error.parse.deep_if_nesting.jsonnet b/test_suite/error.parse.deep_if_nesting.jsonnet new file mode 100644 index 00000000..4117037a --- /dev/null +++ b/test_suite/error.parse.deep_if_nesting.jsonnet @@ -0,0 +1 @@ +if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else if true then 1 else 1 diff --git a/test_suite/error.parse.deep_if_nesting.jsonnet.golden b/test_suite/error.parse.deep_if_nesting.jsonnet.golden new file mode 100644 index 00000000..866a26ef --- /dev/null +++ b/test_suite/error.parse.deep_if_nesting.jsonnet.golden @@ -0,0 +1,2 @@ +STATIC ERROR: error.parse.deep_if_nesting.jsonnet:1:9984-9988: Exceeded maximum parse depth limit. +