Skip to content
This repository was archived by the owner on Feb 10, 2025. It is now read-only.

Commit 04fbcbf

Browse files
committed
fix(core): improve error handling in tree parser
When tree parsing fails in Engine::insert, properly cleanup by removing the path from tree map. This prevents invalid states from lingering.
1 parent 6ea43e3 commit 04fbcbf

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

crates/echolysis-core/src/engine/insert.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ impl Engine {
1616
pub fn insert(&self, path: Arc<PathBuf>, source: Arc<String>) -> Option<()> {
1717
let mut parser = self.language.parser();
1818
let query = self.language.query();
19-
let tree = parser.parse(source.as_str(), None)?;
19+
let tree = match parser.parse(source.as_str(), None) {
20+
Some(tree) => tree,
21+
None => {
22+
self.remove(path);
23+
return None;
24+
}
25+
};
2026
let indexed_tree = IndexedTree::new(path.clone(), source, tree, query);
2127

2228
match self.tree_map.entry(path) {

crates/echolysis-lsp/src/server/fs_watcher.rs

+2
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ impl Server {
135135
}
136136

137137
// Handle filesystem events for code duplication analysis
138+
// FIXME: There are bugs when dealing with directories. Fix it so that we can handle directory
139+
// changes correctly
138140
async fn do_handle_fs_event(&self, event: notify::Event) {
139141
use notify::{event::*, EventKind};
140142

0 commit comments

Comments
 (0)