From ba04a1a0fd67a0e00ad36c5c5655b9740ee5e68a Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 30 Jan 2025 15:05:14 -0600 Subject: [PATCH] perf: Remove ErrMode overhead --- crates/typos/src/tokens.rs | 44 ++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/crates/typos/src/tokens.rs b/crates/typos/src/tokens.rs index f1054b7..e715bf9 100644 --- a/crates/typos/src/tokens.rs +++ b/crates/typos/src/tokens.rs @@ -140,12 +140,13 @@ mod parser { use winnow::stream::Stream; use winnow::stream::StreamIsPartial; use winnow::token::{one_of, take_while}; + use winnow::Result; /// Avoid worst-case parse times by limiting how much a `take_while` can take if something /// later may cause it to fail. const NON_TERMINATING_CAP: usize = 1024; - pub(crate) fn next_identifier(input: &mut T) -> ModalResult<::Slice, ()> + pub(crate) fn next_identifier(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -155,7 +156,7 @@ mod parser { preceded(ignore, identifier).parse_next(input) } - fn identifier(input: &mut T) -> ModalResult<::Slice, ()> + fn identifier(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -173,7 +174,7 @@ mod parser { .parse_next(input) } - fn ignore(input: &mut T) -> ModalResult<::Slice, ()> + fn ignore(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -204,7 +205,7 @@ mod parser { .parse_next(input) } - fn sep1(input: &mut T) -> ModalResult<::Slice, ()> + fn sep1(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -217,7 +218,7 @@ mod parser { .parse_next(input) } - fn other(input: &mut T) -> ModalResult<::Slice, ()> + fn other(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -234,7 +235,7 @@ mod parser { .parse_next(input) } - fn ordinal_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn ordinal_literal(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -260,7 +261,7 @@ mod parser { .parse_next(input) } - fn dec_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn dec_literal(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -269,7 +270,7 @@ mod parser { trace("dec_literal", take_while(1.., is_dec_digit_with_sep)).parse_next(input) } - fn hex_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn hex_literal(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -281,7 +282,7 @@ mod parser { .parse_next(input) } - fn css_color(input: &mut T) -> ModalResult<::Slice, ()> + fn css_color(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -302,7 +303,7 @@ mod parser { .parse_next(input) } - fn jwt(input: &mut T) -> ModalResult<::Slice, ()> + fn jwt(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -337,7 +338,7 @@ mod parser { || c == '-' } - fn uuid_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn uuid_literal(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -375,7 +376,7 @@ mod parser { .parse_next(input) } - fn hash_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn hash_literal(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -401,7 +402,7 @@ mod parser { .parse_next(input) } - fn base64_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn base64_literal(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -425,7 +426,8 @@ mod parser { .iter() .all(|c| !['/', '+'].contains(&c.as_char())) { - return Err(winnow::error::ErrMode::from_input(input)); + #[allow(clippy::unit_arg)] + return Err(ParserError::from_input(input)); } take_while(padding_len..=padding_len, is_base64_padding).parse_next(input)?; @@ -437,7 +439,7 @@ mod parser { .parse_next(input) } - fn email_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn email_literal(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -456,7 +458,7 @@ mod parser { .parse_next(input) } - fn url_literal(input: &mut T) -> ModalResult<::Slice, ()> + fn url_literal(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -489,7 +491,7 @@ mod parser { .parse_next(input) } - fn url_userinfo(input: &mut T) -> ModalResult<::Slice, ()> + fn url_userinfo(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -507,7 +509,7 @@ mod parser { .parse_next(input) } - fn c_escape(input: &mut T) -> ModalResult<::Slice, ()> + fn c_escape(input: &mut T) -> Result<::Slice, ()> where T: Stream + StreamIsPartial + PartialEq, ::Slice: AsBStr + SliceLen + Default, @@ -528,7 +530,7 @@ mod parser { .parse_next(input) } - fn printf(input: &mut T) -> ModalResult<::Slice, ()> + fn printf(input: &mut T) -> Result<::Slice, ()> where T: Compare, T: Stream + StreamIsPartial + PartialEq, @@ -538,10 +540,10 @@ mod parser { trace("printf", ('%', take_while(1.., is_xid_continue)).take()).parse_next(input) } - fn take_many0(mut f: F) -> impl ModalParser::Slice, E> + fn take_many0(mut f: F) -> impl Parser::Slice, E> where I: Stream, - F: ModalParser::Slice, E>, + F: Parser::Slice, E>, E: ParserError, { move |i: &mut I| repeat(0.., f.by_ref()).map(|()| ()).take().parse_next(i)