#[derive(Debug, Clone, PartialEq, Eq, Hash, thiserror::Error)]
pub enum RewriteError {
#[error("Function arity mismatch: expected {expected} arguments, got {got}")]
ArityMismatch { expected: usize, got: usize },
#[error("Function arity out of range: expected {min}-{max} arguments, got {got}")]
ArityOutOfRange { min: usize, max: usize, got: usize },
#[error("Expected string literal at argument {arg_index}, got dynamic expression")]
ExpectedStringLiteral { arg_index: usize },
#[error("Expected entity reference at argument {arg_index}, got different type")]
ExpectedEntityReference { arg_index: usize },
#[error("Type error at argument {arg_index}: expected {expected}, got {got}")]
TypeError {
arg_index: usize,
expected: String,
got: String,
},
#[error("Rewrite not applicable: {reason}")]
NotApplicable { reason: String },
#[error("Transform error: {message}")]
TransformError { message: String },
#[error("Missing required context: {required}")]
MissingContext { required: String },
}