///|
/// Errors that can occur during cucumber expression parsing.
pub suberror ExpressionError {
/// Unmatched opening brace `{`.
UnmatchedBrace(position~ : Int, message~ : String)
/// Unmatched opening parenthesis `(`.
UnmatchedParen(position~ : Int, message~ : String)
/// Cannot escape the given character.
CannotEscape(position~ : Int, character~ : Char, message~ : String)
/// End of line cannot be escaped.
UnexpectedEscapeEnd(position~ : Int, message~ : String)
/// Expression validation error (e.g., nested optionals, empty alternation).
ValidationError(position~ : Int, message~ : String)
/// Unknown parameter type name.
UnknownParameterType(name~ : String, message~ : String)
} derive(Debug)
///|
pub impl Show for ExpressionError with fn output(self, logger) {
match self {
UnmatchedBrace(position~, message~) =>
logger.write_string(
"UnmatchedBrace(position=\{position}, message=\{Repr(message)})",
)
UnmatchedParen(position~, message~) =>
logger.write_string(
"UnmatchedParen(position=\{position}, message=\{Repr(message)})",
)
CannotEscape(position~, character~, message~) =>
logger.write_string(
"CannotEscape(position=\{position}, character=\{Repr(character)}, message=\{Repr(message)})",
)
UnexpectedEscapeEnd(position~, message~) =>
logger.write_string(
"UnexpectedEscapeEnd(position=\{position}, message=\{Repr(message)})",
)
ValidationError(position~, message~) =>
logger.write_string(
"ValidationError(position=\{position}, message=\{Repr(message)})",
)
UnknownParameterType(name~, message~) =>
logger.write_string(
"UnknownParameterType(name=\{Repr(name)}, message=\{Repr(message)})",
)
}
}
///|
pub extend ExpressionError with Show::{to_string, output}
///|
#deprecated
pub extend ExpressionError with @debug.Debug::{to_repr}