use crate::diagnostic::Diagnostic;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, ParserError>;
#[derive(Debug, Error)]
pub enum ParserError {
#[error("Generic error: {0}")]
Generic(String),
#[error("I/O error: {context}")]
IO {
context: String,
#[source]
source: std::io::Error,
},
#[error("Parse error: {0}")]
Parse(String),
#[error("Component error: {0}")]
Component(String),
#[error("CSS error: {0}")]
Css(String),
#[error("HTML error: {0}")]
Html(String),
#[error("Directive error: {0}")]
Directive(String),
#[error("Not found: {0}")]
NotFound(String),
#[error("TypeScript parse error: {0}")]
TsParseError(String),
#[error("{0}")]
Template(Box<Diagnostic>),
}
impl From<Diagnostic> for ParserError {
fn from(diagnostic: Diagnostic) -> Self {
ParserError::Template(Box::new(diagnostic))
}
}