pub use node_mismatch::*;
use rowan::Language;
pub use token_mismatch::*;
use crate::{cst::CstNode, error::IncompleteSyntax};
use derive_more::{IsVariant, TryUnwrap, Unwrap};
mod node_mismatch;
mod token_mismatch;
#[derive(Debug, Clone, PartialEq, Eq, Hash, IsVariant, Unwrap, TryUnwrap, thiserror::Error)]
#[unwrap(ref, ref_mut)]
#[try_unwrap(ref, ref_mut)]
pub enum SyntaxError<E: CstNode<Lang>, Lang: Language> {
#[error(transparent)]
NodeMismatch(#[from] CstNodeMismatch<E, Lang>),
#[error(transparent)]
TokenMismatch(#[from] CstTokenMismatch<E, Lang>),
#[error(transparent)]
Incomplete(#[from] IncompleteSyntax<E>),
}