16855e09eSopenharmony_ci#![allow(dead_code)]
26855e09eSopenharmony_ci
36855e09eSopenharmony_ciuse nom::bytes::streaming::tag;
46855e09eSopenharmony_ciuse nom::character::streaming::digit1 as digit;
56855e09eSopenharmony_ciuse nom::combinator::verify;
66855e09eSopenharmony_ciuse nom::error::{ErrorKind, ParseError};
76855e09eSopenharmony_ci#[cfg(feature = "alloc")]
86855e09eSopenharmony_ciuse nom::multi::count;
96855e09eSopenharmony_ciuse nom::sequence::terminated;
106855e09eSopenharmony_ciuse nom::IResult;
116855e09eSopenharmony_ci
126855e09eSopenharmony_ci#[derive(Debug)]
136855e09eSopenharmony_cipub struct CustomError(String);
146855e09eSopenharmony_ci
156855e09eSopenharmony_ciimpl<'a> From<(&'a str, ErrorKind)> for CustomError {
166855e09eSopenharmony_ci  fn from(error: (&'a str, ErrorKind)) -> Self {
176855e09eSopenharmony_ci    CustomError(format!("error code was: {:?}", error))
186855e09eSopenharmony_ci  }
196855e09eSopenharmony_ci}
206855e09eSopenharmony_ci
216855e09eSopenharmony_ciimpl<'a> ParseError<&'a str> for CustomError {
226855e09eSopenharmony_ci  fn from_error_kind(_: &'a str, kind: ErrorKind) -> Self {
236855e09eSopenharmony_ci    CustomError(format!("error code was: {:?}", kind))
246855e09eSopenharmony_ci  }
256855e09eSopenharmony_ci
266855e09eSopenharmony_ci  fn append(_: &'a str, kind: ErrorKind, other: CustomError) -> Self {
276855e09eSopenharmony_ci    CustomError(format!("{:?}\nerror code was: {:?}", other, kind))
286855e09eSopenharmony_ci  }
296855e09eSopenharmony_ci}
306855e09eSopenharmony_ci
316855e09eSopenharmony_cifn test1(input: &str) -> IResult<&str, &str, CustomError> {
326855e09eSopenharmony_ci  //fix_error!(input, CustomError, tag!("abcd"))
336855e09eSopenharmony_ci  tag("abcd")(input)
346855e09eSopenharmony_ci}
356855e09eSopenharmony_ci
366855e09eSopenharmony_cifn test2(input: &str) -> IResult<&str, &str, CustomError> {
376855e09eSopenharmony_ci  //terminated!(input, test1, fix_error!(CustomError, digit))
386855e09eSopenharmony_ci  terminated(test1, digit)(input)
396855e09eSopenharmony_ci}
406855e09eSopenharmony_ci
416855e09eSopenharmony_cifn test3(input: &str) -> IResult<&str, &str, CustomError> {
426855e09eSopenharmony_ci  verify(test1, |s: &str| s.starts_with("abcd"))(input)
436855e09eSopenharmony_ci}
446855e09eSopenharmony_ci
456855e09eSopenharmony_ci#[cfg(feature = "alloc")]
466855e09eSopenharmony_cifn test4(input: &str) -> IResult<&str, Vec<&str>, CustomError> {
476855e09eSopenharmony_ci  count(test1, 4)(input)
486855e09eSopenharmony_ci}
49