From c7de9389b0f0ef6602f0886691f9e0f3c5e9bc1d Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 11 Apr 2023 10:54:45 -0400 Subject: [PATCH] fix bug in CCParse --- src/core/CCParse.ml | 2 +- tests/core/t_parse.ml | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/core/CCParse.ml b/src/core/CCParse.ml index e1d76178..557f3e80 100644 --- a/src/core/CCParse.ml +++ b/src/core/CCParse.ml @@ -605,7 +605,7 @@ let take_until_success p : (slice * _) t = let continue = ref true in let res = ref None in - while !continue && !i < st.j do + while !continue && !i <= st.j do let st' = { st with i = !i } in p.run st' ~ok:(fun new_st x -> diff --git a/tests/core/t_parse.ml b/tests/core/t_parse.ml index 02716c60..eb3f3dee 100644 --- a/tests/core/t_parse.ml +++ b/tests/core/t_parse.ml @@ -188,6 +188,15 @@ eq "hello world") ;; +eq + ~printer:(errpp Q.Print.(string)) + (Ok "ahahahah") + (parse_string + (let+ slice, () = take_until_success eoi in + Slice.to_string slice) + "ahahahah") +;; + t @@ fun () -> let p0 = skip_white *> U.int in let p = skip_white *> char '(' *> many p0 <* (skip_white <* char ')') in