use miette::Diagnostic;
#[non_exhaustive]
#[derive(Debug, thiserror::Error, Diagnostic)]
pub enum ProjectError {
#[error("failed to parse {path}: {reason}")]
ParseFailed {
path: String,
reason: String,
},
#[error("unknown language for {path}")]
UnknownLanguage {
path: String,
},
#[error("coproduct construction failed: {reason}")]
CoproductFailed {
reason: String,
},
#[error("unresolved import in {source_file}: {import_target}")]
UnresolvedImport {
source_file: String,
import_target: String,
},
#[error("invalid manifest at {path}: {reason}")]
InvalidManifest {
path: String,
reason: String,
},
#[error("invalid exclude pattern {pattern:?}: {reason}")]
InvalidPattern {
pattern: String,
reason: String,
},
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error(transparent)]
Parse(#[from] panproto_parse::ParseError),
}