@@ -1755,7 +1755,7 @@ impl<'a> Parser<'a> {
17551755 // succeeds (e.g. `case-case-...c`).
17561756 let start_index = self.index;
17571757 if let Some(&cached) = self.failed_prefix_positions.get(&start_index) {
1758- return Err( self.cached_prefix_error(cached, self.peek_token_ref() ));
1758+ return self.cached_prefix_error(cached, self.peek_token_ref());
17591759 }
17601760 let result = self.parse_prefix_inner();
17611761 if let Err(ref e) = result {
@@ -1765,10 +1765,14 @@ impl<'a> Parser<'a> {
17651765 }
17661766
17671767 /// Rebuild the error for a cached prefix failure at the `found` token.
1768- fn cached_prefix_error(&self, cached: ExprPrefixError, found: &TokenWithSpan) -> ParserError {
1768+ fn cached_prefix_error<T>(
1769+ &self,
1770+ cached: ExprPrefixError,
1771+ found: &TokenWithSpan,
1772+ ) -> Result<T, ParserError> {
17691773 match cached {
1770- ExprPrefixError::RecursionLimitExceeded => ParserError::RecursionLimitExceeded,
1771- ExprPrefixError::Err => self.expected_ref::<()>( "an expression", found).unwrap_err( ),
1774+ ExprPrefixError::RecursionLimitExceeded => Err( ParserError::RecursionLimitExceeded) ,
1775+ ExprPrefixError::Err => self.expected_ref( "an expression", found),
17721776 }
17731777 }
17741778
@@ -1867,7 +1871,7 @@ impl<'a> Parser<'a> {
18671871 .failed_reserved_word_prefix_positions
18681872 .get(&next_token_index)
18691873 {
1870- Err( self.cached_prefix_error(cached, self.get_current_token() ))
1874+ self.cached_prefix_error(cached, self.get_current_token())
18711875 } else {
18721876 self.try_parse(|parser| parser.parse_expr_prefix_by_reserved_word(&w, span))
18731877 };
0 commit comments