Control recursion depth explicitly during query analysis
This commit is contained in:
parent
315f87bbff
commit
4aba684d66
2 changed files with 138 additions and 18 deletions
|
|
@ -268,6 +268,29 @@ fn test_query_errors_on_impossible_patterns() {
|
|||
.join("\n")
|
||||
))
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
Query::new(js_lang, "(identifier (identifier))",),
|
||||
Err(QueryError::Structure(
|
||||
1,
|
||||
[
|
||||
"(identifier (identifier))", //
|
||||
" ^",
|
||||
]
|
||||
.join("\n")
|
||||
))
|
||||
);
|
||||
assert_eq!(
|
||||
Query::new(js_lang, "(true (true))",),
|
||||
Err(QueryError::Structure(
|
||||
1,
|
||||
[
|
||||
"(true (true))", //
|
||||
" ^",
|
||||
]
|
||||
.join("\n")
|
||||
))
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -2561,6 +2584,32 @@ fn test_query_step_is_definite() {
|
|||
"#,
|
||||
results_by_substring: &[("\"(\"", false), ("(identifier)", false), ("\")\"", true)],
|
||||
},
|
||||
Row {
|
||||
description: "long, but not too long to analyze",
|
||||
language: get_language("javascript"),
|
||||
pattern: r#"
|
||||
(object "{" (pair) (pair) (pair) (pair) "}")
|
||||
"#,
|
||||
results_by_substring: &[
|
||||
("\"{\"", false),
|
||||
("(pair)", false),
|
||||
("(pair) \"}\"", false),
|
||||
("\"}\"", true),
|
||||
],
|
||||
},
|
||||
Row {
|
||||
description: "too long to analyze",
|
||||
language: get_language("javascript"),
|
||||
pattern: r#"
|
||||
(object "{" (pair) (pair) (pair) (pair) (pair) (pair) (pair) (pair) (pair) (pair) (pair) (pair) "}")
|
||||
"#,
|
||||
results_by_substring: &[
|
||||
("\"{\"", false),
|
||||
("(pair)", false),
|
||||
("(pair) \"}\"", false),
|
||||
("\"}\"", false),
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
allocations::record(|| {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue