@@ -5963,9 +5963,9 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.6.3"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
+checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
[[package]]
name = "memfd"
@@ -10519,7 +10519,7 @@ dependencies = [
[[package]]
name = "tree-sitter"
version = "0.20.100"
-source = "git+https://github.com/tree-sitter/tree-sitter?rev=7f21c3b98c0749ac192da67a0d65dfe3eabc4a63#7f21c3b98c0749ac192da67a0d65dfe3eabc4a63"
+source = "git+https://github.com/tree-sitter/tree-sitter?rev=7b4894ba2ae81b988846676f54c0988d4027ef4f#7b4894ba2ae81b988846676f54c0988d4027ef4f"
dependencies = [
"cc",
"regex",
@@ -407,7 +407,7 @@ features = [
]
[patch.crates-io]
-tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "7f21c3b98c0749ac192da67a0d65dfe3eabc4a63" }
+tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "7b4894ba2ae81b988846676f54c0988d4027ef4f" }
# Workaround for a broken nightly build of gpui: See #7644 and revisit once 0.5.3 is released.
pathfinder_simd = { git = "https://github.com/servo/pathfinder.git", rev = "30419d07660dc11a21e42ef4a7fa329600cff152" }
@@ -606,13 +606,21 @@ impl SyntaxSnapshot {
LogIncludedRanges(&included_ranges),
);
- tree = parse_text(
+ let result = parse_text(
grammar,
text.as_rope(),
step_start_byte,
included_ranges,
Some(old_tree.clone()),
);
+ match result {
+ Ok(t) => tree = t,
+ Err(e) => {
+ log::error!("error parsing text: {:?}", e);
+ continue;
+ }
+ };
+
changed_ranges = join_ranges(
invalidated_ranges
.iter()
@@ -651,13 +659,20 @@ impl SyntaxSnapshot {
LogIncludedRanges(&included_ranges),
);
- tree = parse_text(
+ let result = parse_text(
grammar,
text.as_rope(),
step_start_byte,
included_ranges,
None,
);
+ match result {
+ Ok(t) => tree = t,
+ Err(e) => {
+ log::error!("error parsing text: {:?}", e);
+ continue;
+ }
+ };
changed_ranges = vec![step_start_byte..step_end_byte];
}
@@ -1161,16 +1176,12 @@ fn parse_text(
start_byte: usize,
ranges: Vec<tree_sitter::Range>,
old_tree: Option<Tree>,
-) -> Tree {
+) -> anyhow::Result<Tree> {
PARSER.with(|parser| {
let mut parser = parser.borrow_mut();
let mut chunks = text.chunks_in_range(start_byte..text.len());
- parser
- .set_included_ranges(&ranges)
- .expect("overlapping ranges");
- parser
- .set_language(&grammar.ts_language)
- .expect("incompatible grammar");
+ parser.set_included_ranges(&ranges)?;
+ parser.set_language(&grammar.ts_language)?;
parser
.parse_with(
&mut move |offset, _| {
@@ -1179,7 +1190,7 @@ fn parse_text(
},
old_tree.as_ref(),
)
- .expect("invalid language")
+ .ok_or_else(|| anyhow::anyhow!("failed to parse"))
})
}