Skip to content

Commit 44abb20

Browse files
authored
fix(query): fix parsing of multiple predicates
1 parent 199b379 commit 44abb20

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/main/java/io/github/treesitter/jtreesitter/Query.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ private void handlePredicates(String source, MemorySegment query, @Unsigned int
267267
predicates.get(i).add(new QueryPredicate(predicate, values));
268268
}
269269
j += nargs;
270-
tokens = TSQueryPredicateStep.asSlice(tokens, nargs);
270+
tokens = TSQueryPredicateStep.asSlice(tokens, nargs + 1);
271271
}
272272
}
273273
}

src/test/java/io/github/treesitter/jtreesitter/QueryTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,4 +178,19 @@ void getPatternAssertions() {
178178
assertEquals("FOO", assertions.get("foo").orElse(null));
179179
});
180180
}
181+
182+
@Test
183+
void queryWithTwoPredicates() {
184+
var source = """
185+
((identifier) @foo
186+
(#eq? @foo "foo")
187+
(#not-eq? @foo "bar"))
188+
"""
189+
.stripIndent();
190+
assertQuery(source, query -> {
191+
assertEquals(1, query.getPatternCount());
192+
assertIterableEquals(List.of("foo"), query.getCaptureNames());
193+
assertIterableEquals(List.of("eq?", "foo", "not-eq?", "bar"), query.getStringValues());
194+
});
195+
}
181196
}

0 commit comments

Comments
 (0)