///|
/// A lexer/parser error with 1-based line and column position.
pub(all) suberror WitError {
  At(Int, Int, String)
}

///|
pub fn WitError::make(line : Int, col : Int, message : String) -> WitError {
  At(line, col, message)
}

///|
/// Formats as `line:col: message`.
pub fn WitError::to_string(self : WitError) -> String {
  match self {
    At(line, col, message) => "\{line}:\{col}: \{message}"
  }
}