diff options
Diffstat (limited to 'vendor/logos-codegen/src/error.rs')
| -rw-r--r-- | vendor/logos-codegen/src/error.rs | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/vendor/logos-codegen/src/error.rs b/vendor/logos-codegen/src/error.rs deleted file mode 100644 index 64f93c01..00000000 --- a/vendor/logos-codegen/src/error.rs +++ /dev/null @@ -1,110 +0,0 @@ -use std::fmt; - -use beef::lean::Cow; -use proc_macro2::{Span, TokenStream}; -use quote::quote; -use quote::{quote_spanned, ToTokens, TokenStreamExt}; - -pub type Result<T> = std::result::Result<T, Error>; - -#[derive(Default)] -pub struct Errors { - collected: Vec<SpannedError>, -} - -impl Errors { - pub fn err<M>(&mut self, message: M, span: Span) -> &mut Self - where - M: Into<Cow<'static, str>>, - { - self.collected.push(SpannedError { - message: message.into(), - span, - }); - - self - } - - pub fn render(self) -> Option<TokenStream> { - let errors = self.collected; - - match errors.len() { - 0 => None, - _ => Some(quote! { - fn _logos_derive_compile_errors() { - #(#errors)* - } - }), - } - } -} - -pub struct Error(Cow<'static, str>); - -#[derive(Debug)] -pub struct SpannedError { - message: Cow<'static, str>, - span: Span, -} - -impl Error { - pub fn new<M>(message: M) -> Self - where - M: Into<Cow<'static, str>>, - { - Error(message.into()) - } - - pub fn span(self, span: Span) -> SpannedError { - SpannedError { - message: self.0, - span, - } - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - self.0.fmt(f) - } -} - -impl fmt::Debug for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - fmt::Display::fmt(self, f) - } -} - -impl From<regex_syntax::Error> for Error { - fn from(err: regex_syntax::Error) -> Error { - Error(err.to_string().into()) - } -} - -impl From<&'static str> for Error { - fn from(err: &'static str) -> Error { - Error(err.into()) - } -} - -impl From<String> for Error { - fn from(err: String) -> Error { - Error(err.into()) - } -} - -impl From<Error> for Cow<'static, str> { - fn from(err: Error) -> Self { - err.0 - } -} - -impl ToTokens for SpannedError { - fn to_tokens(&self, tokens: &mut TokenStream) { - let message = &*self.message; - - tokens.append_all(quote_spanned!(self.span => { - compile_error!(#message) - })) - } -} |
