pathfinder_treesitter/
error.rs1use std::path::PathBuf;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
6pub enum SurgeonError {
7 #[error("symbol not found: {path}")]
9 SymbolNotFound {
10 path: String,
11 did_you_mean: Vec<String>,
13 },
14
15 #[error("file not found: {0}")]
21 FileNotFound(PathBuf),
22
23 #[error("unsupported language for path: {0}")]
25 UnsupportedLanguage(PathBuf),
26
27 #[error("parse error in {path}: {reason}")]
29 ParseError {
30 path: std::path::PathBuf,
31 reason: String,
32 },
33
34 #[error("filesystem error: {0}")]
36 Io(#[from] std::io::Error),
37}
38
39impl From<SurgeonError> for pathfinder_common::error::PathfinderError {
40 fn from(error: SurgeonError) -> Self {
41 match error {
42 SurgeonError::SymbolNotFound { path, did_you_mean } => Self::SymbolNotFound {
43 semantic_path: path,
44 did_you_mean,
45 },
46 SurgeonError::FileNotFound(path) => Self::FileNotFound { path },
47 SurgeonError::UnsupportedLanguage(path) => Self::UnsupportedLanguage { path },
48 SurgeonError::ParseError { path, reason } => Self::ParseError { path, reason },
49 SurgeonError::Io(err) => Self::IoError {
50 message: err.to_string(),
51 },
52 }
53 }
54}