From 297e2bcb288e9aa5fac3d68558d9e9c31a92ebbb Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 23 Sep 2020 16:55:48 -0700 Subject: [PATCH] static query analysis: Fix handling of fields in hidden nodes --- cli/src/tests/query_test.rs | 14 +++++++++++--- lib/src/query.c | 2 +- script/fetch-fixtures | 1 + script/fetch-fixtures.cmd | 1 + 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cli/src/tests/query_test.rs b/cli/src/tests/query_test.rs index 598a9792..5fd07680 100644 --- a/cli/src/tests/query_test.rs +++ b/cli/src/tests/query_test.rs @@ -1419,15 +1419,15 @@ fn test_query_matches_with_supertypes() { let query = Query::new( language, r#" - (argument_list (_expression) @arg) + (argument_list (expression) @arg) (keyword_argument - value: (_expression) @kw_arg) + value: (expression) @kw_arg) (assignment left: (left_hand_side (identifier) @var_def)) - (_primary_expression/identifier) @var_ref + (primary_expression/identifier) @var_ref "#, ) .unwrap(); @@ -2704,6 +2704,14 @@ fn test_query_step_is_definite() { ("\"}\"", false), ], }, + Row { + description: "hidden nodes that have several fields", + language: get_language("java"), + pattern: r#" + (method_declaration name: (identifier)) + "#, + results_by_substring: &[("name:", true)], + }, ]; allocations::record(|| { diff --git a/lib/src/query.c b/lib/src/query.c index 8c86badb..b6e48951 100644 --- a/lib/src/query.c +++ b/lib/src/query.c @@ -1116,7 +1116,7 @@ static bool ts_query__analyze_patterns(TSQuery *self, unsigned *error_offset) { const TSFieldMapEntry *field_map, *field_map_end; ts_language_field_map(self->language, node->production_id, &field_map, &field_map_end); for (; field_map != field_map_end; field_map++) { - if (field_map->child_index == child_index) { + if (!field_map->inherited && field_map->child_index == child_index) { field_id = field_map->field_id; break; } diff --git a/script/fetch-fixtures b/script/fetch-fixtures index 96cee76e..1eec16ee 100755 --- a/script/fetch-fixtures +++ b/script/fetch-fixtures @@ -27,6 +27,7 @@ fetch_grammar cpp master fetch_grammar embedded-template master fetch_grammar go master fetch_grammar html master +fetch_grammar java master fetch_grammar javascript master fetch_grammar jsdoc master fetch_grammar json master diff --git a/script/fetch-fixtures.cmd b/script/fetch-fixtures.cmd index 4b3bb562..32727b0c 100644 --- a/script/fetch-fixtures.cmd +++ b/script/fetch-fixtures.cmd @@ -6,6 +6,7 @@ call:fetch_grammar cpp master call:fetch_grammar embedded-template master call:fetch_grammar go master call:fetch_grammar html master +call:fetch_grammar java master call:fetch_grammar javascript master call:fetch_grammar jsdoc master call:fetch_grammar json master