use thiserror::Error;
#[non_exhaustive]
#[derive(Debug, Error, PartialEq, Eq)]
pub enum VarExpandError {
#[error("variable `{name}` is not set (at byte offset {offset})")]
MissingVariable {
name: String,
offset: usize,
},
#[error("invalid variable name {got:?} (at byte offset {offset}): must match ^[A-Za-z_][A-Za-z0-9_]*$")]
InvalidVariableName {
got: String,
offset: usize,
},
#[error("unclosed `${{...}}` expansion starting at byte offset {offset}")]
UnclosedBraceExpansion {
offset: usize,
},
#[error("unclosed `%...%` expansion starting at byte offset {offset}")]
UnclosedPercentExpansion {
offset: usize,
},
#[error("empty `${{}}` expansion at byte offset {offset}")]
EmptyBraceExpansion {
offset: usize,
},
}