aboutsummaryrefslogtreecommitdiff
path: root/src/tree_sitter/lexer.c
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2020-02-26 19:39:56 +0100
committerGitHub <noreply@github.com>2020-02-26 19:39:56 +0100
commit78ec95ce7dc070899caf2b35f7058ba466fe7073 (patch)
treec18b41e10c87af838fddda94eb4e8f65ca671586 /src/tree_sitter/lexer.c
parent96059d72e539c0a23c1f7a24290f35247ff01749 (diff)
parent3ce9b05653a71efe2eeaeca6b6132d1227c367b7 (diff)
downloadrneovim-78ec95ce7dc070899caf2b35f7058ba466fe7073.tar.gz
rneovim-78ec95ce7dc070899caf2b35f7058ba466fe7073.tar.bz2
rneovim-78ec95ce7dc070899caf2b35f7058ba466fe7073.zip
Merge pull request #11946 from bfredl/ts-sync
treesitter: update vendored tree-sitter runtime
Diffstat (limited to 'src/tree_sitter/lexer.c')
-rw-r--r--src/tree_sitter/lexer.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/tree_sitter/lexer.c b/src/tree_sitter/lexer.c
index e2ca851973..3f8a4c0ae8 100644
--- a/src/tree_sitter/lexer.c
+++ b/src/tree_sitter/lexer.c
@@ -355,7 +355,7 @@ void ts_lexer_mark_end(Lexer *self) {
ts_lexer__mark_end(&self->data);
}
-void ts_lexer_set_included_ranges(
+bool ts_lexer_set_included_ranges(
Lexer *self,
const TSRange *ranges,
uint32_t count
@@ -363,6 +363,16 @@ void ts_lexer_set_included_ranges(
if (count == 0 || !ranges) {
ranges = &DEFAULT_RANGE;
count = 1;
+ } else {
+ uint32_t previous_byte = 0;
+ for (unsigned i = 0; i < count; i++) {
+ const TSRange *range = &ranges[i];
+ if (
+ range->start_byte < previous_byte ||
+ range->end_byte < range->start_byte
+ ) return false;
+ previous_byte = range->end_byte;
+ }
}
size_t size = count * sizeof(TSRange);
@@ -370,6 +380,7 @@ void ts_lexer_set_included_ranges(
memcpy(self->included_ranges, ranges, size);
self->included_range_count = count;
ts_lexer_goto(self, self->current_position);
+ return true;
}
TSRange *ts_lexer_included_ranges(const Lexer *self, uint32_t *count) {