use miette::Diagnostic;
#[non_exhaustive]
#[derive(Debug, thiserror::Error, Diagnostic)]
pub enum ParseError {
#[error("tree-sitter parse failed for {path}")]
TreeSitterParse {
path: String,
},
#[error("unknown language for file extension: {extension}")]
UnknownLanguage {
extension: String,
},
#[error("schema construction failed: {reason}")]
SchemaConstruction {
reason: String,
},
#[error("emit failed for protocol {protocol}: {reason}")]
EmitFailed {
protocol: String,
reason: String,
},
#[error("theory extraction failed: {reason}")]
TheoryExtraction {
reason: String,
},
#[error("failed to parse node-types.json: {source}")]
NodeTypesJson {
#[source]
source: serde_json::Error,
},
#[error(transparent)]
Protocol(#[from] panproto_protocols::ProtocolError),
}