use thiserror::Error;

#[derive(Debug, Error, Eq, PartialEq)]
pub enum Error {
    #[error("Encountered a token that is unsupported by the parser.")]
    UnsupportedToken(String),
    #[error("Reached the end of the input token stream prematurely.")]
    EndOfInput,
    #[error("Unmatched brace")]
    UnmatchedBrace,
    #[error("Expected a comma here.")]
    ExpectedComma,
    #[error("Expected a valid keyword. Got: {0}")]
    UnexpectedToken(String),
    #[error("Expected a value to be defined.")]
    ExpectedVariableUndefined,
    #[error("Invalid LintKind")]
    InvalidLintKind,
    #[error("Invalid Replacement Strategy")]
    InvalidReplacementStrategy,
    #[error("Invalid Scope")]
    InvalidScope,
    #[error("Expected a variable type other than the one provided.")]
    ExpectedDifferentVariableType,
    #[error("Unable to resolve expression reference {0}")]
    UnableToResolveExpr(String),
}
