From 6aa9b77b88e912b2c43068ccf76f704d519c425d Mon Sep 17 00:00:00 2001 From: Ed Page Date: Tue, 13 Feb 2024 08:53:04 -0600 Subject: [PATCH] chore: Upgrade to winnow 0.6 --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- src/parser.rs | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4fa88f6..cf74fd0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,9 +113,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "winnow" -version = "0.5.40" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "6b1dbce9e90e5404c5a52ed82b1d13fc8cfbdad85033b6f57546ffd1265f8451" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index d0e3e02..2a5369a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ pre-release-replacements = [ [features] [dependencies] -winnow = "0.5.40" +winnow = "0.6.0" unicase = "2.5" doc-comment = "0.3" serde = { version = "1.0", optional = true, features = ["derive"] } diff --git a/src/parser.rs b/src/parser.rs index 694fc53..8ad2827 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -10,6 +10,7 @@ use winnow::combinator::{cut_err, eof, fail, opt, peek}; use winnow::combinator::{delimited, preceded, terminated}; use winnow::error::{AddContext, ErrMode, ErrorKind, ParserError, StrContext}; use winnow::prelude::*; +use winnow::stream::Stream as _; use winnow::token::{take, take_till, take_while}; type CommitDetails<'a> = ( @@ -168,8 +169,9 @@ fn body<'a, E: ParserError<&'a str> + AddContext<&'a str, StrContext> + std::fmt ) -> PResult<&'a str, E> { trace("body", move |i: &mut &'a str| { if i.is_empty() { + let start = i.checkpoint(); let err = E::from_error_kind(i, ErrorKind::Eof); - let err = err.add_context(i, StrContext::Label(BODY)); + let err = err.add_context(i, &start, StrContext::Label(BODY)); return Err(ErrMode::Backtrack(err)); } @@ -234,8 +236,9 @@ pub(crate) fn value< i: &mut &'a str, ) -> PResult<&'a str, E> { if i.is_empty() { + let start = i.checkpoint(); let err = E::from_error_kind(i, ErrorKind::Eof); - let err = err.add_context(i, StrContext::Label("value")); + let err = err.add_context(i, &start, StrContext::Label("value")); return Err(ErrMode::Cut(err)); }