From da269ac3507e19e222d4adb8b61c78a6b1ea8781 Mon Sep 17 00:00:00 2001 From: Andrew Hlynskyi Date: Fri, 12 May 2023 16:34:56 +0300 Subject: [PATCH] test: add a test case to demonstrate the #2107 issue --- cli/src/tests/github_issue_test.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/cli/src/tests/github_issue_test.rs b/cli/src/tests/github_issue_test.rs index 42fe3e9a..bfc135ca 100644 --- a/cli/src/tests/github_issue_test.rs +++ b/cli/src/tests/github_issue_test.rs @@ -6,7 +6,9 @@ // cargo test --target $(rustc -vV | sed -nr 's/^host: //p') -- --test-threads 1 // ``` +use super::helpers::query_helpers::assert_query_matches; use crate::tests::helpers::fixtures::get_language; +use indoc::indoc; use tree_sitter::Query; #[test] @@ -14,3 +16,27 @@ fn issue_2162_out_of_bound() { let language = get_language("java"); assert!(Query::new(language, "(package_declaration _ (_) @name _)").is_ok()); } + +#[test] +fn issue_2107_first_child_group_anchor_had_no_effect() { + let language = get_language("c"); + let source_code = indoc! {r#" + void fun(int a, char b, int c) { }; + "#}; + let query = indoc! {r#" + (parameter_list + . + ( + (parameter_declaration) @constant + (#match? @constant "^int") + ) + ) + "#}; + let query = Query::new(language, query).unwrap(); + assert_query_matches( + language, + &query, + source_code, + &[(0, vec![("constant", "int a")])], + ); +}