summary refs log blame commit diff stats
path: root/src/errors.rs
blob: b41b225e5c215b8607554b914c823b4fcd3d8ae2 (plain) (tree)
1
2
3
4
5
6
7
8

                                             
 

                                                       

                           
 



                                                                          
                                                             



                           
                                                      
                                 
                                                           
                              
                                                     
                                
                                                          
                             
                                                                   



                          
                                                              
                                     
                                                              
                                     
                                              

                                          
 
















                                                                                  
// Copyright (C) 2021-2022 Soni L.
// SPDX-License-Identifier: MIT OR Apache-2.0

//! <!-- TODO figure out module-level docs for this -->

// #[cfg(doc)]
// use crate::PatternTypes;

/// These are errors that may be returned by the pattern compiler when
/// compiling a pattern.
///
/// "String" here refers to a string literal in the pattern, not the input
/// string. The input string is referred to as "the pattern".
#[derive(Debug)]
pub enum PatternError<'a> {
    // Syntax Errors:

    /// The pattern contains an invalid string escape.
    StringEscape(usize, &'a str),
    /// The pattern ends in the middle of a string literal.
    StringEnd(usize, &'a str),
    /// The pattern contains an invalid regex escape.
    RegexEscape(usize, &'a str),
    /// The pattern ends in the middle of a regex literal.
    RegexEnd(usize, &'a str),
    /// The pattern contains characters that don't make up a token.
    Token(usize, &'a str),

    // Link Errors:

    /// The pattern requests a parameter that wasn't provided.
    UnknownParameter(usize, &'a str),
    /// The pattern requests a predicate that wasn't provided.
    UnknownPredicate(usize, &'a str),
    /// The pattern contains an invalid regex.
    Regex(usize, &'a str, ::regex::Error),
}

// /// These are errors that may be returned by the matcher when matching a
// /// pattern.
// #[derive(Clone, Debug)]
// pub enum MatchError {
//     /// Returned if the pattern nests too deeply.
//     StackOverflow,
//     /// Returned if the pattern rejects the input.
//     ValidationError,
//     /// Returned if the pattern attempts an unsupported operation.
//     ///
//     /// In particular, if the [`PatternTypes`] doesn't support `get` or `pairs`
//     /// for a given value, this error will be returned. It can be treated as a
//     /// ValidationError, or as a bug in the pattern, at the user's discretion.
//     UnsupportedOperation,
//     /// Returned if an unspecified non-critical error occurred.
//     Other
// }